ProHoster > Blogi > internetiuudised > Koštšei surm on soovituste loendis (kas YouTube'i on võimalik hubaseks ja turvaliseks muuta?)
Koštšei surm on soovituste loendis (kas YouTube'i on võimalik hubaseks ja turvaliseks muuta?)
Sissejuhatus on lühike: tahan rääkida Androidi jaoks mõeldud YouTube'i võrgupleierist koos kohalike esitusloendite, kanalite ja soovitustega.
Laiendatud tutvustus:
Mõni aeg tagasi puutusin kokku täpselt sama probleemiga kui ühe imelise rakenduse autor Kanalite valge nimekiri, ja määrasin enda jaoks täpselt sama suhtumise sellesse: ma tahan, et saaksin oma lapsele aeg-ajalt kinkida multifilmidega tahvelarvuti või nutitelefoni, kuid ma pole sugugi rahul sellega, kus pärast 2-3 klõpsu loend soovituste standardrakendustes - YouTube'i kliendid - võtab lapse.
Kahjuks avastati pärast Channel Whitelist rakenduse installimist veel üks proosalisem, kuid siiski saatuslik viga - NIH I (ja mis kõige tähtsam, mu poeg) ei leidnud selle liidese jaoks eriti mugavat, eriti pärast YouTube Kidsi pleieri kasutamise harjumust.
Üldiselt olin mõne aja pärast valmis oma teostuse tegema. Mõne aja pärast sai võimalikuks esimesele väljalasele silt panna.
Põhijooned:
Lisage oma lemmikkanalid ja esitusloendid – need salvestatakse ja indekseeritakse kohalikku andmebaasi
Lisatud esitusloendites lülitage mittevajalikud videod välja, kui te neid ei vaja
Soovituste loend luuakse juhuslikult ainult rakendusse lisatud kanalitest ja esitusloenditest
Allpool on põhifunktsioonide üksikasjalik ülevaade ja mõned tehnilised üksikasjad selle kohta, kuidas esitada YouTube'i videoid oma Androidi rakenduses ilma Google API-d ja veebimähiseid kasutamata.
Põhiekraanil ja pleieri ekraanil: juhuslikud soovitused mittejuhuslikelt kanalitelt
Kiire otsing kohalikus andmebaasis
=>
Lisage uus kanal või esitusloend
Otsige Internetist nime järgi või sisestage teadaolev aadress. Kanali või esitusloendi videote loend salvestatakse kohalikku andmebaasi, ikoone ei salvestata vahemällu.
Dünaamiline esitusloend – esita otsingutulemusi
=>
Videosoovitustes on ainult need videod, mis vastavad otsingupäringule.
Samamoodi, kui avate video esitusloendi seadetes, kuvatakse soovituste loendis ainult sama esitusloendi videod.
Esitusloendeid ja kanaleid saab ajutiselt välja ja uuesti sisse lülitada
Pange tähele: keelatud esitusloendi videod kaovad ka otsingutulemustest, vaatamisajaloost ja lemmikute loendist. Kuid ärge muretsege, need ilmuvad sinna uuesti kohe pärast esitusloendi uuesti sisselülitamist.
Lisage video musta nimekirja
Blokeeritud videot ei kuvata soovitustes ega otsingutulemustes ning see kaob lemmikute loendist ja vaatamisajaloost. Video on esitusloendi seadetes endiselt nähtav.
Vaadake musta nimekirja ja lubage uuesti kogemata blokeeritud üksused: Seaded > päisemenüü > Must nimekiri
Lemmikvideod ja vaatamisajalugu
Lemmikvideod pleieri ekraanil on tähistatud tärniga paremas ülanurgas.
Kontekstimenüüd ekraani pealkirjas ja pikad klõpsud galeriides ja loendites
Kopeerige vaatamiskuval või mis tahes loendis oleva video või esitusloendi nimi või aadress.
Kiire algus – lisage soovitatud kanaleid ja esitusloendeid
=>
Rakendus näeb kohe välja nagu ülaltoodud ekraanipildid.
Mittevajalikud kanalid ja esitusloendid saab seadetes välja lülitada või kustutada.
Seda pole Google Plays ega ka lähitulevikus (Google keelab rakendused, mis mööduvad API-st ja sõeluvad nende veebisaiti, sealhulgas mainitud kanalite valge loend või NewPipe'i pleier)
Pidage meeles, et samas seadmes erinevatest allikatest pärit erinevate versioonide vahetamine ei toimi apk-faili erinevate signatuuride tõttu; enne uuest allikast versiooni installimist peate esmalt kustutama installitud versiooni koos andmetega - esitusloendi vahemälu ja sirvimisajalugu (või mõelge välja, kuidas andmeid edastada).
Tehnilised detailid
Ei vaja Google'i/YouTube'i kontot, vajate ainult Internetti, kasutab järgmisi teeke:
küsimus: kas veebisaitide kraapimine ilma autorite loata (või selgesõnalise keeluga) on üldiselt seaduslik? Google eemaldab rakendused Google Playst, mis ei kasuta oma API-d, vaid sõeluvad oma saite, sest nad rikuvad oma kasutuslepingut. vastus: loomulikult on see seaduslik, see on teie enda otsustada, millist tööriista kasutada avalikult kättesaadava teabe lugemiseks. Lisaks: USA kohus on täielikult legaliseerinud veebisaitide kraapimise ja keelanud sellesse tehnilise sekkumise., kuid Gulil võib olla teistsugune arvamus; isiklikult ei ole mul veel soovi Ameerika kohtusse pöörduda, et neid veenda.
Mingi kood
raamatukogu Uus PipeExtractor - mängijate tugiprojekt NewPipe, võimaldab teil alla laadida teatud kanali või esitusloendi videote loendi, alla laadida üksikasjalikku teavet kuulsa video kohta (mis on nähtav video veebilehel), hankida video ikooni aadress ja saada ka video aadress oja.
Esitusloendi laadimise kood on veidi tülikas, nii et ma seda siin ei anna, kel huvi, vaadake lähtekoodi, see on põhimõtteliselt klass ContentLoader.
Vaatame, kuidas saada avaliku videolehe aadressist videovoo aadress ja seda pleieris esitada.
On uudishimulik, et pärast seda ei saa te seda ikkagi kasutada, sest ... näited kaebavad puuduva Downloaderi klassi üle. Selle saab projekti kopeerida automatiseeritud testide kataloogist NewPipeExtractor/extractor/src/test/java/org/schabi/newpipe/Downloader.java - töötab versiooni 0.17.4 jaoks (tundub, et see osa tehti uuesti teegi uuemas versioonis, kuid me peame siiski kontrollima).
Mängija saab olema eksomängija Google’ilt endalt. See ei ole YouTube'i veebiümbris, vaid tõeline manustatud pleier mis tahes videote esitamiseks, üsna paindlik ja kohandatav. See võib esitada ka YouTube'i videovooge, kui esitate sellele õige aadressi. Saime just voo aadressi, nii et vaatame, kuidas see mängijale saata.
Me ei võta arvesse kõiki pleieri komponendi rakenduse ekraanile paigutamise nüansse (näiteid saate vaadata projekti veebisaidilt või koodist), vaatame ainult seda, kuidas alustada YouTube'i video esitamist pleieris aadressil ülaltoodud aadress:
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);
}
}
teadaolevad probleemid
Ei esita videoid vanusepiirangutega, mis nõuavad teie Google'i/YouTube'i kontole sisselogimist
Kui kohtate avalikku videot, mis ei vaja sisselogimist, mängib brauseris, kuid ei mängi pleieris, saatke veateade (täiesti võimalik, et probleem on uues versioonis juba parandatud Uus PipeExtractor ja teil on vaja ainult koostu selle versiooniga värskendada, näiteks).
Liides võib aeglustuda, kui Internet on aeglane (kuid mitte välja lülitatud)
Selle tulemusena
Mu poeg kolis tahvelarvutist Samsungi nutitelerisse, mis ei saa käivitada Androidi rakendusi. Seetõttu on parim vanemlik kontroll ikkagi isiklik.
Kuid rakendus osutus piisavalt mugavaks, et saaksin seda ise kasutama hakata. Varastest tööversioonidest jäi esmamulje, et viibin teises maailmas. Kogu sisu laaditakse alla YouTube’ist, aga see pole enam YouTube, vaid midagi muud, turvalist ja kontrollitud, nagu võtaksid sajajalgse silmast välja ja paneksid selle klaaspurki. Ja see kõik sõltub soovitustest.