Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?)

D'Aféierung ass kuerz: Ech wëll iwwer den YouTube Online Player fir Android mat lokalen Playlists, Kanäl a Empfehlungen schwätzen.

Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?)

Erweidert Aféierung:
Virun enger Zäit hunn ech genau dee selwechte Problem wéi den Auteur vun enger wonnerbarer Applikatioun begéint Kanal Whitelist, a fir mech selwer genee déiselwecht Haltung dozou bestëmmt: Ech wëll mäi Kand heiansdo en Tablet oder Smartphone mat Zeechnungen ginn, mee ech sinn guer net zefridden mat wou no 2-3 Klicks d'Lëscht ass. vun Recommandatiounen an Standard Uwendungen - YouTube Clienten - hëlt d'Kand.

Leider, no der Installatioun vun der Channel Whitelist Applikatioun, gouf en anere méi prosaeschen, awer trotzdem fatale Feeler entdeckt - NIH I (an, am wichtegsten, mäi Jong) hunn seng Interface net ganz bequem fonnt, besonnesch no der Gewunnecht vum YouTube Kids Player ze benotzen.

Am Allgemengen, no enger Zäit war ech prett fir meng eegen Ëmsetzung ze maachen. No enger Zäit gouf et méiglech en Tag op déi éischt Verëffentlechung ze setzen.

Haaptmerkmale:

  • Füügt Är Liiblingskanäl a Playlists derbäi - si ginn an der lokaler Datebank gespäichert an indexéiert
  • Bannent derbäigesate Playlists, schalt onnéideg Videoen aus wann Dir se net braucht
  • D'Lëscht vun de Empfehlungen gëtt zoufälleg nëmme vu Kanäl a Playlists, déi der Applikatioun bäigefüügt ginn, generéiert

Open Source, GPLv3 Lizenz: https://github.com/sadr0b0t/yashlang/

Drënner ass en Iwwerbléck iwwer d'Haaptfeatures méi am Detail, plus e puer technesch Detailer iwwer wéi Dir YouTube Videoen an Ärer Android Applikatioun spillt ouni d'Google API a Webwrapper ze benotzen.

Op der Haaptrei Écran an op de Spiller Écran: zoufälleg Recommandatiounen vun Net-zoufälleg Channels

Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?)

Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?)

Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?)

Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?)

Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?)

Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?)

Direkt Sich an der lokaler Datebank

Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?) => Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?)

Füügt en neie Kanal oder Playlist derbäi

Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?) Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?) Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?) Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?)

Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?) Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?) Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?) Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?)

Sich nom Numm online oder gitt eng bekannt Adress. D'Lëscht vun de Videoe vun engem Kanal oder Playlist gëtt an der lokaler Datebank gespäichert; Symboler sinn net cache.

Dynamesch Playlist - Spill Sichresultater

Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?) Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?) => Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?)

Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?)

Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?)

An de Video Empfehlungen ginn et nëmme Videoen déi d'Sich Ufro erfëllen.

Ähnlech, wann Dir e Video aus de Playlist-Astellungen opmaacht, erschéngen nëmmen Videoe vun der selwechter Playlist an der Lëscht vun Empfehlungen.

Playlists a Channels kënnen temporär ausgeschalt ginn an erëm op

Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?) Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?) Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?) Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?)

Notéiert w.e.g.: Videoe vun enger behënnerter Playlist verschwannen och aus de Sichresultater, d'Geschicht an aus der Favorittenlëscht. Ma maach der keng Suergen, se erschéngen do direkt nodeems d'Playlist erëm ageschalt ass.

Füügt e Video op d'schwaarz Lëscht

Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?) Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?) Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?)

E blockéierte Video gëtt net an de Empfehlungen, an de Sichresultater ugewisen a wäert aus der Lëscht vun de Favoritten an aus der Iwwerbléckgeschicht verschwannen. De Video wäert nach ëmmer an de Playlist-Astellunge sichtbar sinn.

Kuckt d'Schwaarzlëscht an aktivéiert Elementer déi duerch Feeler blockéiert sinn:
Astellungen> Headermenü> Blacklist

Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?) Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?)

Liiblingsvideoen a Gesiichtsgeschicht

Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?) Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?) Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?)

Liiblingsvideoen um Spillerbildschierm si mat engem Asterisk an der oberer rechter Ecke markéiert.

Kontextmenüen am Écran Titel a laang-klickt an Galerien a Lëschte

Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?) Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?) Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?) Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?)

Kopéiert den Numm oder d'Adress vun engem Video oder Playlist um Bildschierm oder an enger Lëscht.

Quick Start - Füügt recommandéiert Kanäl a Playlists dobäi

Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?) Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?) => Den Doud vu Koshchei ass op der Lëscht vun de Empfehlungen (ass et méiglech YouTube gemittlech a sécher ze maachen?)

D'Applikatioun wäert direkt ausgesinn wéi d'Screenshots hei uewen.

Onnéideg Channels a Playlists kënnen ausgeschalt oder geläscht ginn an den Astellungen.

Kader

Projet Säit: https://github.com/sadr0b0t/yashlang/
op Englesch: https://github.com/sadr0b0t/yashlang/blob/master/README.en.md
verëffentlecht: https://github.com/sadr0b0t/yashlang/releases

Denkt drun datt de Wiessel tëscht verschiddene Versioune vu verschiddene Quellen um selwechten Apparat net funktionnéiert wéinst ënnerschiddleche Ënnerschrëften vun der apk Datei; ier Dir d'Versioun vun enger neier Quell installéiert, musst Dir als éischt déi installéiert Versioun zesumme mat den Donnéeën läschen - de Playlist Cache an d'Browsergeschicht (oder erausfannen wéi Dir Daten transferéiert).

Technesch Detailer

Erfuerdert kee Google/YouTube Kont, Dir braucht nëmmen den Internet, benotzt déi folgend Bibliothéiken:

Open Source, gratis GPLv3 Lizenz.

Fro: Ass et allgemeng legal Websäiten ouni Erlaabnis (oder mat engem explizit Verbuet) vun den Auteuren ze schrauwen? Google läscht Apps aus Google Play, déi hir API net benotzen, awer hir Siten analyséieren, well si verletzen hire Benotzervertrag.
Äntwert: natierlech, et ass legal, et ass un Iech wéi engem Tool Dir benotzt fir ëffentlech verfügbar Informatioun ze liesen. Ausserdeem: En US-Geriicht huet d'Websäit-Schrauwen komplett legaliséiert an technesch Amëschung domat verbueden., mee de Gul kann eng aner Meenung hunn, perséinlech hunn ech nach net de Wonsch op en amerikanescht Geriicht ze goen fir se ze iwwerzeegen.

E puer Code

Bibliothéik NewPipeExtractor - Spiller Ënnerstëtzung Projet Newpipe, erlaabt Iech eng Lëscht vu Videoe fir e spezifizéierte Kanal oder Playlist erofzelueden, detailléiert Informatioun iwwer e berühmte Video erofzelueden (wat op der Websäit vum Video sichtbar ass), d'Adress vum Videoikon ze kréien, an och d'Adress vum Video kréien stream.

De Code fir d'Playlist ze lueden ass e bëssen ëmständlech, also ginn ech et net hei, fir déi interesséiert, kuckt de Quellcode, et ass am Fong eng Klass ContentLoader.

Loosst eis kucken wéi Dir d'Adress vun engem Videostream vun der Adress vun der ëffentlecher Videosäit kritt an et am Spiller spillt.

Connect der Bibliothéik ze
app/build.gradle

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

Et ass virwëtzeg datt Dir duerno nach ëmmer net fäeg sidd et ze benotzen, well ... Beispiller beschwéieren iwwer déi fehlend Downloader Klass. Et kann op de Projet aus dem automatiséierte Testverzeichnis kopéiert ginn NewPipeExtractor/extractor/src/test/java/org/schabi/newpipe/Downloader.java - Wierker fir Versioun 0.17.4 (et schéngt, datt dësen Deel an enger neier Versioun vun der Bibliothéik nei gemaach gouf, awer mir mussen nach iwwerpréiwen).

Gitt d'Adress vum Videostream duerch d'Adress vun der Videosäit op der YouTube Websäit:

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;
    }

D'Videoadress ytVidUrl kann d'ëffentlech Adress vun der Säit vun all Video op der YouTube Websäit sinn, zum Beispill https://www.youtube.com/watch?v=pd2RlatmNRk

De Spiller wäert exoplayer vu Google selwer. Dëst ass net e Webwrapper iwwer YouTube, awer e richtegen embedded Player fir all Videoen ze spillen, zimmlech flexibel an personaliséierbar. Et kann och Video Streams vu YouTube spillen wann Dir et mat der korrekter Adress gitt. Mir hunn just d'Streamadress kritt, also loosst eis kucken wéi een se un de Spiller schéckt.

Connect der Bibliothéik op de Projet app/build.gradle:

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

Mir wäerten net all d'Nuancen berücksichtegen fir de Spillerkomponent op der Applikatiounsbildschierm ze placéieren (Dir kënnt d'Beispiller op der Websäit vum Projet oder am Code kucken), mir kucken nëmmen wéi Dir e Video vu YouTube am Spiller spillt déi uewe kritt Adress:

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);
    }
}

Bekannt Themen

  • Spillt keng Videoe mat Altersbeschränkungen déi Login op Äre Google/YouTube Kont erfuerderen

zum Beispill: Ilya Muromets, Mosfilm Cinema Concern, Ruslan a Lyudmila Film 1, Mosfilm Film Suerg

Rotschléi: Füügt esou Videoen op d'Schwaarzlëscht oder frot den Auteur vum Video fir d'Restriktioun ze läschen, déi duerch Feeler festgeluecht gouf.

  • E puer Emissiounsvideoen, fir déi de Service null Längt gëtt, ginn net gespillt (fir sou Videoen ass d'Dauer an de Lëschten an der Galerie als "[dur undef]") markéiert)

zum Beispill: Waart op et! All Issues of Soyuzmultfilm HD (Cartoons for children), Cartoons from Soyuzmultfilm Studio, Top Cartoons Soyuzmultfilm, Cartoons aus Soyuzmultfilm Studio

Rotschléi: Foto esou Videoen op d'schwaarz Lëscht.

  • Videoen déi nëmmen iwwer direkt Links verfügbar sinn, kënnen net an der lokaler Playlist abegraff sinn, och wann Dir all d'Videoen vum Benotzer erofluet

zum Beispill: Taming of Fire Episod 1, Mosfilm Cinema Concern

  • Wann Dir en ëffentleche Video begéint deen kee Login erfuerdert, am Browser spillt, awer net am Spiller spillt, schéckt e Feelerbericht (et ass ganz méiglech datt de Problem scho an der neier Versioun fixéiert gouf NewPipeExtractor an Dir musst nëmmen d'Versammlung mat dëser Versioun aktualiséieren, zum Beispill).

  • D'Interface kann méi lues sinn wann den Internet lues ass (awer net ausgeschalt)

Als Resultat,

Mäi Jong ass vun engem Tablet op e Samsung Smart TV geplënnert, deen Android Uwendungen net kann lafen. Dofir ass déi bescht Elteren Kontroll nach ëmmer perséinlech.

Awer d'Applikatioun huet sech praktesch genuch erausgestallt fir mech selwer ze benotzen. Den éischten Androck vun de fréien Aarbechtsversioune war datt ech an enger anerer Welt war. All Inhalt gëtt vun YouTube erofgelueden, awer dëst ass net méi YouTube, mee soss eppes, sécher a kontrolléiert, wéi wann Dir e Centipede aus Ärem A geholl hutt an en an e Glasfässer setzt. An et ass alles ëm d'Empfehlungen.

Source: will.com

Setzt e Commentaire