Koshcheyning o'limi tavsiyalar ro'yxatida (YouTube-ni qulay va xavfsiz qilish mumkinmi?)
Kirish qisqa: Android uchun mahalliy pleylistlar, kanallar va tavsiyalar bilan YouTube onlayn pleyeri haqida gapirmoqchiman.
Kengaytirilgan kirish:
Bir muncha vaqt oldin men ajoyib dastur muallifi bilan bir xil muammoga duch keldim Kanal oq ro'yxati, va o'zim uchun xuddi shunday munosabatni aniqladim: men vaqti-vaqti bilan farzandimga multfilmli planshet yoki smartfon sovg'a qilishni xohlayman, lekin 2-3 marta bosgandan keyin ro'yxat qayerda paydo bo'lishidan umuman mamnun emasman. standart ilovalarda tavsiyalar - YouTube mijozlari - bolani oladi.
Afsuski, Channel Whitelist ilovasini o'rnatgandan so'ng, yana bir prozaik, ammo baribir halokatli kamchilik topildi - NIH I (va, eng muhimi, o'g'lim) o'z interfeysini unchalik qulay emas deb topdi, ayniqsa YouTube Kids pleyeridan foydalanish odatidan keyin.
Umuman olganda, bir muncha vaqt o'tgach, men o'zimni amalga oshirishga tayyor edim. Biroz vaqt o'tgach, birinchi nashrga teg qo'yish mumkin bo'ldi.
Asosiy xususiyatlari:
Sevimli kanallaringiz va pleylistlaringizni qo'shing - ular saqlanadi va mahalliy ma'lumotlar bazasida indekslanadi
Qo'shilgan pleylistlar ichida, agar kerak bo'lmasa, keraksiz videolarni o'chirib qo'ying
Tavsiyalar ro'yxati faqat dasturga qo'shilgan kanallar va pleylistlardan tasodifiy tarzda yaratiladi
Quyida asosiy funksiyalarning batafsil ko‘rib chiqilishi, shuningdek, YouTube videolarini Android ilovangizda Google API va veb o‘ramlaridan foydalanmasdan qanday ijro etish bo‘yicha ba’zi texnik tafsilotlar keltirilgan.
Asosiy ekranda va pleer ekranida: tasodifiy bo'lmagan kanallardan tasodifiy tavsiyalar
Mahalliy ma'lumotlar bazasida tezkor qidiruv
=>
Yangi kanal yoki pleylist qo'shing
Internetda ism bo'yicha qidiring yoki ma'lum manzilni kiriting. Kanal yoki pleylistning videolari roʻyxati mahalliy maʼlumotlar bazasiga saqlanadi, piktogrammalar keshda saqlanmaydi.
Dinamik pleylist - qidiruv natijalarini o'ynatish
=>
Video tavsiyalarida faqat qidiruv so'rovini qondiradigan videolar bo'ladi.
Xuddi shunday, agar siz pleylist sozlamalaridan videoni ochsangiz, tavsiyalar ro'yxatida faqat bir xil pleylistdagi videolar paydo bo'ladi.
Pleylistlar va kanallarni vaqtincha oʻchirib qoʻyish va qayta yoqish mumkin
E'tibor bering: o'chirilgan pleylistdagi videolar ham qidiruv natijalari, ko'rish tarixi va sevimlilar ro'yxatidan yo'qoladi. Lekin tashvishlanmang, ular pleylist qayta yoqilgandan so'ng darhol yana paydo bo'ladi.
Qora ro'yxatga video qo'shing
Bloklangan video tavsiyalarda, qidiruv natijalarida ko‘rsatilmaydi va sevimlilar ro‘yxatidan va ko‘rish tarixidan yo‘qoladi. Video hali ham pleylist sozlamalarida ko'rinadi.
Qora ro'yxatni ko'ring va xato bilan bloklangan narsalarni qayta yoqing: Sozlamalar > Sarlavha menyusi > Qora ro‘yxat
Sevimli videolar va ko'rish tarixi
Pleyer ekranidagi sevimli videolar yuqori o'ng burchakda yulduzcha bilan belgilangan.
Ekran sarlavhasidagi kontekst menyulari va galereyalar va ro'yxatlarda uzoq vaqt davomida bosing
Ko‘rish ekranida yoki istalgan ro‘yxatda video yoki pleylist nomi yoki manzilini nusxalash.
Tez boshlash - tavsiya etilgan kanallar va pleylistlarni qo'shing
=>
Ilova darhol yuqoridagi skrinshotlar kabi ko'rinadi.
Keraksiz kanallar va pleylistlar sozlamalarda o'chirilishi yoki o'chirilishi mumkin.
U Google Play-da emas va yaqin kelajakda ham bo'lmaydi (Google API-ni chetlab o'tadigan va veb-saytlarini tahlil qiladigan ilovalarni, shu jumladan yuqorida aytib o'tilgan Kanal oq ro'yxatini yoki NewPipe pleyerini taqiqlaydi)
Shuni yodda tutingki, bitta qurilmada turli manbalardan olingan turli versiyalar o'rtasida almashish apk faylining turli imzolari tufayli ishlamaydi; versiyani yangi manbadan o'rnatishdan oldin, avval o'rnatilgan versiyani ma'lumotlar bilan birga o'chirishingiz kerak bo'ladi - pleylist keshi va ko'rish tarixi (yoki ma'lumotlarni qanday uzatishni aniqlang).
Texnik ma'lumotlar
Google/YouTube hisobini talab qilmaydi, faqat Internet kerak, quyidagi kutubxonalardan foydalanadi:
Savol: Mualliflarning ruxsatisiz (yoki aniq taqiqlangan holda) veb-saytlarni qirib tashlash umuman qonuniymi? Google ilovalarni Google Play'dan olib tashlaydi, qaysi o'z API foydalanish emas, balki ularning saytlarini tahlil, chunki ular foydalanuvchi shartnomasini buzadilar. javob: albatta, bu qonuniy, hammaga ochiq ma'lumotlarni o'qish uchun qaysi vositadan foydalanish sizga bog'liq. Bundan tashqari: AQSh sudi veb-saytlarni qirib tashlashni to'liq qonuniylashtirdi va unga texnik aralashuvni taqiqladi., lekin Gulning fikri boshqacha bo'lishi mumkin, shaxsan menda ularni ishontirish uchun Amerika sudiga borish istagi yo'q.
Ba'zi kod
kutubxona NewPipeExtractor - o'yinchilarni qo'llab-quvvatlash loyihasi Yangi quvur, ma'lum bir kanal yoki pleylist uchun videolar ro'yxatini yuklab olish, mashhur video haqida batafsil ma'lumotni yuklab olish (videoning veb-sahifasida ko'rinadigan), video belgisi manzilini olish, shuningdek, video manzilini olish imkonini beradi. oqim.
Pleylistni yuklash uchun kod biroz og'ir, shuning uchun men uni bu erda bermayman, qiziquvchilar uchun manba kodini ko'rib chiqing, bu asosan sinf ContentLoader.
Keling, ommaviy video sahifasi manzilidan video oqimining manzilini qanday olishni va uni pleerda o'ynashni ko'rib chiqaylik.
Qizig'i shundaki, bundan keyin ham siz undan foydalana olmaysiz, chunki... misollar yo'qolgan Downloader sinfi haqida shikoyat qiladi. Uni loyihaga avtomatlashtirilgan testlar katalogidan nusxalash mumkin NewPipeExtractor/extractor/src/test/java/org/schabi/newpipe/Downloader.java - 0.17.4 versiyasi uchun ishlaydi (bu qism kutubxonaning yangi versiyasida qayta ishlanganga o'xshaydi, lekin biz hali ham tekshirishimiz kerak).
YouTube veb-saytidagi video sahifasi manzili bo'yicha video oqimining manzilini oling:
O'yinchi bo'ladi ekzoplayer Googlening o'zidan. Bu YouTube uchun veb-o'rash emas, balki har qanday videoni o'ynash uchun juda moslashuvchan va moslashtirilgan haqiqiy o'rnatilgan pleer. Agar siz to'g'ri manzilni ko'rsatsangiz, u YouTube'dan video oqimlarni ham ijro etishi mumkin. Biz hozirgina oqim manzilini oldik, shuning uchun uni pleyerga qanday yuborishni ko'rib chiqamiz.
Biz pleer komponentini dastur ekraniga joylashtirishning barcha nuanslarini ko'rib chiqmaymiz (siz loyiha veb-saytidagi yoki koddagi misollarni ko'rishingiz mumkin), biz faqat pleerda YouTube-dan videoni qanday o'ynashni boshlashni ko'rib chiqamiz. Yuqorida olingan manzil:
private void playVideoStream(final String streamUrl, final long seekTo) {
if (streamUrl == null) {
// остановить проигрывание текущего ролика, если был загружен
videoPlayerView.getPlayer().stop(true);
} else {
// https://exoplayer.dev/
// https://github.com/google/ExoPlayer
final Uri mp4VideoUri = Uri.parse(streamUrl);
final MediaSource videoSource = new ProgressiveMediaSource.Factory(videoDataSourceFactory)
.createMediaSource(mp4VideoUri);
// Поставим на паузу старое видео, пока готовим новое
if (videoPlayerView.getPlayer().getPlaybackState() != Player.STATE_ENDED) {
// Если ставить на паузу здесь после того, как плеер встал на паузу сам, закончив
// играть видео, получим здесь второе событие STATE_ENDED, поэтому нам нужна здесь
// специальная проверка.
// При этом значение getPlayWhenReady() останется true, поэтому проверяем именно состояние.
// https://github.com/google/ExoPlayer/issues/2272
videoPlayerView.getPlayer().setPlayWhenReady(false);
}
// Prepare the player with the source.
((SimpleExoPlayer) videoPlayerView.getPlayer()).prepare(videoSource);
// Укажем текущую позицию сразу при загрузке видео
// (в коментах что-то пишут что-то про датасорсы, которые поддерживают или не поддерживают
// переходы seek при загрузке, похоже, что это фигня - просто делаем seek сразу после загрузки)
// Exoplayer plays new Playlist from the beginning instead of provided position
// https://github.com/google/ExoPlayer/issues/4375
// How to load stream in the desired position? #2197
// https://github.com/google/ExoPlayer/issues/2197
// в этом месте нормлаьный duration еще не доступен, поэтому его не проверяем
//if(seekTo > 0 && seekTo < videoPlayerView.getPlayer().getDuration()) {
if (seekTo > 0) {
// на 5 секунд раньше
videoPlayerView.getPlayer().seekTo(seekTo - 5000 > 0 ? seekTo - 5000 : 0);
}
videoPlayerView.getPlayer().setPlayWhenReady(true);
}
}
Ma'lum muammolar
Google/YouTube hisobingizga kirishni talab qiladigan yosh cheklovlari bilan videolar ijro etilmaydi
maslahat: bunday videolarni qora ro'yxatga qo'shing yoki video muallifidan xatolik bilan o'rnatilgan cheklovni olib tashlashni so'rang.
Xizmat nol uzunligini qaytaradigan ba'zi translyatsiya videolari o'ynatilmaydi (bunday videolar uchun ro'yxatlar va galereyadagi davomiylik "[dur undef]" sifatida belgilangan)
maslahat: bunday videolarni qora ro'yxatga qo'shing.
Faqat to'g'ridan-to'g'ri havolalar orqali mavjud bo'lgan videolar, hatto foydalanuvchining barcha videolarini yuklab olgan bo'lsangiz ham, mahalliy pleylistga kiritilmasligi mumkin.
Agar siz tizimga kirishni talab qilmaydigan, brauzerda o'ynaydigan, lekin pleerda o'ynamaydigan ommaviy videoga duch kelsangiz, xato haqida hisobot yuboring (muammo yangi versiyada allaqachon tuzatilgan bo'lishi mumkin. NewPipeExtractor va siz faqat ushbu versiya bilan montajni yangilashingiz kerak bo'ladi, masalan).
Agar Internet sekin bo'lsa (lekin o'chirilmagan) interfeys sekinlashishi mumkin.
Natijada
O'g'lim planshetdan Android ilovalarini ishga tushira olmaydigan Samsung smart-televizoriga o'tdi. Shuning uchun, eng yaxshi ota-ona nazorati hali ham shaxsiydir.
Ammo ilova men o'zim foydalanishni boshlashim uchun qulay bo'lib chiqdi. Dastlabki ish versiyalaridagi birinchi taassurot men boshqa dunyoda ekanligim edi. Barcha kontent YouTube'dan yuklab olinadi, lekin bu endi YouTube emas, balki boshqa narsa, xavfsiz va boshqariladigan narsa, go'yo siz ko'zingizdan qirg'oqni olib, shisha idishga solib qo'ygandek. Va hamma narsa tavsiyalar bilan bog'liq.