برنامج البث الإذاعي Radio Player

برنامج البث الإذاعي Radio Player


1. الهيكل العام والمكونات الرئيسية

يتكون الالبرنامج من عدة أجزاء رئيسية تعمل معاً لبناء واجهة المستخدم وتشغيل محطات الراديو:

أ. قائمة المحطات الإذاعية (STATIONS)

قاموس (Dictionary) يحتوي على أسماء المحطات الإذاعية كـ Keys، وروابط البث المباشر (Stream URLs) الخاصة بها كـ Values.
تتنوع المحطات المضافة في القاموس بين:

  • إذاعات القرآن الكريم وتلاوات لشيوخ مختلفين (من موقع mp3quran).
  • قنوات إخبارية وموسيقية عربية وعالمية (مثل SomaFM, VOA, نجوم إف إم, وشام إف إم).

ب. النافذة الرئيسية (RadioFrame)

تُعد النافذة الرئيسية للتطبيق المشتقة وتتولى المهام التالية:

  • **بناء واجهة المستخدم :
  • عنوان النافذة: نص ترحيبي عريض.
  • قائمة خيارات (ListBox): لعرض أسماء جميع الإذاعات المتاحة في القاموس STATIONS لتسهيل اختيار المحطة.
  • أزرار التحكم (Buttons): زر التشغيل والإيقاف المؤقت (Play/Pause) وزر الإيقاف التام (Stop).
  • مؤشر الصوت (Slider): شريط سحب للتحكم في مستوى الصوت من 0 إلى 100%.
  • مشغل الوسائط media.MediaCtrl`): عنصر خلفي غير مرئي يقوم بالاتصال برابط المحطة وتشغيل الصوت في الخلفية متوافقاً مع مشغل النظام (مثل WMP على Windows).
  • ربط الأحداث (_bind_events):
    ربط نقرات الأزرار، التقر المزدوج على المحطة، وسحب شريط الصوت بالوظائف المخصصة لها في اللبرنامج.

ج. منطق التشغيل والتحكم (Event Handlers)

  1. التشغيل والإيقاف المؤقت (on_play_pause):
  • عند تحديد محطة وضغط زر “تشغيل”، يتم جلب رابطها وتشغيله بواسطة self.media_ctrl.Load(url) و Play().
  • في حال كانت المحطة تعمل بالفعل، يتم تغيير حالة الزر إلى “إيقاف مؤقت” والتحكم بالصوت.
  1. فحص حالة التشغيل (_poll_playback_state & on_media_play):
  • يتعامل اللبرنامج بحذر مع بثوث الإنترنت؛ حيث يفحص حالة الاتصال بالرابط ويتأكد من صدور الصوت وتحديث شريط الحالة (Status Bar) بدون إزعاج المستخدم بنوافذ خطأ ملحة إذا تأخر البث.
  1. تعديل الصوت والإيقاف (on_volume_change & on_stop):
  • يقوم بتعديل درجة الصوت لحظياً عند تحريك الشريط الساحب، أو إيقاف البث كلياً وإعادة ضبط الأزرار عند الضغط على “إيقاف”.
  1. الإغلاق السليم (on_close):
  • يضمن إيقاف تشغيل الصوت فور إغلاق التطبيق لتجنب تعليق العمليات في الخلفية.

د. نقطة الانطلاق (RadioApp & __main__)

تُمثّل نقطة تشغيل التطبيق؛ حيث يتم إنشاء كائن التطبيق RadioApp وعرض النافذة RadioFrame ثم إطلاق الحلقة الرئيسية MainLoop() لانتظار تفاعلات المستخدم. والآن مع التحميل https://www.dropbox.com/scl/fi/43ydmknbwfd14gyghltw1/radio_player-1.exe?rlkey=sr3jmq3j7gko6n22ud86cge2z&dl=1

بقلم


أضف تعليق