
誕生日リマインダーアプリケーション
このプログラムは、人が1週間で誕生日を迎えるかどうかを確認し、オプションでグループの残りの部分にリマインダーを送信します。入力を検証してメールを送信するために必要な機能が含まれます。このリポジトリには、bdayreminder.pyがこれらの機能を含む2つのモジュールが含まれています。アプリまたは機能、テスト、Cronジョブ、その他のフィールドの使用を検討する前に、ライブラリ、パッケージ、追加モジュールをインポートするための要件を参照してください。
Python 3.9.12は、パッケージのモジュール、インポートされたライブラリ、および定義された機能を適切に実行するために必要です。 Dotnet、Pytestなどのいくつかのライブラリのインポートも必要です。必要なバージョンはここにありますが、言及されていないバージョンには使用済みのPythonバージョンが付属しています。また、さらに進める前に、環境変数と認証を検査します。プログラムを適切に使用するには、使用法に示されているように、 Pythonを提案するのではなく、 Python3を実行する必要がある場合があります。 1
1 PythonまたはPython3は、マシンにPythonをインストールする方法に依存します。
メールを送信できるようにするには、環境変数を設定する必要があります。これをローカルに行うには、 .envファイルを作成し、有効な値で2つのENV変数を追加してください。
USR=<youremail>
PSW=<yourpassword> or <token>
1 Gmailから送信する場合は、適切な環境変数パスワードを設定するには、トークンを作成する必要があります。これについては、認証セクションの詳細について。
環境変数にGmailメールを設定した後にメールを送信できるようにするには、トークンを作成する必要があります。それを行う方法の詳細はこちらをご覧ください。
要件が満たされた後、アプリパッケージがディレクトリに設定され、端末が実行されます1,2,3 :4つのオプションがあります。
>>> 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>は、このように見えるはずです-DataSets/data_20.csvですが、ディレクトリにあります。私にとってのフルパスは/users/aurimasnauedas/documents/python/birthdayreminderapp/datasets/data_20.csvです
2メインモジュールは、コンソールから実行すると2つの引数を取ります。
3例で使用されたデータは、2022年6月23日のdata_20.csvでした。
モジュール内で見つかった関数の概要-bdayreminder.py :
機能の詳細な説明は、モジュールの内部であるbdayreminder.pyです。
使用する3つのデータセットがあります。これらは、20人の受信者のデータ_20、50人の受信者のデータ_50、80人のレシピエントのdata_80です。
モジュール内で見つかった関数の概要-Tests.py:
抽出されているプログラム/アプリフォルダーに移動することにより-BARTHINDREMINDERAPP-テストの1つのフォルダーが保持され、これらのテストコマンドを実行できます。
>>> pyflakes .
>>> pyflakes Tests/tests.py
>>> python -m pytest Tests/tests.py
次のようないくつかのエラーが発生する可能性があります。
>>> 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
これらが最も一般的なものがまだあります。
Macターミナルの実行でCronジョブを構築するには:
>>> crontab -e
ターミナルに入るときのcronjobの構文は次のようになる可能性があります: 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> -BathingReminderAppフォルダーが/users/aurimasnauseass/documents/python/bathindreminderappのようなディレクトリである必要があります
2 <Directory_to_python>は、マシンにPythonをインストールした場所にある必要があります。
3 <data_file_path>は、in/users/aurimasnauseas/documents/python/bashindreminderappのようなアプリのディレクトリのデータセットである必要があります。データセット/data_20.csvに設定します
Cronジョブの構文のカスタマイズは、こちらで確認できます。
パブリックフォルダーには3つのファイルが含まれています。
誕生日リマインダーアプリケーションのロゴはこちらにあります。
MITライセンス