Eu nem sei há quanto tempo eu uso o Skoob, mas faz mais de 14 anos, porque quando Eduardo foi me avisar que a gente estava namorando ele disse "vou atualizar o cara-livro" se referindo ao Facebook e eu primeiro pensei no Skoob (imagine minha surpresa ao abrir o Facebook e ter um pedido de namoro lá. hihihih lembro como se fosse ontem, eu estava na casa dos meus pais, no escritório. Minha mãe e minha irmã estavam comigo e eu comecei a comemorar "Estou namorando! Estou namorando!").

Mas nessa onda de serviços online sendo doidos e honestamente, o Skoob sempre pareceu frágil, como se fosse cair a qualquer momento. Fiquei com medo e resolvi apenas fazer um backup inocente.

O tutorial abaixo não é tão simples. Só tô documentando como eu fiz. Se você quiser fazer isso, pode me chamar pra conversar ou eu faço um orçamento pra fazer pra você.

Extraindo os dados

Por sorte o Skoob usa uma API interna (eu jurava que era hard-coded, PHP, sei lá). Fui na página da biblioteca em livros lidos, inspecionei elemento e descobri o endpoint para retornar todos os livros.

Para que você não precise ficar procurando, o endpoint é

https://www.skoob.com.br/v1/bookcase/books/[seu id]/shelf_id:1/page:1/limit:36/

Troca ali [seu id] pelo número que tem no seu perfil do Skoob. Por exemplo no meu endereço:

https://www.skoob.com.br/estante/livros/1/123/page:1

Meu id seria 123.

Eu abri isso no navegador e ele me deu um json. Note que no cabeçalho ele traz

"paging": {
        "total": 169,
        "page_count": 5,
        "page": 1,
        "next_page": true,
        "prev_page": false,
        "limit": 36,
        "first_item": 1,
        "last_item": 36
    },

Tá vendo que tem o page_count? Como no meu caso eram 5, eu abri o endpoint as 5 vezes, mudando o page:1 para page:2 até 5. Precisava? Acho que não. Mas eu fiquei com medo de mudar o limit e não retornar tudo. Eram só 5 sabe.

Enfim, copiei e colei as 5 respostas no Visual Studio Code, depois apaguei essa parte do cabeçalho, fazendo um grande "response": [...] com todos os livros.

Tratando os dados

Depois fui pro ChatGPT e pedi pra ele fazer um script em python pra mim para transformar esse json em um CSV. Acho que tem ferramentas que fazem isso online mas eu queria um pouco de flexibilidade para escolher as colunas que eu queria.

Com o script, fui no Google Colab e criei o script. Subi meu json e ele criou o CSV pra mim, com as colunas que pedi. A única alteração que eu fiz foi ter adicionado o endereço do Skoob na frente da URL, que no json não tinha.

Com o CSV, criei um Google Sheets com os dados. Como não gostei do formato de data, ainda pedi um script pro ChatGPT para mudar o formato pra mim.

FAQ: Sim, eu sou muito preguiçosa. Sim, meus prompts são sempre muito preguiçosos. Não, eu não me arrependo de nada. Sim, eu tenho pena dos 500 litros de água que gastei pra fazer isso.

Pronto, tenho meu backup. E agora?

Mostrando os livros no softr.io

Eu sou muito cadelinha do softr.io. Pra mim é uma das melhores ferramentas de prototipação que tem, porque usa o Google Sheets como base de dados, e eu sei usar o Google Sheets, e isso me deixa feliz. Além do plano gratuito servir muito bem.

O Airtable tem uma funcionalidade semelhante e nativa (o softr nasceu dando suporte para o Airtable), mas eu ainda me sinto mais confortável com Sheets e Softr. O Lovable também resolve, usando o Supabase, mas achei... não complicado, mas meio que um tiro de canhão pra matar formiga, sabe? Eu gosto do tanto certo de flexibilidade e automação aqui.

Eu acho bem intuitivo: você cria um novo projeto e conecta sua planilha. Cada coluna é um campo, que tem vários tipos de exibição. Por exemplo, o Rating para a nota que eu dei no livro, no Google Sheets é um número, mas eu posso escolher exibir como número, texto ou estrelinhas. Ele já tem isso.

O projeto ficou bem legal.

Além de fazer a listagem, eu também adicionei os campos de Destaques do livro e Resenha. Fiz uma página para adicionar livros, que aí eu posso usar direto a interface, não preciso atualizar a planilha se não quiser. E ele tem tudo isso de editar e adicionar já pré-feito.

Ele também já tem a área de login, então só eu posso fazer essas edições e as outras pessoas só ver o conteúdo. Fica tudo centralizado.

Mais ideias

Eu não ia, mas agora estou pensando em colocar o status da leitura, tipo: lido, abandonado, lendo, lista. Assim eu posso já pré-cadastrar o que pretendo ler. É só adicionar mais uma coluna.

Infelizmente um bug estava me impedindo de editar itens caso eu mexesse no banco de dados. Eu preciso remover o módulo e adicionar novamente, mesmo pra campos que já existem. Aí deu preguiça.

Eu só não fiz o blog direto lá porque achei meio paia, mas agora eu já tô considerando. Funcionaria bem. Tem até um módulo nativo pra comentários. Posso conectar no supabase e postar a vontade.

Com certeza eu vou fazer algo semelhante para as minhas impressões 3D, com galeria de fotos, facilidade de impressão e links para modelos. Queria bastante compartilhar mais do processo, e focar menos na venda.

E foi uma delícia fazer, fazia tempo que eu não nerdeava assim e foi gostoso. Fiquei bem feliz com o resultado. Já tem algumas frases em destaque e algumas resenhas lá, mas vou adicionando o restante aos poucos.