هل ترغب في الحصول على ملخص لآخر الأخبار من خلاصة RSS أو Atom؟ هل تريد رؤيتها بتنسيق Markdown، أو في مستند Microsoft Word، أو على جهاز الحبر الإلكتروني؟ ها هي الأداة المناسبة لك.
يتم نشر هذا التطبيق كوظيفة AWS Lambda. تقوم الوظيفة بتنزيل أحدث الإدخالات من موجز RSS أو Atom، وتنزيل المحتوى المرتبط، واستخراج النص، وعمل ملخص. تتم كتابة الإخراج بتنسيق JSON في مجموعة S3. يسمح كائن S3 بالقراءة العامة بحيث يمكن تنزيله بسهولة على جهاز خارجي.
راجع الإرشادات الموجودة في النهاية لمعرفة كيفية تشغيل وظيفة Lambda واختبارها محليًا.
فيما يلي مثال على بنية ملف JSON:
{
"title" : " Recent Announcements " ,
"entries" : [
{
"title" : " Amazon SageMaker Model Registry announces support for private model repositories " ,
"link" : " https://... " ,
"summary" : " Amazon SageMaker Model Registry now supports... "
},
{
"title" : " Announcing memory optimized Amazon EC2 R7a bare metal instances " ,
"link" : " https://... " ,
"summary" : " Amazon announces general availability... "
},
...
]
}
افتراضيًا، تتم جدولة وظيفة Lambda للتشغيل في وقت مبكر من اليوم، من الاثنين إلى الجمعة، لتحديث الأخبار.
يمكن تحرير عنوان URL لخلاصة RSS، وجدول cron لتشغيل الوظيفة، والتعليمات الخاصة التي يمكن إضافتها إلى موجه التلخيص في ملف قالب AWS SAM ( template.yaml
).
أولاً، قم بتحرير ملف قالب SAM ( template.yaml
):
RSS_LINK
الافتراضي إلى أحدث إعلانات AWS.RSS_LINK
واحد فقط في نفس الوقت في القالب.ScheduleExpression
بين قوسين.SPECIAL_INSTRUCTIONS
التي تمت إضافتها إلى الموجه الذي تم تمريره إلى النموذج. يمكنك استخدام هذه التعليمات الخاصة لتخصيص الملخص ليناسب احتياجاتك. بعد ذلك، في دليل sam-get-news
، قم ببناء التطبيق ونشره باستخدام هذا الأمر:
sam build && sam deploy
قم بتأكيد النشر عندما يُطلب منك ذلك.
احصل على عنوان URL للأخبار من إخراج أمر sam deploy
.
يمكنك تنزيل مستندات JSON باستخدام curl
أو wget
على عنوان URL للأخبار. على سبيل المثال:
curl https://BUCKET-NAME.s3.REGION.amazonaws.com/news.json
في دليل Markdown
، قم بتحديث NEWS_URL
في ملف markdown_news.py
إلى إخراج أمر sam deploy
.
ثم قم بتشغيل البرنامج النصي run.sh
لإنشاء الأخبار بتنسيقات متعددة.
يستخدم البرنامج النصي run.sh
Pandoc لتحويل مخرجات Markdown للبرنامج النصي markdown_news.py
إلى HTML وMicrosoft Word وPDF. اتبع الإرشادات الموجودة على موقع Pandoc لتثبيت الأداة.
يتم التعليق على مخرجات PDF افتراضيًا في run.sh
لأنها تتطلب تثبيت أدوات PDF إضافية.
معظم كود MicroPython الموجود في مجلد RaspberryPiPico
خاص بنموذج عرض الحبر الإلكتروني. يمكن العثور على مزيد من المعلومات حول شاشة الحبر الإلكتروني هنا.
لنشر البرنامج النصي على وحدة التحكم الدقيقة، قم بتنزيل Thonny Python IDE مفتوح المصدر للمبتدئين لنظام التشغيل الخاص بك.
للسماح لوحدة التحكم الدقيقة بتنزيل ملف JSON من حاوية S3، يتعين عليك جعل هذا الملف عامًا. للقيام بذلك، تحتاج إلى تحديث الملف `template.yaml``.
أولاً، أضف الخصائص التالية إلى مورد `NewsBucket`` (قد لا يسمح حساب AWS الخاص بك بهذا التكوين):
Properties :
PublicAccessBlockConfiguration :
BlockPublicPolicy : false
RestrictPublicBuckets : false
ثم قم بإضافة سياسة الموارد التالية (يجب أن يكون اسم الملف ومساره هو نفسه الموجود في متغير البيئة OUTPUT_FILE
):
NewsBucketPolicy :
Type : AWS::S3::BucketPolicy
Properties :
Bucket : !Ref NewsBucket
PolicyDocument :
Statement :
- Effect : Allow
Principal : ' * '
Action : s3:GetObject
Resource : !Sub 'arn:aws:s3:::${NewsBucket}/news.json'
قم بتوصيل Raspberry Pi Pico عبر USB بالكمبيوتر المحمول. ثم استخدم محرر Thonny لنسخ وتشغيل البرنامج النصي display_news.py
MycroPython على الجهاز. في البرنامج النصي، قم بتحديث عنوان URL لملف news.json
والاسم وكلمة المرور لشبكة WiFi التي سيتصل بها Raspberry Pi Pico W لتنزيل الملف.
هذا هو التدفق المعماري العام لهذه الأداة:
يمكن تشغيل التعليمات البرمجية الخاصة بوظيفة Lambda من سطر الأوامر لتبسيط الاختبار المحلي. لتشغيل وظيفة Lambda محليًا، تحتاج إلى إنشاء بيئة افتراضية ( venv
) وتثبيت بعض التبعيات.
في الدليل الرئيسي للمشروع، قم بإنشاء بيئة افتراضية:
python3 -m venv .venv
ثم قم بتفعيل البيئة الافتراضية:
source .venv/bin/activate
في دليل Lambda/sam-get-news/get-news
، قم بتثبيت جميع التبعيات:
pip install -r requirements.txt
حدد متغير البيئة الذي تستخدمه دالة Lambda:
export RSS_LINK=https://aws.amazon.com/about-aws/whats-new/recent/feed/
export OUTPUT_BUCKET= < YOUR_BUCKET >
export OUTPUT_FILE=news.txt
يمكنك الآن تشغيل الدالة محليًا:
python app.py
عندما تنتهي الوظيفة، يمكنك رؤية الإخراج في حاوية S3 باستخدام AWS CLI:
aws s3 cp s3:// ${OUTPUT_BUCKET} / ${OUTPUT_FILE} - | more