
تطبيق تذكير عيد الميلاد
يتحقق البرنامج ما إذا كان لدى الشخص عيد ميلاد في غضون أسبوع ويرسل اختياريًا تذكيرات إلى بقية المجموعة. يتضمن الوظائف اللازمة للتحقق من صحة المدخلات وإرسال رسائل البريد الإلكتروني. يحتوي هذا المستودع على وحدتين حيث يتضمن BdayReminder.py هذه الوظائف بينما يختبر Tests.py الحزمة. يرجى الرجوع إلى متطلبات استيراد المكتبات والحزم والوحدات الإضافية قبل النظر في استخدام التطبيق أو الوظائف والاختبارات ووظيفة CRON وغيرها من الحقول.
Python 3.9.12 مطلوب لتنفيذ وحدات الحزمة بشكل صحيح والمكتبات المستوردة والوظائف المحددة. واردات من العديد من المكتبات مثل Dotnet ، Pytest على سبيل المثال لا الحاجة أيضا. تم العثور على بعض الإصدارات المطلوبة هنا بينما تأتي تلك التي لم يتم ذكرها مع إصدار Python المستخدمة. أيضا فحص متغيرات البيئة والمصادقة قبل المضي قدمًا. للاستخدام الصحيح للبرنامج ، قد تحتاج إلى تشغيل Python3 بدلاً من Python المقترح كما هو موضح في الاستخدام. 1
1 Python أو Python3 يعتمد على الطريقة التي قمت بتثبيت Python على جهازك.
لتتمكن من إرسال رسائل البريد الإلكتروني ، ستحتاج إلى إعداد متغيرات البيئة. للقيام بذلك محليًا ، يرجى إنشاء ملف .env وإضافة متغيرين env له بقيم صالحة ، مثل هذا: 1
USR=<youremail>
PSW=<yourpassword> or <token>
1 إذا كنت سترسل من Gmail ثم لإعداد كلمة مرور متغيرة البيئة المناسبة ، فستحتاج إلى إنشاء رمز رمزي. مزيد من المعلومات حول هذا بموجب قسم المصادقة.
لتكون قادرًا على إرسال البريد الإلكتروني بعد إعداد البريد الإلكتروني Gmail على متغير البيئة ، ستحتاج إلى إنشاء رمز رمزي. يمكن العثور على تفاصيل حول كيفية القيام بذلك هنا.
بعد استيفاء المتطلبات ، يتم تعيين حزمة التطبيق على الدليل الخاص بك ويتم تشغيل المحطة ، لديك أربعة خيارات 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> يجب أن تبدو مثل هذه - مجموعات البيانات/data_20.csv ، ولكن في الدليل الخاص بك. المسار الكامل بالنسبة لي سيكون/Uaurimasnausedas/documents/python/birthdayReminderapp/Datasets/Data_20.csv
2 الوحدة الرئيسية تأخذ وسيطتين عند الركض من وحدة التحكم.
3 كانت البيانات المستخدمة للأمثلة data_20.csv في 23 يونيو 2022.
نظرة عامة على الوظائف الموجودة داخل الوحدة النمطية - bdayreminder.py :
يمكن العثور على تفسيرات متعمقة للوظائف داخل الوحدة النمطية - BdayReminder.py.
هناك ثلاث مجموعات بيانات ممكنة لاستخدامها. هذه هي Data_20 من 20 مستلم ، Data_50 من 50 مستلم و Data_80 من 80 مستلم.
نظرة عامة على الوظائف الموجودة داخل الوحدة النمطية - الاختبارات.
من خلال الانتقال إلى مجلد البرنامج/التطبيق حيث يتم استخلاصه - عيد ميلاد - مجلد واحد قبل أن يتم إجراء اختبار.
>>> 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
هناك ما هو أكثر من ذلك سيكون الأكثر شيوعا.
لبناء وظيفة cron في Mac Terminal Run:
>>> 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> - يجب أن يكون الدليل حيث يكون مجلد عيد ميلاد/مستخدمين/Aurimasnausedas/Documents/Python/BirthdyReminderapp
2 <directory_to_python> يجب أن يكون حيث قمت بتثبيت python على جهازك مثل/المستخدمين/aurimasnausedas/opt/miniconda3/envs/symmetric/bin/python
3 <data_file_path> يجب أن تكون مجموعة البيانات في دليل التطبيق مثل in/user/aurimasnausedas/documents/python/birthdayReminderapp من خلال إعداده على مجموعات البيانات/data_20.csv
يمكن التحقق من تخصيص بناء الجملة لوظيفة CRON هنا.
يحتوي المجلد العام على ثلاثة ملفات:
يمكن العثور على شعار تطبيق تذكير عيد الميلاد هنا.
ترخيص معهد ماساتشوستس للتكنولوجيا