ProHoster > Блог > warta internet > Pati Koshchei ana ing dhaptar rekomendasi (apa bisa nggawe YouTube nyaman lan aman?)
Pati Koshchei ana ing dhaptar rekomendasi (apa bisa nggawe YouTube nyaman lan aman?)
Pambuka cendhak: Aku pengin ngomong babagan pamuter online YouTube kanggo Android kanthi dhaptar lagu lokal, saluran lan rekomendasi.
Pambuka sing ditambahi:
Sawetara wektu kepungkur aku nemoni masalah sing padha karo penulis aplikasi sing apik banget Daftar Putih Saluran, lan nemtokake dhewe persis sikap sing padha menyang: Aku pengin bisa menehi anakku tablet utawa smartphone karo kartun saka wektu kanggo wektu, nanging aku ora seneng karo ngendi, sawise 2-3 klik, dhaftar saka Rekomendasi ing aplikasi standar - klien YouTube - njupuk anak.
Sayange, sawise nginstal aplikasi Channel Whitelist, cacat liyane sing luwih prosaic, nanging isih fatal ditemokake - NIH I (lan, sing paling penting, anakku) nemokake antarmuka sing ora trep, utamane sawise kebiasaan nggunakake pamuter YouTube Kids.
Umumé, sawise sawetara wektu aku siap kanggo nggawe implementasine dhewe. Sawise sawetara wektu, bisa diwenehi tag ing release pisanan.
Fitur utama:
Tambah saluran lan dhaptar lagu favorit - bakal disimpen lan diindeks ing database lokal
Ing dhaptar lagu sing ditambahake, mateni video sing ora perlu yen sampeyan ora butuh
Dhaptar rekomendasi digawe kanthi acak mung saka saluran lan dhaptar lagu sing ditambahake menyang aplikasi
Ing ngisor iki ringkesan fitur utama kanthi luwih rinci, ditambah sawetara rincian teknis babagan cara muter video YouTube ing aplikasi Android tanpa nggunakake API Google lan bungkus web.
Ing layar utama lan ing layar pamuter: Rekomendasi acak saka saluran non-acak
Panelusuran cepet ing database lokal
=>
Tambah saluran utawa dhaptar lagu anyar
Telusuri kanthi jeneng online utawa lebokake alamat sing dikenal. Dhaptar video saluran utawa dhaptar lagu disimpen ing basis data lokal; lambang ora disimpen ing cache.
Dhaptar lagu dinamis - muter asil panelusuran
=>
Ing rekomendasi video mung bakal ana video sing nyukupi pitakon telusuran.
Kajaba iku, yen sampeyan mbukak video saka setelan dhaptar lagu, mung video saka dhaptar lagu sing padha bakal katon ing dhaptar rekomendasi.
Dhaptar lagu lan saluran bisa dipateni lan diuripake maneh
Wigati dicathet: video saka dhaptar lagu sing dipatèni uga bakal ilang saka asil panelusuran, riwayat tampilan lan saka dhaptar favorit. Nanging aja kuwatir, dheweke bakal katon maneh sawise dhaptar lagu diuripake maneh.
Tambah video menyang dhaptar ireng
Video sing diblokir ora bakal ditampilake ing rekomendasi, ing asil panelusuran, lan bakal ilang saka dhaptar favorit lan saka riwayat tampilan. Video isih bakal katon ing setelan dhaptar lagu.
Deleng dhaptar ireng lan aktifake maneh item sing diblokir kanthi salah: Setelan > menu header > Daftar ireng
Video favorit lan riwayat tampilan
Video favorit ing layar pamuter ditandhani karo tanda bintang ing pojok tengen ndhuwur.
Menu konteks ing judhul layar lan klik dawa ing galeri lan dhaptar
Salin jeneng utawa alamat video utawa dhaptar lagu ing layar tampilan utawa ing dhaptar apa wae.
Mulai cepet - tambah saluran lan dhaptar lagu sing disaranake
=>
Aplikasi bakal langsung katon kaya gambar ing ndhuwur.
Saluran lan dhaptar lagu sing ora dibutuhake bisa dipateni utawa dibusak ing setelan kasebut.
Ora ana ing Google Play lan ora bakal ana ing mangsa ngarep (Google nglarang aplikasi sing ngliwati API lan ngurai situs web, kalebu Daftar Putih Saluran utawa pamuter NewPipe sing kasebut)
Elinga yen ngalih ing antarane versi sing beda-beda saka sumber sing beda ing piranti sing padha ora bakal bisa digunakake amarga beda teken file apk; sadurunge nginstal versi saka sumber anyar, sampeyan kudu mbusak versi sing diinstal bebarengan karo data - cache dhaptar lagu lan riwayat telusuran (utawa ngerti carane nransfer data).
Rincian teknis
Ora mbutuhake akun Google/YouTube, sampeyan mung butuh Internet, nggunakake perpustakaan ing ngisor iki:
pitakonan: Apa umume sah kanggo ngikis situs web tanpa ijin (utawa kanthi larangan eksplisit) saka penulis? Google mbusak app saka Google Play, sing ora nggunakake API, nanging parsing situs, amarga padha nglanggar persetujuan pangguna. jawaban: mesthi, iku legal, iku nganti sampeyan alat sing digunakake kanggo maca informasi kasedhiya umum. Salajengipun: Pengadilan AS wis rampung legalisasi scraping situs web lan nglarang campur tangan teknis., nanging Gul bisa uga duwe pendapat sing beda, kanthi pribadi, aku durung duwe kepinginan menyang pengadilan Amerika kanggo ngyakinake dheweke.
Sawetara kode
perpustakaan NewPipeExtractor - project support pamuter Pipa Anyar, ngidini sampeyan ndownload dhaptar video kanggo saluran utawa dhaptar lagu sing ditemtokake, ndownload informasi rinci babagan video sing misuwur (apa sing katon ing kaca web video), entuk alamat lambang video, lan uga entuk alamat video kasebut. stream.
Kode kanggo ngemot dhaptar lagu rada rumit, mula aku ora bakal menehi kene, kanggo sing kasengsem, deleng kode sumber kasebut, dhasar iki kelas. ContentLoader.
Ayo ndeleng carane njaluk alamat stream video saka alamat kaca video umum lan muter ing pamuter.
Sampeyan penasaran yen sawise iki sampeyan isih ora bisa nggunakake, amarga ... conto bakal sambat babagan kelas Downloader ilang. Bisa disalin menyang proyek saka direktori tes otomatis NewPipeExtractor/extractor/src/test/java/org/schabi/newpipe/Downloader.java - dianggo kanggo versi 0.17.4 ( misale jek sing bagean iki redone ing versi anyar saka perpustakaan, nanging kita isih kudu mriksa).
Entuk alamat stream video kanthi alamat kaca video ing situs web YouTube:
Pamuter bakal exoplayer saka Google dhewe. Iki dudu pambungkus web liwat YouTube, nanging pamuter sing dipasang kanthi nyata kanggo muter video apa wae, cukup fleksibel lan bisa disesuaikan. Uga bisa muter video stream saka YouTube yen sampeyan nyedhiyani karo alamat sing bener. Kita mung nampa alamat stream, dadi ayo kang ndeleng carane ngirim menyang pamuter.
Sambungake perpustakaan menyang proyek kasebut app/build.gradle:
Kita ora bakal nimbang kabeh nuansa nempatake komponen pamuter ing layar aplikasi (sampeyan bisa ndeleng conto ing situs web project utawa ing kode), kita mung bakal katon ing carane miwiti muter video saka YouTube ing pamuter ing alamat sing ditampa ing ndhuwur:
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);
}
}
Masalah sing Dikenal
Ora bakal muter video kanthi watesan umur sing mbutuhake login menyang akun Google/YouTube
saran: nambah video kuwi kanggo blacklist utawa takon penulis video kanggo mbusak watesan sing disetel dening kesalahan.
Sawetara video siaran sing layanan ngasilake nol dawa ora bakal diputer (kanggo video kasebut, durasi ing dhaptar lan galeri ditandhani minangka "[dur undef]")
Yen sampeyan nemokake video umum sing ora mbutuhake login, main ing browser, nanging ora muter ing pamuter, kirim laporan bug (bisa uga masalah kasebut wis diatasi ing versi anyar. NewPipeExtractor lan sampeyan mung kudu nganyari rakitan nganggo versi iki, contone).
Antarmuka bisa mudhun alon yen Internet alon (nanging ora dipateni)
Ing pungkasan
Anakku pindhah saka tablet menyang TV cerdas Samsung, sing ora bisa mbukak aplikasi Android. Mulane, kontrol parental paling apik isih pribadi.
Nanging aplikasi kasebut cukup trep kanggo miwiti nggunakake dhewe. Kesan pisanan saka versi kerja awal yaiku aku ana ing jagad liyane. Kabeh isi diundhuh saka YouTube, nanging iki ora YouTube maneh, nanging mergo, aman lan kontrol, kaya sampeyan njupuk lipan metu saka mripat lan sijine iku ing jar kaca. Lan kabeh babagan rekomendasi.