مقدمة قصيرة: أريد أن أتحدث عن مشغل YouTube عبر الإنترنت لنظام Android من خلال قوائم التشغيل والقنوات والتوصيات المحلية.

مقدمة مفصلة
منذ بعض الوقت ، واجهت نفس المشكلة تمامًا مثل مؤلف تطبيق القائمة البيضاء الرائعة للقناة ، وحددت نفس الموقف تمامًا تجاهه: أريد أن أكون قادرًا على إعطاء طفلي جهاز كمبيوتر لوحي أو هاتف ذكي به رسوم كاريكاتورية من وقت لآخر ، لكنني لست سعيدًا تمامًا ، حيث يحصل الطفل في 2-3 نقرات على قائمة بالتوصيات في التطبيقات القياسية - عملاء YouTube.
لسوء الحظ ، بعد تثبيت تطبيق Channel Whitelist ، اكتشف بالفعل عيبًا آخر أكثر تشويشًا ولكنه لا يزال قاتلًا - لم يعثر NIH (والأهم من ذلك ابنه) على واجهته مريحة للغاية ، خاصة بعد عادة استخدام مشغل YouTube Kids.
بشكل عام ، بعد بعض الوقت نضجت لجعل تنفيذ بلدي. بعد مرور بعض الوقت ، أصبح من الممكن وضع العلامة على الإصدار الأول.
الميزات الرئيسية:
- أضف القنوات وقوائم التشغيل المفضلة لديك - سيتم حفظها وفهرستها في قاعدة البيانات المحلية
- قم بإيقاف تشغيل مقاطع الفيديو الإضافية داخل قوائم التشغيل المضافة إذا كنت لا تحتاج إليها
- يتم إنشاء قائمة التوصيات بشكل عشوائي فقط من القنوات وقوائم التشغيل المضافة إلى التطبيق.
المصادر مفتوحة ، ترخيص GPLv3: https://github.com/sadr0b0t/yashlang/
مزيد من نظرة عامة على الميزات الرئيسية بمزيد من التفاصيل ، بالإضافة إلى بعض التفاصيل الفنية حول كيفية تشغيل مقاطع فيديو YouTube في تطبيق Android الخاص بك دون استخدام واجهات برمجة تطبيقات Google ومغلفات الويب.
على الشاشة الرئيسية وعلى شاشة المشغل: توصيات عشوائية من القنوات غير العشوائية






البحث الفوري في قاعدة البيانات المحلية
=> 
أضف قناة جديدة أو قائمة تشغيل


البحث عن طريق الاسم عبر الإنترنت أو إدراج عنوان معروف. يتم حفظ قائمة مقاطع القناة أو قائمة التشغيل في قاعدة البيانات المحلية ، ولا يتم تخزين الرموز مؤقتًا.
قائمة التشغيل الديناميكية - تشغيل نتائج البحث
=> 


في التوصيات أدناه ، سيكون هناك مقاطع فيديو ترضي طلب البحث فقط.
وبالمثل ، إذا فتحت مقطع فيديو من إعدادات قائمة التشغيل ، فلن يتم إدراج سوى مقاطع من قائمة التشغيل نفسها في قائمة التوصيات.
يمكن إيقاف تشغيل قوائم التشغيل والقنوات مؤقتًا وإعادة تشغيلها

يرجى ملاحظة: ستختفي مقاطع الفيديو من قائمة التشغيل التي تم إيقاف تشغيلها أيضًا من نتائج البحث وسجل التصفح وقائمتك المفضلة. ولكن لا تقلق ، فستظهر هناك مرة أخرى فور إعادة تشغيل قائمة التشغيل.
جعل الفيلم في القائمة السوداء

لن يظهر مقطع محظور في التوصيات وفي نتائج البحث ، ويختفي من قائمتك المفضلة ومن سجل التصفح. سيظل الفيديو مرئيًا في إعدادات قائمة التشغيل.
عرض القائمة السوداء وإعادة تمكين العناصر المحظورة عن طريق الخطأ:
الإعدادات> قائمة العناوين> القائمة السوداء

مقاطع الفيديو المفضلة ومشاهدة السجل

يتم تمييز مقاطع الفيديو المفضلة على شاشة اللاعب بنجمة في الزاوية اليمنى العليا.
قوائم السياق في عنوان الشاشة وانقر نقرة طويلة في المعارض والقوائم

انسخ اسم أو عنوان الفيديو أو قائمة التشغيل في شاشة العرض أو في أي قائمة.
البدء السريع - إضافة القنوات وقوائم التشغيل الموصى بها
=> 
سيبدو التطبيق على الفور مثل لقطات الشاشة أعلاه.
يمكن إيقاف تشغيل القنوات أو قوائم التشغيل غير الضرورية أو حذفها من الإعدادات.
تركيب
صفحة المشروع: https://github.com/sadr0b0t/yashlang/
باللغة الإنجليزية: https://github.com/sadr0b0t/yashlang/blob/master/README.en.md
الإصدارات: https://github.com/sadr0b0t/yashlang/releases
ضع في اعتبارك أن التبديل بين الإصدارات المختلفة من مصادر مختلفة على نفس الجهاز لن يعمل بسبب التواقيع المختلفة لملف apk ، قبل تثبيت الإصدار من مصدر جديد ، سيكون عليك حذف الإصدار المثبت أولاً مع ذاكرة التخزين المؤقت لقائمة التشغيل وسجل التصفح (أو معرفة كيفية القيام بذلك) نقل البيانات).
التفاصيل الفنية
لا يتطلب حساب جوجل / يوتيوب ، فقط الإنترنت مطلوب ، يستخدم المكتبات:
المصدر المفتوح ، رخصة GPLv3 مجانية.
سؤال: هل من القانوني تحليل المواقع دون إذن (أو مع حظر صريح) من المؤلفين؟ جوجل يزيل التطبيقات من جوجل التي لا تستخدم واجهات برمجة التطبيقات الخاصة بهم ، ولكن تحليل مواقعهم ، لأنه أنها تنتهك اتفاقية المستخدم الخاصة بهم.
الإجابة: بطبيعة الحال ، من الناحية القانونية ، الأمر متروك لك الأداة التي يجب استخدامها لقراءة المعلومات المتاحة للجمهور. علاوة على ذلك: شرعت المحكمة الأمريكية بشكل كامل في تجريد المواقع الإلكترونية وتمنعها من إعاقة فنية ، لكن غول قد يكون له رأي مختلف ، وأنا شخصياً لا أرغب في الذهاب إلى المحكمة الأمريكية لإقناعهم.
بعض الكود
تعد مكتبة NewPipeExtractor مشروعًا مساعدًا لمشغل NewPipe الذي يسمح لك بتنزيل قائمة مقاطع خاصة بقناة أو قائمة تشغيل محددة ، وتنزيل معلومات مفصلة حول مقطع فيديو معروف (ما هو مرئي على صفحة الويب الخاصة بالفيديو) ، وتلقي عنوان رمز الفيديو ، وكذلك تلقي عنوان دفق الفيديو.
يعد رمز تنزيل قائمة التشغيل مرهقًا إلى حد ما ، لذلك لن أعطيها هنا ، أي شخص مهتم - انظر إلى المصدر ، وهذه هي فئة ContentLoader أساسًا.
دعونا نرى كيفية الحصول على عنوان دفق الفيديو على عنوان الصفحة العامة للفيديو وتشغيله في المشغل.
ربط المكتبة بـ
التطبيق / build.gradle
dependencies { ... // NewPipe: youtube parser // https://github.com/TeamNewPipe/NewPipeExtractor implementation "com.github.TeamNewPipe:NewPipeExtractor:v0.17.4" ... }
ومن الغريب أنه بعد ذلك لا يزال لا يمكن استخدامها ، لأنه سوف أقسم الأمثلة في فئة Downloader المفقودة. يمكن نسخها إلى المشروع من كتالوج الاختبارات التلقائية NewPipeExtractor / extractor / src / test / java / org / schabi / newpipe / Downloader.java - يعمل مع الإصدار 0.17.4 (يبدو أنه في الإصدار الأحدث من المكتبة ، تمت إعادة تهيئة هذا الجزء ، لا تزال بحاجة للتحقق).
احصل على عنوان دفق الفيديو على عنوان صفحة الفيديو على موقع YouTube:
التطبيق / src / الرئيسي / java / su / sadrobot / yashlang / controller / ContentLoader.java
public String extractYtStreamUrl(final String ytVidUrl) throws ExtractionException, IOException {
يمكن أن يكون عنوان الفيديو الخاص بـ ytVidUrl هو العنوان العام لصفحة أي مقطع فيديو على موقع YouTube ، على سبيل المثال https://www.youtube.com/watch؟v=pd2RlatmNRk
سيكون اللاعب ExoPlayer من Google نفسه. هذه ليست غلاف ويب عبر YouTube ، ولكنها مشغل مضمّن حقيقي لتشغيل أي مقاطع فيديو مرنة جدًا وقابلة للتخصيص. بما في ذلك القدرة على تشغيل مقاطع الفيديو من YouTube ، إذا حددت العنوان الصحيح. لقد حصلنا للتو على عنوان البث ، لذلك سنرى كيفية إرساله إلى اللاعب.
قم بتوصيل المكتبة بمشروع التطبيق / build.gradle :
dependencies { ... // google Exoplayer // https://github.com/google/ExoPlayer // https://exoplayer.dev/ implementation 'com.google.android.exoplayer:exoplayer:2.10.8' ... }
لن ندرس جميع الفروق الدقيقة في وضع مكون المشغل على شاشة التطبيق (يمكنك الاطلاع على الأمثلة على موقع المشروع أو في الكود) ، سننظر فقط في كيفية بدء تشغيل الفيديو من YouTube في المشغل على العنوان أعلاه:
التطبيق / src / الرئيسي / java / su / sadrobot / yashlang / WatchVideoActivity.java
private void playVideoStream(final String streamUrl, final long seekTo) { if (streamUrl == null) {
المشكلات المعروفة
- لن يتم تشغيل مقاطع الفيديو ذات القيود العمرية التي تتطلب تسجيل الدخول إلى حسابك على Google / YouTube
على سبيل المثال: إيليا موروميتس ، مسلسل فيلم موسفيلم ، روسلان وليودميلا سلسلة أفلام 1 / فيلم رسلان وليودميلا 1 ، فيلم موزفيلم قلق
نصيحة: أضف مقاطع الفيديو هذه إلى القائمة السوداء أو اطلب من مؤلف الفيديو إزالة التقييد الذي تم تعيينه عن طريق الخطأ.
- لن يتم تشغيل بعض مقاطع الفيديو الإذاعية التي ترجع الخدمة طولها إلى الصفر (بالنسبة لمقاطع الفيديو هذه ، يتم تمييز المدة في القوائم والمعرض كـ "[dur undef]")
على سبيل المثال: انتظر لحظة! جميع الإصدارات Soyuzmultfilm HD (كاريكاتير للأطفال) ، كاريكاتير Soyuzmultfilm Studios ، توب كاريكاتير Soyuzmultfilm ، كاريكاتير ستوديوز Soyuzmultfilm
نصيحة: أضف مقاطع الفيديو هذه إلى القائمة السوداء.
- قد لا تدخل مقاطع الفيديو التي لا يمكن الوصول إليها إلا من خلال الروابط المباشرة في قائمة التشغيل المحلية ، حتى إذا قمت بتنزيل جميع مقاطع فيديو المستخدم
على سبيل المثال: Taming of Fire 1 series، Mosfilm Film Concern
إذا رأيت مقطع فيديو عامًا لا يتطلب تسجيل دخول ، ويتم تشغيله في المستعرض ، ولكن لا يتم تشغيله في المشغل ، فأرسل تقريرًا عن الأخطاء (من الممكن تمامًا أن المشكلة قد تم حلها بالفعل في الإصدار الجديد من NewPipeExtractor وأنك تحتاج فقط إلى تحديث التجميع بهذا الإصدار ، على سبيل المثال ).
يمكن أن تبطئ الواجهة عندما يكون الإنترنت بطيئًا (ولكن لا يتم إيقاف تشغيله)
في النهاية
انتقل الابن من الكمبيوتر اللوحي إلى تلفزيون Samsung الذكي ، الذي لا يعرف كيفية تشغيل تطبيقات Android. لذلك ، فإن أفضل الرقابة الأبوية لا تزال شخصية.
لكن تبين أن التطبيق ملائم بدرجة كافية لي لبدء استخدامه بنفسي. الانطباع الأول من إصدارات العمل في وقت مبكر - حصلت في عالم آخر. يتم تنزيل جميع المحتويات من YouTube ، ولكنها لم تعد على YouTube ، ولكنها شيء آخر آمن ومحكم ، كما لو كانت قد أخرجت سكولوبندرا من العين ووضعتها في وعاء زجاجي. وفي التوصيات.