ProHoster > Blog > internetové správy > Smrť Koshchei je na zozname odporúčaní (je možné urobiť YouTube útulným a bezpečným?)
Smrť Koshchei je na zozname odporúčaní (je možné urobiť YouTube útulným a bezpečným?)
Úvod je krátky: Chcem hovoriť o online prehrávači YouTube pre Android s miestnymi zoznamami skladieb, kanálmi a odporúčaniami.
Rozšírený úvod:
Pred časom som sa stretol s presne rovnakým problémom ako autor nádhernej aplikácie Zoznam povolených kanálov, a rozhodol som sa pre seba presne rovnaký postoj k tomu: Chcem mať možnosť dať svojmu dieťaťu tablet alebo smartphone s kreslenými rozprávkami, ale nie som vôbec spokojný s tým, kde sa po 2-3 kliknutiach zobrazí zoznam odporúčaní v štandardných aplikáciách – klientoch YouTube – berie dieťa.
Žiaľ, po nainštalovaní aplikácie Channel Whitelist bola objavená ďalšia prozaickejšia, no stále fatálna chyba – NIH Mne (a hlavne môjmu synovi) nevyhovovalo jej rozhranie, najmä po zvyku používať prehrávač YouTube Kids.
Vo všeobecnosti som bol po nejakom čase pripravený urobiť vlastnú implementáciu. Po nejakom čase bolo možné umiestniť značku na prvé vydanie.
Kľúčové vlastnosti:
Pridajte svoje obľúbené kanály a zoznamy skladieb – budú uložené a indexované v lokálnej databáze
V pridaných zoznamoch videí vypnite nepotrebné videá, ak ich nepotrebujete
Zoznam odporúčaní sa generuje náhodne iba z kanálov a zoznamov skladieb pridaných do aplikácie
Nižšie je uvedený podrobnejší prehľad hlavných funkcií a niekoľko technických podrobností o tom, ako prehrávať videá YouTube vo vašej aplikácii pre Android bez použitia rozhrania Google API a webových obalov.
Na hlavnej obrazovke a na obrazovke prehrávača: náhodné odporúčania z nenáhodných kanálov
Okamžité vyhľadávanie v lokálnej databáze
=>
Pridajte nový kanál alebo zoznam skladieb
Hľadajte podľa mena online alebo zadajte známu adresu. Zoznam videí kanála alebo zoznamu videí sa uloží do lokálnej databázy, ikony sa neukladajú do vyrovnávacej pamäte.
Dynamický zoznam skladieb – prehrávanie výsledkov vyhľadávania
=>
V odporúčaniach videí budú iba videá, ktoré vyhovujú vyhľadávaciemu dopytu.
Podobne, ak otvoríte video z nastavení zoznamu videí, v zozname odporúčaní sa zobrazia iba videá z rovnakého zoznamu videí.
Zoznamy skladieb a kanály je možné dočasne vypnúť a znova zapnúť
Poznámka: Videá zo zakázaného zoznamu videí tiež zmiznú z výsledkov vyhľadávania, histórie prezerania a zo zoznamu obľúbených. Ale nebojte sa, hneď po opätovnom zapnutí playlistu sa tam opäť objavia.
Pridajte video na čiernu listinu
Zablokované video sa nezobrazí v odporúčaniach, vo výsledkoch vyhľadávania a zmizne zo zoznamu obľúbených videí az histórie pozerania. Video bude stále viditeľné v nastaveniach zoznamu videí.
Pozrite si čiernu listinu a znova povoľte omylom zablokované položky: Nastavenia > ponuka hlavičky > Zoznam zakázaných položiek
Obľúbené videá a história pozerania
Obľúbené videá na obrazovke prehrávača sú označené hviezdičkou v pravom hornom rohu.
Kontextové ponuky v názve obrazovky a dlhé klikanie v galériách a zoznamoch
Skopírujte názov alebo adresu videa alebo zoznamu skladieb na obrazovke zobrazenia alebo v ľubovoľnom zozname.
Rýchly štart – pridajte odporúčané kanály a zoznamy skladieb
=>
Aplikácia bude okamžite vyzerať ako na snímkach obrazovky vyššie.
Nepotrebné kanály a zoznamy skladieb je možné vypnúť alebo odstrániť v nastaveniach.
Nie je na Google Play a ani v blízkej budúcnosti nebude (Google zakazuje aplikácie, ktoré obchádzajú API a analyzujú ich web, vrátane spomínaného Channel Whitelistu či prehrávača NewPipe)
Majte na pamäti, že prepínanie medzi rôznymi verziami z rôznych zdrojov na tom istom zariadení nebude fungovať kvôli rôznym podpisom súboru apk; pred inštaláciou verzie z nového zdroja budete musieť najskôr odstrániť nainštalovanú verziu spolu s údajmi - vyrovnávaciu pamäť zoznamu skladieb a históriu prehliadania (alebo zistite, ako preniesť údaje).
Technické detaily
Nevyžaduje účet Google/YouTube, potrebujete iba internet, používa nasledujúce knižnice:
otázka: Je vo všeobecnosti legálne skartovať webové stránky bez povolenia (alebo s výslovným zákazom) od autorov? Google odstraňuje aplikácie zo služby Google Play, ktoré nepoužívajú svoje API, ale analyzujú svoje stránky, pretože porušujú svoju užívateľskú zmluvu. odpoveď: samozrejme, je to legalne, je len na tebe, ktory nastroj na citanie verejne dostupnych informacii pouzijes. Ďalej: Americký súd úplne legalizoval sťahovanie webových stránok a zakázal do nich technické zásahy., ale Gul môže mať iný názor; osobne ešte nemám chuť ísť na americký súd, aby som ich presvedčil.
Nejaký kód
knižnica NewPipeExtractor - projekt na podporu hráčov NewPipe, vám umožňuje stiahnuť zoznam videí pre konkrétny kanál alebo zoznam videí, stiahnuť podrobné informácie o slávnom videu (to, čo je viditeľné na webovej stránke videa), získať adresu ikony videa a tiež získať adresu videa Prúd.
Kód na načítanie playlistu je trochu ťažkopádny, preto ho sem dávať nebudem, pre záujemcov si pozrite zdrojový kód, je to v podstate trieda ContentLoader.
Pozrime sa, ako získať adresu videostreamu z adresy verejnej stránky videa a prehrať ho v prehrávači.
Je zvláštne, že po tomto ho stále nebudete môcť používať, pretože... príklady sa budú sťažovať na chýbajúcu triedu Downloader. Dá sa skopírovať do projektu z adresára automatizovaných testov NewPipeExtractor/extractor/src/test/java/org/schabi/newpipe/Downloader.java - funguje pre verziu 0.17.4 (zdá sa, že táto časť bola prerobená v novšej verzii knižnice, ale musíme to ešte skontrolovať).
Získajte adresu streamu videa podľa adresy stránky videa na webovej lokalite YouTube:
Hráč bude explayer od samotného Google. Toto nie je webový obal na YouTube, ale skutočný vstavaný prehrávač na prehrávanie akýchkoľvek videí, celkom flexibilný a prispôsobiteľný. Môže tiež prehrávať video streamy z YouTube, ak mu poskytnete správnu adresu. Práve sme dostali adresu streamu, tak sa pozrime, ako ju poslať do prehrávača.
Nebudeme brať do úvahy všetky nuansy umiestnenia komponentu prehrávača na obrazovku aplikácie (príklady si môžete pozrieť na webovej stránke projektu alebo v kóde), pozrieme sa iba na to, ako spustiť prehrávanie videa z YouTube v prehrávači na adrese vyššie uvedená adresa:
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);
}
}
známe problémy
Neprehrá videá s vekovým obmedzením, ktoré vyžadujú prihlásenie do vášho účtu Google/YouTube
rada: pridajte takéto videá na čiernu listinu alebo požiadajte autora videa, aby odstránil omylom nastavené obmedzenie.
Niektoré vysielané videá, pre ktoré služba vráti nulovú dĺžku, sa neprehrajú (pri takýchto videách je trvanie v zoznamoch a galérii označené ako „[dur undef]“).
Videá, ktoré sú dostupné iba prostredníctvom priamych odkazov, nemusia byť zahrnuté do miestneho zoznamu videí, aj keď si stiahnete všetky videá používateľa
Ak narazíte na verejné video, ktoré nevyžaduje prihlásenie, prehráva sa v prehliadači, ale neprehráva sa v prehrávači, pošlite hlásenie o chybe (je dosť možné, že problém je už v novej verzii odstránený NewPipeExtractor a budete musieť aktualizovať zostavu iba touto verziou, napríklad).
Rozhranie sa môže spomaliť, ak je internet pomalý (ale nie je vypnutý)
V dôsledku toho,
Môj syn presedlal z tabletu na inteligentnú televíziu Samsung, na ktorej nemožno spúšťať aplikácie pre Android. Najlepšia rodičovská kontrola je preto stále osobná.
Ukázalo sa však, že aplikácia je dostatočne pohodlná na to, aby som ju začal používať sám. Prvý dojem z prvých pracovných verzií bol, že som v inom svete. Všetok obsah sa sťahuje z YouTube, ale toto už nie je YouTube, ale niečo iné, bezpečné a kontrolované, ako keby ste si vybrali stonožku z oka a vložili ju do sklenenej nádoby. A je to všetko o odporúčaniach.