برنامج البث الإذاعي 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)
- التشغيل والإيقاف المؤقت (
on_play_pause):
- عند تحديد محطة وضغط زر “تشغيل”، يتم جلب رابطها وتشغيله بواسطة
self.media_ctrl.Load(url)وPlay(). - في حال كانت المحطة تعمل بالفعل، يتم تغيير حالة الزر إلى “إيقاف مؤقت” والتحكم بالصوت.
- فحص حالة التشغيل (
_poll_playback_state&on_media_play):
- يتعامل اللبرنامج بحذر مع بثوث الإنترنت؛ حيث يفحص حالة الاتصال بالرابط ويتأكد من صدور الصوت وتحديث شريط الحالة (Status Bar) بدون إزعاج المستخدم بنوافذ خطأ ملحة إذا تأخر البث.
- تعديل الصوت والإيقاف (
on_volume_change&on_stop):
- يقوم بتعديل درجة الصوت لحظياً عند تحريك الشريط الساحب، أو إيقاف البث كلياً وإعادة ضبط الأزرار عند الضغط على “إيقاف”.
- الإغلاق السليم (
on_close):
- يضمن إيقاف تشغيل الصوت فور إغلاق التطبيق لتجنب تعليق العمليات في الخلفية.
د. نقطة الانطلاق (RadioApp & __main__)
تُمثّل نقطة تشغيل التطبيق؛ حيث يتم إنشاء كائن التطبيق RadioApp وعرض النافذة RadioFrame ثم إطلاق الحلقة الرئيسية MainLoop() لانتظار تفاعلات المستخدم. والآن مع التحميل https://www.dropbox.com/scl/fi/43ydmknbwfd14gyghltw1/radio_player-1.exe?rlkey=sr3jmq3j7gko6n22ud86cge2z&dl=1
أضف تعليق