Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?)

A bevezető rövid: szeretnék beszélni a YouTube online lejátszóról Androidra helyi lejátszási listákkal, csatornákkal és ajánlásokkal.

Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?)

Bővített bemutatkozás:
Nemrég pontosan ugyanazzal a problémával találkoztam, mint egy csodálatos alkalmazás szerzője Csatorna fehérlista, és pontosan ezt a hozzáállást határoztam meg magamnak: szeretném, ha időnként adhatnék a gyerekemnek egy tabletet vagy okostelefont rajzfilmekkel, de egyáltalán nem vagyok elégedett azzal, hogy 2-3 kattintás után hol van a lista. ajánlások szabványos alkalmazásokban - YouTube kliensek - veszi a gyermeket.

Sajnos a Channel Whitelist alkalmazás telepítése után egy újabb prózaibb, de mégis végzetes hibát fedeztek fel - az NIH I (és ami a legfontosabb, a fiam) nem találta túl kényelmesnek a felületét, különösen a YouTube Kids lejátszó használatának megszokása után.

Általában egy idő után készen álltam a saját megvalósításra. Egy idő után lehetővé vált egy címke elhelyezése az első kiadáson.

Főbb jellemzők:

  • Adja hozzá kedvenc csatornáit és lejátszási listáit – a rendszer elmenti és indexeli őket a helyi adatbázisban
  • A hozzáadott lejátszási listákon belül kapcsold ki a szükségtelen videókat, ha nincs rájuk szükséged
  • Az ajánlások listája véletlenszerűen jön létre az alkalmazáshoz hozzáadott csatornákból és lejátszási listákból

Nyílt forráskódú, GPLv3 licenc: https://github.com/sadr0b0t/yashlang/

Az alábbiakban a főbb funkciók részletesebb áttekintése található, valamint néhány technikai részlet arról, hogyan játszhat le YouTube-videókat Android-alkalmazásában a Google API és a webburkolók használata nélkül.

A főképernyőn és a lejátszó képernyőjén: véletlenszerű ajánlások nem véletlenszerű csatornákról

Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?)

Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?)

Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?)

Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?)

Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?)

Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?)

Azonnali keresés a helyi adatbázisban

Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?) => Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?)

Új csatorna vagy lejátszási lista hozzáadása

Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?) Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?) Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?) Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?)

Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?) Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?) Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?) Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?)

Keressen név szerint az interneten, vagy írjon be egy ismert címet. A csatorna vagy lejátszási lista videóinak listája a helyi adatbázisba kerül, az ikonok nem tárolódnak a gyorsítótárban.

Dinamikus lejátszási lista – keresési eredmények lejátszása

Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?) Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?) => Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?)

Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?)

Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?)

A videóajánlások között csak olyan videók jelennek meg, amelyek kielégítik a keresési lekérdezést.

Hasonlóképpen, ha megnyit egy videót a lejátszási lista beállításai közül, csak az azonos lejátszási listáról származó videók jelennek meg az ajánlások listájában.

A lejátszási listák és csatornák ideiglenesen kikapcsolhatók, majd újra bekapcsolhatók

Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?) Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?) Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?) Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?)

Megjegyzés: a letiltott lejátszási listákról származó videók a keresési eredmények közül, a megtekintési előzményekből és a kedvencek listájából is eltűnnek. De ne aggódjon, a lejátszási lista ismételt bekapcsolása után azonnal újra megjelennek.

Videó hozzáadása a feketelistához

Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?) Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?) Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?)

A letiltott videó nem jelenik meg az ajánlásokban, a keresési eredmények között, és eltűnik a kedvencek listájáról és a megtekintési előzményekből. A videó továbbra is látható lesz a lejátszási lista beállításaiban.

Tekintse meg a feketelistát, és engedélyezze újra a véletlenül blokkolt elemeket:
Beállítások > fejléc menü > Feketelista

Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?) Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?)

Kedvenc videók és megtekintési előzmények

Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?) Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?) Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?)

A lejátszó képernyőjén a kedvenc videókat a jobb felső sarokban csillag jelzi.

Helyi menük a képernyő címében, és hosszú kattintás a galériákban és listákban

Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?) Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?) Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?) Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?)

Másolja ki egy videó vagy lejátszási lista nevét vagy címét a megtekintési képernyőn vagy bármely listában.

Gyors kezdés – ajánlott csatornák és lejátszási listák hozzáadása

Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?) Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?) => Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?)

Az alkalmazás azonnal úgy néz ki, mint a fenti képernyőképek.

A szükségtelen csatornák és lejátszási listák a beállításokban kikapcsolhatók vagy törölhetők.

Telepítés

Projekt oldala: https://github.com/sadr0b0t/yashlang/
angolul: https://github.com/sadr0b0t/yashlang/blob/master/README.en.md
kiadások: https://github.com/sadr0b0t/yashlang/releases

Ne feledje, hogy a különböző forrásokból származó különböző verziók közötti váltás ugyanazon az eszközön nem fog működni az apk fájl eltérő aláírása miatt; mielőtt új forrásból telepítené a verziót, először törölnie kell a telepített verziót az adatokkal együtt - a lejátszási lista gyorsítótárát és a böngészési előzményeket (vagy találja ki az adatok átvitelének módját).

Műszaki részletek

Nem igényel Google/YouTube fiókot, csak internetre van szüksége, a következő könyvtárakat használja:

Nyílt forráskódú, ingyenes GPLv3 licenc.

kérdés: Általában jogszerű-e a webhelyeket a szerzők engedélye nélkül (vagy kifejezett tiltással) lekaparni? A Google eltávolítja az alkalmazásokat a Google Playről, amelyek nem az API-jukat használják, hanem elemzik a webhelyeiket, mert megszegik a felhasználói szerződésüket.
válasz: természetesen ez legális, csak rajtad múlik, hogy milyen eszközzel olvassa el a nyilvánosan elérhető információkat. Továbbá: Egy amerikai bíróság teljesen legalizálta a webhelyek lekaparását, és megtiltotta a technikai beavatkozást., de lehet, hogy Gülnek más a véleménye; személy szerint még nincs kedvem egy amerikai bírósághoz fordulni, hogy meggyőzzem őket.

Valami kód

könyvtár Új PipeExtractor - játékos támogatási projekt NewPipe, lehetővé teszi egy videólista letöltését egy adott csatornához vagy lejátszási listához, részletes információk letöltését egy híres videóról (ami látható a videó weboldalán), lekérheti a videó ikon címét, és a videó címét is. folyam.

A lejátszási lista betöltésének kódja kicsit körülményes, ezért nem adom ide, akit érdekel, nézze meg a forráskódot, ez alapvetően egy osztály ContentLoader.

Nézzük meg, hogyan lehet a nyilvános videóoldal címéből lekérni egy videofolyam címét, és lejátszani a lejátszóban.

Csatlakoztassa a könyvtárat a
app/build.gradle

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

Érdekes, hogy ezután sem tudod majd használni, mert... példák panaszkodni fognak a hiányzó Downloader osztály miatt. Az automatizált tesztek könyvtárából átmásolható a projektbe NewPipeExtractor/extractor/src/test/java/org/schabi/newpipe/Downloader.java - működik a 0.17.4-es verzióhoz (úgy tűnik, hogy ez a rész a könyvtár újabb verziójában lett újrakészítve, de még ellenőriznünk kell).

Szerezze meg a videofolyam címét a YouTube webhely videóoldalának címével:

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

A ytVidUrl videócím lehet bármely videó oldalának nyilvános címe a YouTube webhelyen, például https://www.youtube.com/watch?v=pd2RlatmNRk

A játékos lesz exoplayer magától a Google-tól. Ez nem egy webes wrapper a YouTube felett, hanem egy igazi beágyazott lejátszó bármilyen videó lejátszásához, meglehetősen rugalmas és testreszabható. A YouTube-ról származó videofolyamokat is le tudja játszani, ha megadja a megfelelő címet. Most kaptuk meg a stream címét, nézzük meg, hogyan küldjük el a lejátszónak.

Csatlakoztassa a könyvtárat a projekthez app/build.gradle:

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

Nem vesszük figyelembe a lejátszó komponens alkalmazás képernyőn való elhelyezésének minden árnyalatát (a példákat megtekintheti a projekt webhelyén vagy a kódban), csak azt nézzük meg, hogyan lehet elindítani egy videó lejátszását a YouTube-ról a lejátszóban: a fent kapott cím:

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

ismert problémák

  • Nem játszik le olyan korhatáros videókat, amelyekhez be kell jelentkezni a Google/YouTube-fiókjába

például: Ilja Muromets, Mosfilm mozikonszern, Ruslan és Ljudmila film 1, Mosfilm Film Concern

tanács: vegye fel az ilyen videókat a tiltólistára, vagy kérje meg a videó szerzőjét, hogy távolítsa el a tévedésből beállított korlátozást.

  • Egyes sugárzott videók, amelyeknél a szolgáltatás nulla hosszt ad vissza, nem játszhatók le (az ilyen videók esetében a listákban és a galériában az időtartam „[dur undef]”-ként van megjelölve).

például: Várni rá! A Soyuzmultfilm HD összes száma (rajzfilmek gyerekeknek), a Soyuzmultfilm stúdió rajzfilmjei, Legjobb rajzfilmek Soyuzmultfilm, Rajzfilmek a Soyuzmultfilm stúdiótól

tanács: vegye fel az ilyen videókat a feketelistára.

  • Előfordulhat, hogy a csak közvetlen linkeken keresztül elérhető videók nem szerepelnek a helyi lejátszási listán, még akkor sem, ha letölti a felhasználó összes videóját

például: Tűzszelídítés 1. rész, Mosfilm mozikonszern

  • Ha olyan nyilvános videóra bukkan, amely nem igényel bejelentkezést, lejátszható a böngészőben, de nem játszik le a lejátszóban, küldjön hibajelentést (lehetséges, hogy a problémát már javították az új verzióban Új PipeExtractor és csak frissítenie kell az összeállítást ezzel a verzióval, például).

  • Az interfész lelassulhat, ha az internet lassú (de nincs kikapcsolva)

Ennek eredményeképpen,

A fiam táblagépről Samsung okostévére költözött, amely nem tud Android alkalmazásokat futtatni. Ezért a legjobb szülői felügyelet továbbra is személyes.

De az alkalmazás elég kényelmesnek bizonyult ahhoz, hogy magam is elkezdjem használni. A korai működő verziók első benyomása az volt, hogy egy másik világban vagyok. Minden tartalom a YouTube-ról van letöltve, de ez már nem YouTube, hanem valami más, biztonságos és ellenőrzött, mintha kiszednél egy százlábút a szemedből és egy üvegedénybe tennéd. És minden az ajánlásokon múlik.

Forrás: will.com

Hozzászólás