softwaretalks / newsletter

خبرنامه‌ای برایِ مهندسانِ نرم‌افزار
https://newsletter.softwaretalks.ir
MIT License
32 stars 4 forks source link

Add RSS/Atom Feed Support #480

Open erfanara opened 2 years ago

ohmydevops commented 2 years ago

سلام ممنون از این ایده خوب. من دقیقا بلد نیستم اضافه کردن RSS چه کارهایی نیاز داره و چه قدر ممکنه زمان بر بشه. اگر شما تجربه دارید خوشحال میشم PR بدید و به پروژه اضافه اش کنید. من هم توی لیست کارهام یادداشت کردم که در اولین فرصت آزاد دراین باره مطالعه کنم و اضافه کنمش (اگر شما فرصت نداشتید)

erfanara commented 2 years ago

سلام خیلی ممنون، البته من تجربه ای ندارم راجب rss ولی فک می کنم خیلی سخت نیست پیاده سازیش. باید با دیدن یکی دوتا نمونه راحت بشه پیاده سازی کردش. خیلی خوشحال میشم اگه بتونم کمک کنم و تلاشمو میکنم تا یک دونه pr بفرستم اگه تونستم 😅. فکر می کنم که در همین حد که مثلا (خبرنامه شماره فلان منتشر شد) توی feed قرار بگیره برای شروع خوب باشه.

erfanara commented 2 years ago

فقط من طبق بررسی هایی که کردم نفهمیدم که فایل index.html رو چه کسی آپدیت میکنه؟ و اینکه مثلا jekyll داره چیکار میکنه رو دقیق متوجه نشدم، اگه static site generator ای که index.html رو درست می کنه ، مثلا برای ما فایل atom.xml هم درست کنه دیگه خیلی راحت میشه کار، نیاز نیست خیلی وارد طرز ساخت atom.xml بشیم.

ohmydevops commented 2 years ago

ما در حال حاضر فایل index.html رو دستی اپدیت میکنیم. یک پوشه آرشیو داریم که توش آرشیو هر شماره قرار میگیره. شاید نیازه که یک اسکریپت داشته باشیم و مثلا هفتگی فایل‌های RSS رو بر اساس محتوای HTML ای و پترن شماره‌های هر فایل بسازه. من فردا در اولین فرصتی که تایم ازاد داشته باشم روند کار رو اینجا به صورت کامل مینویسم که چطوری خبرنامه کار میکنه تا دید بهتری پیدا بکنید

ohmydevops commented 2 years ago

اون پوشه آرشیو که گفتم به صورت خودکار ساخته میشه.

یک کار دیگه هم که میشه کرد کلا ساخت RSS مستقل از داده‌های فعلی باشه و اصطلاحا مبتنی بر فایل‌ها نباشه و مستقیم از API گیتهاب برای ایشو‌ها استفاده بکنه و لیست کل محتواها رو بگیره و فایل RSS رو بسازه (یا آپدیت بکنه)

ohmydevops commented 2 years ago

سلام.

برای ساخت هر شماره خبرنامه:

ohmydevops commented 2 years ago

پیشنهاد من اینه کلن خود خبرنامه‌ها رو بزاریم توی RSS، مثلا خبرنامه جدید که میاد شخص متوجه میشه و روش میتونه کلیک کنه. حالا اید‌ه‌ای ندارم مییشه خود محتوای خبرنامه‌رو هم اینطوری اورد توی RSS یا نه

یعنی کاربر وقتی مشترک RSS میشه، بتونه ببینه که خبرنامه‌ جدید اومده و روش کلیک کنه و بره داخلش (خوب بود که محتوای خبرنامه‌ همونجا در دسترش بود)

erfanara commented 2 years ago

از اونجایی که اسکریپت php یک دونه فایل html درست می کنه ، فکر می کنم که بدون هیچ مشکلی بتونیم محتویات همون فایل رو بذاریم توی content هر item فید، من پیشنهاد می کنم که از یک کتابخونه ساده استفاده کنیم ، مثلا این فکر می کنم خیلی کتابخونه ساده و تمیزی باشه: https://github.com/mibe/FeedWriter/

مثلا برای اینکه فایل atom.xml بسازیم : https://github.com/mibe/FeedWriter/blob/master/examples/example_atom.php

ohmydevops commented 2 years ago

چه عالیه. بسیار خوب.

الان بیشتر بحث این هست که چه محتوایی و به چه صورت قرار بدیم داخلش. یک راه اینه که کلا شماره خبرنامه‌ مهم نباشه و همه پست‌هارو توش قرار بدیم و اپدیت کنیم دائم.

erfanara commented 2 years ago

آها صحیح ، روش شما به نظرم بهتره چون‌که اگر بخوایم محتوا‌های قبلی رو هم بگذاریم یکم سر اسم و زمانشون ممکنه اذیت بشیم. من یکمی سعی کردم بیشتر دست به کد بشم و تست کنم ببینم چطور میشه مثلا اگه از همون پوشه archive یکی یکی هر فایل html رو بخونیم و اضافه کنیم به فید. image

اینجا همونطور که گفتم یکی دو تا مشکل هست ، یکی اسمشونه که راحت میشه درستش کرد ، ولی یک مشکل دیگه هم هست که در مورد زمان هر کدوم از این آیتم هاست. که اگه زمانشون درست بشه ترتیب نمایش هر آیتم هم درست میشه.

اما برای اینکه روش شما رو پیاده سازی کنیم، اسکریپت باید هر بار که ران میشه فایلِ فید رو آپدیت کنه و دقیق تر بخوام بگم مثلا یک دونه entry به فایلِ فید اضافه کنه ،ولی این کتابخونه ای که معرفی کردم فکر کنم برای آپدیت کردن فید قابلیتی نداشته باشه و از این نظر باید یک کاریش بکنیم.

erfanara commented 2 years ago

با روش خودم به یک نتیجه هایی رسیدم، به زودی یک مرج ارسال می کنم

ohmydevops commented 2 years ago

سلام ممنونم از شما. زمان و ترتیب رو از کجا میخونه؟

erfanara commented 2 years ago

از داخل خود فایل های html اومدم و تایم رو خوندم، که به نوعی میام و اون تاریخ جلالی‌ای که هستش رو با رجکس پیدا می‌کنم، بعد با کتابخونه Jalalian تبدیلش می کنم به تاریخ میلادی تا بشه استفاده کردش...

<h3 style="font-size: 18px; text-align: center; font-family: 'Samim', sans-serif; direction: rtl; color: #263238;">
      شمارهٔ ٦٦ - پنجشنبه، ۲۴ شهریور ۱۴۰۱
    </h3>

حالا چون فقط یک دونه تگ h3 هست که فقط برای نوشتن تاریخ استفاده شده توی تمپلیت راحت میشه با رجکس پیداش کرد 😂 ولی خب اگه تمپلیت قرار باشه بعدا تغییری بکنه اونوقت مشکل میخوره قضیه و باید رجکس عوض بشه یا یک روش دیگه استفاده کرد...