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.

Smrť Koshchei je na zozname odporúčaní (je možné urobiť YouTube útulným a bezpečným?)

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

Open source, licencia GPLv3: https://github.com/sadr0b0t/yashlang/

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

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?)

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?)

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?)

Okamžité vyhľadávanie v lokálnej databáze

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?)

Pridajte nový kanál alebo zoznam skladieb

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?) 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?)

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?) 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?)

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

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?) => 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?)

Smrť Koshchei je na zozname odporúčaní (je možné urobiť YouTube útulným a bezpečným?)

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úť

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?) 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?)

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

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?) Smrť Koshchei je na zozname odporúčaní (je možné urobiť YouTube útulným a bezpečným?)

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

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?)

Obľúbené videá a história pozerania

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?) Smrť Koshchei je na zozname odporúčaní (je možné urobiť YouTube útulným a bezpečným?)

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

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?) 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?)

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

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?) => Smrť Koshchei je na zozname odporúčaní (je možné urobiť YouTube útulným a bezpečným?)

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.

Inštalácia

Stránka projektu: https://github.com/sadr0b0t/yashlang/
v angličtine: https://github.com/sadr0b0t/yashlang/blob/master/README.en.md
vydania: https://github.com/sadr0b0t/yashlang/releases

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:

Open source, bezplatná licencia GPLv3.

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.

Pripojte knižnicu k
app/build.gradle

dependencies {
...
    // NewPipe: youtube parser
    // https://github.com/TeamNewPipe/NewPipeExtractor
    implementation "com.github.TeamNewPipe:NewPipeExtractor:v0.17.4"
...
}

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:

app/src/main/java/su/sadrobot/yashlang/controller/ContentLoader.java

    public String extractYtStreamUrl(final String ytVidUrl) throws ExtractionException, IOException {
        // https://github.com/TeamNewPipe/NewPipeExtractor/blob/dev/extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeStreamExtractorDefaultTest.java
        NewPipe.init(Downloader.getInstance(), new Localization("GB", "en"));
        final YoutubeStreamExtractor extractor = (YoutubeStreamExtractor) YouTube
                .getStreamExtractor(ytVidUrl);
        extractor.fetchPage();
        final String streamUrl = extractor.getVideoStreams().size() > 0 ? extractor.getVideoStreams().get(0).getUrl() : null;
//        for (final VideoStream stream : extractor.getVideoStreams()) {
//            stream.getUrl();
//        }
        return streamUrl;
    }

Adresa videa ytVidUrl môže byť verejná adresa stránky akéhokoľvek videa na webe YouTube, napr. https://www.youtube.com/watch?v=pd2RlatmNRk

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.

Pripojte knižnicu k projektu app/build.gradle:

dependencies {
...
    // google Exoplayer
    // https://github.com/google/ExoPlayer
    // https://exoplayer.dev/
    implementation 'com.google.android.exoplayer:exoplayer:2.10.8'
...
}

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:

app/src/main/java/su/sadrobot/yashlang/WatchVideoActivity.java

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

napríklad: Ilya Muromets, spoločnosť Mosfilm Cinema Concern, Ruslan a Lyudmila film 1, Mosfilm Film Concern

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]“).

napríklad: Počkať na to! Všetky vydania Soyuzmultfilm HD (karikatúry pre deti), karikatúry od štúdia Soyuzmultfilm, Najlepšie kreslené filmy Soyuzmultfilm, Kreslené filmy od štúdia Soyuzmultfilm

rada: pridajte takéto videá na čiernu listinu.

  • 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

napríklad: Skrotenie ohňa Episode 1, Mosfilm Cinema Concern

  • 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.

Zdroj: hab.com

Pridať komentár