Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add RSS/Atom Feed Support #480

Open
erfanara opened this issue Aug 17, 2022 · 13 comments
Open

Add RSS/Atom Feed Support #480

erfanara opened this issue Aug 17, 2022 · 13 comments

Comments

@erfanara
Copy link

No description provided.

@ohmydevops
Copy link
Collaborator

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

@erfanara
Copy link
Author

erfanara commented Sep 1, 2022

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

@erfanara
Copy link
Author

erfanara commented Sep 1, 2022

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

@ohmydevops
Copy link
Collaborator

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

@ohmydevops
Copy link
Collaborator

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

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

@ohmydevops
Copy link
Collaborator

سلام.

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

  • ابتدا کاربران ایشوها رو ایجاد میکنند و Label ها به صورت خودکار به ایشو زده میشود.
  • سپس در روز ارسال خبرنامه، با اجرا کردن Workflow مربوطه توسط GithubAction، ابتدا ایمیل تستی سپس ایمیل اصلی رو ارسال میکنیم.
  • فرآیند ایجاد همین ایمیل هم به این صورته که اسکریپتی با PHP ابتدا لیست ایشوهای باز رو دریافت میکنه، اون‌ها رو در تمپلیت HTML ای قرار میده، به API سرویس ایمیل متصل میشه و یک ایمیل گروهی با اون محتوا ارسال میکنه.
  • بعد از ارسال ایمیل، اسکریپت به صورت خودکار اون فایل html رو در پوشه archives آپلود میکنه.

@ohmydevops
Copy link
Collaborator

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

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

@erfanara
Copy link
Author

erfanara commented Sep 5, 2022

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

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

@ohmydevops
Copy link
Collaborator

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

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

@erfanara
Copy link
Author

erfanara commented Sep 6, 2022

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

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

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

@erfanara
Copy link
Author

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

@ohmydevops
Copy link
Collaborator

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

@erfanara
Copy link
Author

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

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants