Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?)

Ein kurzer Überblick: Ich möchte über den YouTube-Player für Android mit lokalen Playlists, Kanälen und Empfehlungen berichten.

Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?)

Eine ausführliche Einführung:
Vor einiger Zeit hatte ich genau das gleiche Problem wie der Autor dieser außergewöhnlichen Anwendung. Channel Whitelist, und ich hatte genau die gleiche Einstellung dazu: Ich möchte meinem Kind ab und zu ein Tablet oder Smartphone mit Zeichentrickfilmen geben, aber ich bin völlig unzufrieden damit, wohin die standardmäßigen YouTube-Anwendungen die Empfehlungen nach 2-3 Klicks leiten.

Leider stellte sich nach der Installation der App Channel Whitelist ein anderer, prozaischer, aber dennoch schwerwiegender Nachteil heraus – das Interface erschien mir (und vor allem meinem Sohn) im Vergleich zum YouTube Kids-Player nicht besonders benutzerfreundlich.

Nach einer weiteren Überlegungsphase war ich bereit, meine eigene Umsetzung zu erstellen. Nach einiger Zeit war es auch möglich, das Tag auf die erste Veröffentlichung zu setzen.

Hauptfunktionen:

  • Fügen Sie Ihre Lieblingskanäle und -playlists hinzu – sie werden gespeichert und in der lokalen Datenbank indexiert.
  • Deaktivieren Sie überflüssige Videos in den hinzugefügten Playlists, wenn Sie diese nicht benötigen.
  • Die Liste der Empfehlungen wird zufällig nur aus den im App hinzugefügten Kanälen und Playlists generiert.

Der Quellcode ist offen, Lizenz GPLv3: https://github.com/sadr0b0t/yashlang/

Nachfolgend eine detaillierte Übersicht über die wichtigsten Funktionen sowie einige technische Informationen dazu, wie Sie Videos von YouTube in Ihrer Android-App ohne Google API und Web-Hüllen abspielen können.

Auf dem Hauptbildschirm und im Player-Bildschirm: Zufällige Empfehlungen aus nicht zufälligen Kanälen.

Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?)

Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?)

Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?)

Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?)

Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?)

Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?)

Sofortige Suche in der lokalen Datenbank.

Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?) => Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?)

Neuen Kanal oder Playlist hinzufügen.

Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?) Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?) Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?) Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?)

Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?) Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?) Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?) Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?)

Online nach Namen suchen oder eine bekannte Adresse einfügen. Die Liste der Videos des Kanals oder der Playlist wird in der lokalen Datenbank gespeichert, Symbole werden nicht zwischengespeichert.

Dynamische Playlist – Spieldauer der Suchergebnisse.

Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?) Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?) => Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?)

Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?)

Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?)

In den Empfehlungen unter dem Video werden nur Videos angezeigt, die dem Suchanfrage entsprechen.

Analog dazu, wenn Sie ein Video aus den Playlist-Einstellungen öffnen, werden im Empfehlungsbereich nur Videos aus dieser Playlist angezeigt.

Playlists und Kanäle können vorübergehend deaktiviert und wieder aktiviert werden.

Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?) Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?) Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?) Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?)

Bitte beachten Sie: Videos aus einem deaktivierten Wiedergabeliste verschwinden auch aus den Suchergebnissen, dem Verlauf und der Liste der Favoriten. Aber keine Sorge, sie erscheinen sofort wieder, sobald die Wiedergabeliste erneut aktiviert wird.

Video auf die schwarze Liste setzen

Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?) Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?) Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?)

Das blockierte Video wird nicht in Empfehlungen, Suchergebnissen angezeigt, wird aus der Favoritenliste und dem Verlauf entfernt. Das Video bleibt jedoch in den Einstellungen der Wiedergabeliste sichtbar.

Schwarze Liste ansehen und versehentlich blockierte Elemente wieder aktivieren:
Einstellungen > Menü in der Kopfzeile > Schwarze Liste

Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?) Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?)

Lieblingsvideos und Verlauf

Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?) Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?) Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?)

Lieblingsvideos auf dem Playerbildschirm sind oben rechts mit einem Sternchen gekennzeichnet.

Kontextmenüs in der Kopfzeile des Bildschirms und durch langes Drücken in Galerien und Listen

Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?) Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?) Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?) Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?)

Name oder Adresse des Videos oder der Wiedergabeliste im Wiedergabebildschirm oder in jeder Liste kopieren.

Schnellstart – empfohlene Kanäle und Wiedergabelisten hinzufügen

Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?) Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?) => Der Tod von Koschei in den Empfehlungen (kann man YouTube sicher und gemütlich gestalten?)

Die App wird sofort so aussehen wie in den oben stehenden Screenshots.

Unnötige Kanäle und Wiedergabelisten können in den Einstellungen deaktiviert oder gelöscht werden.

Installation von

Projektseite: https://github.com/sadr0b0t/yashlang/
auf Englisch: https://github.com/sadr0b0t/yashlang/blob/master/README.en.md
Neuerscheinungen: https://github.com/sadr0b0t/yashlang/releases

Bitte beachten Sie, dass Sie nicht zwischen verschiedenen Versionen aus unterschiedlichen Quellen auf demselben Gerät wechseln können, da die APK-Dateien unterschiedliche Signaturen haben. Vor der Installation einer Version aus einer neuen Quelle müssen Sie zuerst die installierte Version zusammen mit den Daten — dem Cache der Playlists und den Wiedergabeverläufen — löschen (oder sich überlegen, wie diese Daten übertragen werden können).

Technische Details

Benötigt kein Google/YouTube-Konto, nur Internet ist erforderlich, verwendet Bibliotheken:

Offener Quellcode, freie Lizenz GPLv3.

Frage: Ist es legal, Webseiten ohne Erlaubnis (oder mit ausdrücklichem Verbot) der Autoren zu scrapen? Google entfernt Anwendungen aus dem Google Play Store., die ihre API nicht verwenden und deren Websites parsen, da sie gegen ihre Nutzungsbedingungen verstoßen.
Antwort: Natürlich ist es legal, es liegt an Ihnen, welches Werkzeug Sie verwenden, um öffentlich zugängliche Informationen zu lesen. Mehr noch: Das US-Gericht hat das Scraping von Websites vollständig legalisiert und technische Hindernisse dagegen verboten., aber Google könnte eine andere Meinung haben; persönlich habe ich derzeit nicht das Verlangen, vor ein amerikanisches Gericht zu gehen, um sie zu überzeugen.

Ein kleiner Code

Die Bibliothek NewPipeExtractor — ein Hilfsprojekt des Players NewPipe, ermöglicht es, eine Liste von Videos für den angegebenen Kanal oder die Wiedergabeliste herunterzuladen, Informationen zu einem bekannten Video abzurufen (das, was auf der Webseite des Videos sichtbar ist), die Adresse des Video-Icons zu erhalten und den Stream-Link des Videos zu bekommen.

Der Code zum Laden der Wiedergabeliste ist etwas sperrig, daher werde ich ihn hier nicht angeben. Wem es interessiert – schaut in die Quellcodes, hauptsächlich handelt es sich um die Klasse ContentLoader.

Schauen wir uns an, wie man die Adresse des Video-Streams von der öffentlichen Seite des Videos abruft und ihn im Player abspielt.

Bibliothek in
app/build.gradle

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

Interessanterweise kann es danach trotzdem nicht verwendet werden, da die Beispiele aufgrund der fehlenden Klasse Downloader beschweren werden. Diese kann aus dem Verzeichnis der automatischen Tests in das Projekt kopiert werden. NewPipeExtractor/extractor/src/test/java/org/schabi/newpipe/Downloader.java — funktioniert für Version 0.17.4 (es scheint, dass dieser Teil in einer neueren Version der Bibliothek überarbeitet wurde, das muss aber noch überprüft werden).

Erhalten Sie die Adresse des Video-Streams von der Video-Seite auf 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;
    }

Als Adresse für das Video kann ytVidUrl die öffentliche Adresse der Seite eines beliebigen Videos auf YouTube sein, zum Beispiel https://www.youtube.com/watch?v=pd2RlatmNRk

Der Player wird ExoPlayer Es handelt sich nicht um eine Web-Oberfläche für YouTube, sondern um einen echten, eingebetteten Player, der alle Videoformate abspielen kann und dabei flexibel und anpassbar ist. Er kann auch Streaming-Videos von YouTube abspielen, wenn die richtige Adresse angegeben wird. Die Adresse des Streams haben wir gerade erhalten, also schauen wir uns an, wie wir sie in den Player senden können.

Bibliothek im Projekt einbinden app/build.gradle:

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

Wir werden nicht auf alle Details der Platzierung des Player-Elements in der Anwendung eingehen (Sie können sich die Beispiele auf der Projektwebsite oder im Code ansehen), sondern nur darauf, wie man das Abspielen von YouTube-Videos im Player mit der oben erhaltenen Adresse startet:

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

private void playVideoStream(final String streamUrl, final long seekTo) {
    if (streamUrl == null) {
        // Stoppen Sie die Wiedergabe des aktuellen Videos, falls es geladen wurde.
        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);

        // Pausieren Sie das alte Video, während das neue vorbereitet wird.
        if (videoPlayerView.getPlayer().getPlaybackState() != Player.STATE_ENDED) {
            // Wenn wir hier pausieren, nachdem der Player selbst pausiert hat und das Video beendet ist,
            // erhalten wir hier ein zweites STATE_ENDED-Ereignis, daher benötigen wir hier
            // eine spezielle Überprüfung.
            // Bei dieser Überprüfung bleibt der Wert von getPlayWhenReady() true, daher überprüfen wir genau den Zustand.
            // https://github.com/google/ExoPlayer/issues/2272
            videoPlayerView.getPlayer().setPlayWhenReady(false);
        }

        // Bereiten Sie den Player mit der Quelle vor.
        ((SimpleExoPlayer) videoPlayerView.getPlayer()).prepare(videoSource);

        // Geben Sie die aktuelle Position sofort beim Laden des Videos an.
        // (In den Kommentaren wird etwas über Datenquellen geschrieben, die Übergänge seek unterstützen oder nicht unterstützen,
        // es scheint, dass das Quatsch ist – einfach seek sofort nach dem Laden)
        // Exoplayer spielt die neue Playlist von Anfang an anstatt der angegebenen Position.
        // https://github.com/google/ExoPlayer/issues/4375
        // Wie ladet man den Stream an der gewünschten Position? #2197
        // https://github.com/google/ExoPlayer/issues/2197
        // An dieser Stelle ist die normale Dauer noch nicht verfügbar, daher überprüfen wir sie nicht.
        //if(seekTo > 0 && seekTo  0) {
            // Fünf Sekunden früher
            videoPlayerView.getPlayer().seekTo(seekTo - 5000 > 0 ? seekTo - 5000 : 0);
        }
        videoPlayerView.getPlayer().setPlayWhenReady(true);
    }
}

Bekannte Probleme

  • Es werden keine Videos mit Altersbeschränkungen abgespielt, die einen Login in ein Google/YouTube-Konto erfordern.

zum Beispiel: Ilja Muromez, Filmgesellschaft „Moskino“, Ruslan und Ludmila, 1. Folge / Ruslan and Lyudmila Film 1, Filmgesellschaft „Moskino“

Tipp: Fügen Sie solche Videos zur Sperrliste hinzu oder bitten Sie den Autor des Videos, die fälschlicherweise festgelegte Einschränkung aufzuheben.

  • Einige Live-Streaming-Videos werden möglicherweise nicht abgespielt, wenn der Dienst eine Null-Länge zurückgibt (diese Videos haben in den Listen und Galerien eine Dauer von „[dur undef]“).

zum Beispiel: Nu, pogodi! Alle Folgen von Soyuzmultfilm HD (Zeichentrickfilme für Kinder), Zeichentrickfilme des Soyuzmultfilm-Studios, Top-Zeichentrickfilme von Soyuzmultfilm, Zeichentrickfilme des Soyuzmultfilm-Studios

Tipp: Fügen Sie solche Videos zur Sperrliste hinzu.

  • Videos, die nur über direkte Links zugänglich sind, erscheinen möglicherweise nicht in der lokalen Playlist, selbst wenn Sie alle Videos des Nutzers hochladen.

zum Beispiel: Die Zähmung des Feuers, 1. Folge, Filmgesellschaft „Moskino“

  • Wenn Sie auf ein öffentliches Video stoßen, das keinen Login erfordert, im Browser abgespielt wird, aber im Player nicht lädt, senden Sie bitte einen Bug-Report (es ist gut möglich, dass das Problem bereits in einer neuen Version behoben wurde). NewPipeExtractor und es wird nur notwendig sein, das Paket mit dieser Version zu aktualisieren, zum Beispiel).

  • Die Benutzeroberfläche kann bei langsamen (aber nicht ausgeschalteten) Internetverbindungen ruckeln.

Insgesamt

Mein Sohn ist von einem Tablet auf einen Samsung Smart-TV umgestiegen, der keine Android-Apps starten kann. Daher ist die beste Elternkontrolle nach wie vor persönlich.

Aber die App ist so benutzerfreundlich geworden, dass ich sie selbst begonnen habe zu nutzen. Mein erster Eindruck von den frühen funktionierenden Versionen war, als wäre ich in eine andere Welt geraten. Alle Inhalte werden von YouTube geladen, doch es ist nicht mehr YouTube, sondern etwas anderes, sicheres und kontrolliertes, als hätte ich eine Tausendfüßler aus dem Auge gezogen und sie in ein Glasgefäß gesetzt. Es liegt an den Empfehlungen.

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster