Há um bom tempo uso o Facebook somente como uma ferramenta para lembrar das datas de aniversário dos meus amigos. Para deixar de depender da plataforma para isso, decidi que iria exportar a lista dos aniversariantes e a adicioná-la ao meu Google Calendar.
Infelizmente no meio de 2019 o Facebook removeu a funcionalidade de exportação dos aniversariantes, tornando essa tarefa um pouco mais chata. Para a minha sorte, no artigo desta notícia o autor citou uma solução criada pelo programador Mohammad Ghasembeigi para exportar esta lista. O processo envolve a execução de um código criado em Python, que infelizmente, não foi tão simples de executar e tinha um bug relacionado ao nosso idioma. Decidi então compartilhar como consegui contornar essas problemas.
Importante: Para executar este programa é necessário que você tenha um pouco de familiaridade com o terminal e o guia abaixo deve ajudar a facilitar o processo. Estou utilizando o Ubuntu Linux 19.04.
Instalando o fb2cal
Um dos requisitos é ter o Python 3.6+, mas por padrão o meu sistema estava utilizando a versão 2, mesmo tendo a 3 instalada. Por conta disso, troquei momentaneamente a versão utilizada no terminal com:
$ alias python=python3
Depois tive que instalar o PIP do Python 3:
$ sudo apt install python3-pip
Assim pude instalar os requisitos do projetos com:
$ pip3 install -r requirements.txt
Depois fiz a configuração da minha conta do Facebook, renomeando o arquivo config/config-template.ini
para config/config.ini
e adicionando nele o meu usuário e senha da rede social. Não fiz mais nenhuma alteração, pois queria que o script gerasse um arquivo ICS para que depois eu pudesse importar manualmente para o Google Calendar.
Se você quiser, é possível enviar esse arquivo automaticamente para o Google Drive, mas iso exige a ativação da API e algumas configurações adicionais.
Agora que tudo foi configurado, é só rodar o script com:
$ python3 src/fb2cal.py
Infelizmente o script não funcionou de primeira para mim, pois haviam alguns erros relacionados ao modo como estavam sendo tratados os dias da semana, mas consegui corrigi-los e enviei o bugfix para o autor. Talvez no momento em que você esteja lendo este texto, elas já tenham sido implementadas. Caso não, documentei a solução mais abaixo.
Importando o calendário no Google Calendar
Antes de fazer a nova importação, recomendo criar uma nova agenda para separar estes eventos. Para fazer isso, clique no ícone +
ao lado de Outras agendas
e vá em Criar nova agenda
. Criei uma com o nome muito criativo de Aniversários do Facebook. Depois repeti o mesmo processo, mas cliquei em Importar
para selecionar o arquivo ICS criado pelo script (gerado em src/birthdays.ics
) e em Adicionar à agenda
escolhi a que tinha acabado de criar. Pronto!
Para quem quiser fazer uma limpeza na lista de aniversariantes, recomendo primeiro importá-la para depois fazer essa limpa. Como está tudo em uma agenda separada, fica bem fácil de manipular os eventos.
Problemas encontrados
SyntaxError: invalid syntax
Este erro aconteceu pois o Ubuntu estava utilizando versão 2 do Python. Foi só mudar para a versão 3 (que expliquei no começo do post) e o problema foi resolvido.
Erro de timeout
Às vezes precisei executar o script mais de uma vez até funcionar.
Em outro caso, enquanto estava tentando resolver os erros, tive que voltar ao valor padrão de logging (level = INFO
) para resolver este problema.
fb2cal ERROR (parse_birthday_day_month) Failed to parse birthday day/month
Para ajeitar este problema alterei o código do arquivo src/fb2cal.py
e adicionei o código abaixo logo depois da linha 624 (day_name = BeautifulSoup(birthday_date_str, 'lxml').get_text().lower()
):
# Deal with Brazilian Portuguese inconsistent day names
if locale == 'pt_BR':
if day_name != 'domingo' and day_name != 'sábado' and day_name.find('feira') == -1:
day_name = day_name + '-feira'
Code language: PHP (php)
O problema era que alguns dias da semana retornados pelo Facebook não estavam com o sufixo ‘-feira’, exigidos pelo dicionário do idioma que foi carregado. Então criei um código que verifica se é preciso adicionar ou não esse complemento no nome do dia da semana.
Deixe um comentário