Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the ultimate-addons-for-gutenberg domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /sites/danielkossmann.com/files/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the hustle domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /sites/danielkossmann.com/files/wp-includes/functions.php on line 6114
Exportando os aniversários do Facebook para o Google Calendar - Daniel Kossmann

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.



Comments

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *