
Aplicação de lembrete de aniversário
O programa verifica se uma pessoa tem um aniversário em uma semana e, opcionalmente, envia lembretes para o restante do grupo. Envolve as funcionalidades necessárias para validar a entrada e o envio de emails. Este repositório contém 2 módulos em que o BDayReminder.py envolve essas funcionalidades enquanto testes. Consulte os requisitos para importar bibliotecas, pacotes e módulos adicionais antes de observar o uso do aplicativo ou funções, testes, trabalho de cron e outros campos.
O Python 3.9.12 é necessário para executar adequadamente os módulos do pacote, bibliotecas importadas e funções definidas. Também são necessárias importações de várias bibliotecas, como Dotnet, pytest, para citar alguns. Algumas versões necessárias são encontradas aqui, enquanto aquelas que não são mencionadas vêm com a versão Python usada. Inspecione também as variáveis de ambiente e a autenticação antes de prosseguir. Para uso adequado do programa, você pode precisar executar o Python3 em vez de proposto Python , como mostrado no uso. 1
1 Python ou Python3 depende da maneira como você instalou o Python em sua máquina.
Para poder enviar e -mails, você precisará configurar variáveis de ambiente. Para fazer isso localmente, crie um arquivo .env e adicione duas variáveis Env a ele com valores válidos, como este: 1
USR=<youremail>
PSW=<yourpassword> or <token>
1 Se você enviará do Gmail, para configurar a senha de variável de ambiente adequada, precisará criar um token. Mais informações sobre isso em seção de autenticação.
Para poder enviar o email depois de definir o email do Gmail na variável do ambiente, você precisará criar um token. Detalhes sobre como fazer isso podem ser encontrados aqui.
Depois que os requisitos forem atendidos, o pacote de aplicativos é definido no seu diretório e o terminal é executado, você tem quatro opções 1,2,3 :
>>> python bdayreminder.py <data_file_path>
Choose 1 to validate if input data file is correct or 2 to check for upcoming birthdays and send respective emails
>>> 1
ERROR: Invalid email for Laura Dreyfuss at row 6
ERROR: Empty name field is for email [email protected] at row 7
ERROR: Invalid date for Anna Higgins at row 11. Date given is 02-30
ERROR: Date is in the future for Tom Brady at row 12. Date given is 2075-10-22
ERROR: Invalid email for Ching Yeung Michael Tam at row 19
'''
'''
>>> python bdayreminder.py <data_file_path>
Choose 1 to validate if input data file is correct or 2 to check for upcoming birthdays and send respective emails
>>> 2
Kai Yuen Leung will have birthday in a week.
Patrick Kienzle will have birthday in a week.
Emails sent successfully.
>>> python bdayreminder.py <data_file_path> 3
Choose 1 to validate if input data file is correct or 2 to check for upcoming birthdays and send respective emails
>>> 3
Please choose either 1 or 2
>>> 1
ERROR: Invalid email for Laura Dreyfuss at row 6
ERROR: Empty name field is for email [email protected] at row 7
ERROR: Invalid date for Anna Higgins at row 11. Date given is 02-30
ERROR: Date is in the future for Tom Brady at row 12. Date given is 2075-10-22
ERROR: Invalid email for Ching Yeung Michael Tam at row 19
>>> python bdayreminder.py <data_file_path> 1
ERROR: Invalid email for Laura Dreyfuss at row 6
ERROR: Empty name field is for email [email protected] at row 7
ERROR: Invalid date for Anna Higgins at row 11. Date given is 02-30
ERROR: Date is in the future for Tom Brady at row 12. Date given is 2075-10-22
ERROR: Invalid email for Ching Yeung Michael Tam at row 19
>>> python bdayreminder.py <data_file_path> 2
Kai Yuen Leung will have birthday in a week.
Patrick Kienzle will have birthday in a week.
Emails sent successfully.
1 <DATA_FILE_PATH> deve se parecer com isso - DataSets/Data_20.csv, mas no seu diretório. O caminho completo para mim seria /users/aurimasnausedas/documents/python/birthdayremindepp/datasets/data_20.csv
2 Módulo principal leva dois argumentos quando executados do console.
3 Os dados usados para exemplos foram dados_20.csv em 23 de junho de 2022.
Uma visão geral das funções encontradas dentro de um módulo - bdayReminder.py :
Explicações de profundidade das funções podem ser encontradas dentro de um módulo - BDayReminder.py.
Existem três conjuntos de dados possíveis a serem usados. Estes são Data_20 de 20 destinatários, Data_50 de 50 destinatários e Data_80 de 80 destinatários.
Uma visão geral das funções encontradas dentro de um módulo - tests.py:
Navegando para a pasta Programa/App, onde é extraído - AniversárioReminderApp - uma pasta antes de onde tests.py é mantida e pode -se executar esses comandos de teste:
>>> pyflakes .
>>> pyflakes Tests/tests.py
>>> python -m pytest Tests/tests.py
Poderia surgir alguns erros como:
>>> python bdayreminder.py Datasets/data_20.json 1
Traceback (most recent call last):
File "/Users/aurimasnausedas/Documents/Python/BirthdayReminderApp/bdayreminder.py", line 237, in <module>
run(arg_path, cron_input)
File "/Users/aurimasnausedas/Documents/Python/BirthdayReminderApp/bdayreminder.py", line 215, in run
raise Exception('ERROR: Wrong data format file')
Exception: ERROR: Wrong data format file
>>> python bdayreminder.py Datasets/data_13.csv 1
Traceback (most recent call last):
File "/Users/aurimasnausedas/Documents/Python/BirthdayReminderApp/bdayreminder.py", line 237, in <module>
run(arg_path, cron_input)
File "/Users/aurimasnausedas/Documents/Python/BirthdayReminderApp/bdayreminder.py", line 199, in run
raise Exception('ERROR: File doesn't exist')
Exception: ERROR: File doesn't exist
>>> python bdayreminder.py Datasets/data_20.csv versada
Argument passed not an integer
Há mais ainda que isso seria o mais comum.
Para construir o trabalho de Cron no terminal Mac Run:
>>> crontab -e
A sintaxe para Cronjob ao entrar no terminal pode ser assim: 1,2,3
>>> 0 6 * * * cd <directory_to_app> && <directory_to_python> bdayreminder.py <data_file_path> 2
[Optional] >>> 0 6 * * * cd <directory_to_app> && <directory_to_python> bdayreminder.py <data_file_path> 2 >> Public/birthdays.txt
1 <Directory_to_App> - deve ser o diretório em que a pasta AnilyReminderApp é como/usuários/aurimasnasusedas/documents/python/annilereminderApp
2 <diretório_to_python> deve estar onde você instalou o python em sua máquina como/users/aurimasnausedas/opt/miniconda3/envs/simmétrico/bin/python
3 <DATA_FILE_PATH> deve ser o conjunto de dados no diretório de aplicativos como in/usuários/aurimasnausedas/documents/python/annilereminderApp, configurando -o para dados de dados/data_20.csv
A personalização da sintaxe para o trabalho de cron pode ser verificada aqui.
Pasta pública contém três arquivos:
O logotipo do aplicativo de lembrete de aniversário pode ser encontrado aqui.
A licença do MIT