Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?)

Hyrja është e shkurtër: dua të flas për luajtësin në internet të YouTube për Android me lista për luajtje, kanale dhe rekomandime lokale.

Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?)

Hyrje e zgjeruar:
Disa kohë më parë hasa saktësisht të njëjtin problem si autori i një aplikacioni të mrekullueshëm Lista e bardhë e kanaleve, dhe përcaktova për veten time saktësisht të njëjtin qëndrim ndaj tij: dua t'i jap fëmijës tim një tabletë ose smartphone me filma vizatimorë herë pas here, por nuk jam aspak i kënaqur se ku, pas 2-3 klikimeve, lista. i rekomandimeve në aplikacionet standarde - klientët YouTube - merr fëmijën.

Fatkeqësisht, pas instalimit të aplikacionit Channel Whitelist, u zbulua një tjetër e metë më prozaike, por ende fatale - NIH I (dhe, më e rëndësishmja, djali im) e gjeti ndërfaqen e tij jo shumë të përshtatshme, veçanërisht pas zakonit të përdorimit të luajtësit YouTube Kids.

Në përgjithësi, pas ca kohësh isha gati të bëja zbatimin tim. Pas ca kohësh, u bë e mundur vendosja e një etikete në versionin e parë.

Karakteristikat kryesore:

  • Shtoni kanalet dhe listat tuaja të preferuara për luajtje - ato do të ruhen dhe indeksohen në bazën e të dhënave lokale
  • Brenda listave të shtuara për luajtje, çaktivizoni videot e panevojshme nëse nuk ju nevojiten
  • Lista e rekomandimeve krijohet në mënyrë të rastësishme vetëm nga kanalet dhe listat e luajtjes të shtuara në aplikacion

Burim i hapur, licencë GPLv3: https://github.com/sadr0b0t/yashlang/

Më poshtë është një përmbledhje e veçorive kryesore në mënyrë më të detajuar, plus disa detaje teknike se si të luani videot e YouTube në aplikacionin tuaj Android pa përdorur API të Google dhe mbështjellëset e uebit.

Në ekranin kryesor dhe në ekranin e luajtësit: rekomandime të rastësishme nga kanale jo të rastësishme

Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?)

Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?)

Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?)

Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?)

Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?)

Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?)

Kërkim i menjëhershëm në bazën e të dhënave lokale

Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?) => Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?)

Shto një kanal të ri ose listë luajtjeje

Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?) Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?) Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?) Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?)

Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?) Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?) Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?) Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?)

Kërkoni me emër në internet ose futni një adresë të njohur. Lista e videove të një kanali ose liste për luajtje ruhet në bazën e të dhënave lokale; ikonat nuk ruhen në memorie të fshehtë.

Lista e luajtjes dinamike - luaj rezultatet e kërkimit

Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?) Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?) => Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?)

Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?)

Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?)

Në rekomandimet e videove do të ketë vetëm video që plotësojnë pyetjen e kërkimit.

Në mënyrë të ngjashme, nëse hapni një video nga cilësimet e listës së luajtjes, vetëm videot nga e njëjta listë për luajtje do të shfaqen në listën e rekomandimeve.

Listat e luajtjes dhe kanalet mund të çaktivizohen përkohësisht dhe të aktivizohen përsëri

Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?) Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?) Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?) Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?)

Ju lutemi vini re: videot nga një listë luajtjeje e çaktivizuar do të zhduken gjithashtu nga rezultatet e kërkimit, historiku i shikimit dhe nga lista e të preferuarave. Por mos u shqetësoni, ato do të shfaqen përsëri aty menjëherë pasi lista e luajtjes të aktivizohet përsëri.

Shtoni një video në listën e zezë

Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?) Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?) Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?)

Një video e bllokuar nuk do të shfaqet në rekomandime, në rezultatet e kërkimit dhe do të zhduket nga lista e të preferuarave dhe nga historiku i shikimit. Videoja do të jetë ende e dukshme në cilësimet e listës së luajtjes.

Shikoni listën e zezë dhe riaktivizoni artikujt e bllokuar gabimisht:
Cilësimet > menyja e kokës > Lista e zezë

Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?) Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?)

Videot e preferuara dhe historia e shikimit

Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?) Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?) Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?)

Videot e preferuara në ekranin e luajtësit janë shënuar me një yll në këndin e sipërm djathtas.

Menutë e kontekstit në titullin e ekranit dhe klikoni gjatë në galeri dhe lista

Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?) Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?) Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?) Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?)

Kopjoni emrin ose adresën e një videoje ose liste për luajtje në ekranin e shikimit ose në ndonjë listë.

Fillimi i shpejtë - shtoni kanale dhe lista dëgjimi të rekomanduara

Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?) Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?) => Vdekja e Koshchei është në listën e rekomandimeve (a është e mundur ta bëni YouTube komod dhe të sigurt?)

Aplikacioni do të duket menjëherë si pamjet e mësipërme.

Kanalet dhe listat e dëgjimit të panevojshëm mund të çaktivizohen ose fshihen te cilësimet.

Instalim

Faqja e projektit: https://github.com/sadr0b0t/yashlang/
në Anglisht: https://github.com/sadr0b0t/yashlang/blob/master/README.en.md
lëshon: https://github.com/sadr0b0t/yashlang/releases

Mbani në mend se kalimi midis versioneve të ndryshme nga burime të ndryshme në të njëjtën pajisje nuk do të funksionojë për shkak të nënshkrimeve të ndryshme të skedarit apk; përpara se të instaloni versionin nga një burim i ri, së pari do të duhet të fshini versionin e instaluar së bashku me të dhënat - cache-in e listës së luajtjes dhe historikun e shfletimit (ose kuptoni se si të transferoni të dhëna).

Detaje teknike

Nuk kërkon një llogari Google/YouTube, ju duhet vetëm interneti, përdor bibliotekat e mëposhtme:

Me burim të hapur, licencë falas GPLv3.

Pyetja: A është përgjithësisht e ligjshme të fshihen faqet e internetit pa leje (ose me një ndalim të qartë) nga autorët? Google heq aplikacionet nga Google Play, të cilat nuk përdorin API-në e tyre, por analizojnë faqet e tyre, sepse ata shkelin marrëveshjen e tyre të përdoruesit.
përgjigje: sigurisht, është e ligjshme, varet nga ju se cilin mjet do të përdorni për të lexuar informacionin e disponueshëm publikisht. Për më tepër: Një gjykatë amerikane ka legalizuar plotësisht skrapimin e faqeve të internetit dhe ka ndaluar ndërhyrjen teknike në të., por Gul mund të ketë një mendim tjetër; personalisht, unë nuk kam ende dëshirë të shkoj në një gjykatë amerikane për t'i bindur ata.

Disa kode

Bibliotekë NewPipeExtractor - Projekti i mbështetjes së lojtarëve Tub i ri, ju lejon të shkarkoni një listë videosh për një kanal ose listë dëgjimi të caktuar, të shkarkoni informacione të detajuara për një video të famshme (çfarë është e dukshme në faqen e internetit të videos), të merrni adresën e ikonës së videos dhe gjithashtu të merrni adresën e videos përrua.

Kodi për ngarkimin e listës së luajtjes është pak i rëndë, kështu që nuk do ta jap këtu, për të interesuarit, hidhini një sy kodit burimor, në thelb është një klasë ContentLoader.

Le të shohim se si të marrim adresën e një transmetimi video nga adresa e faqes publike të videos dhe ta luajmë atë në luajtës.

Lidhni bibliotekën me
app/build.gradle

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

Është kurioze që edhe pas kësaj nuk do të mund ta përdorni, sepse... shembujt do të ankohen për mungesën e klasës së Shkarkuesit. Mund të kopjohet në projekt nga drejtoria e automatizuar e testeve NewPipeExtractor/extractor/src/test/java/org/schabi/newpipe/Downloader.java - funksionon për versionin 0.17.4 (duket se kjo pjesë është ribërë në një version më të ri të bibliotekës, por ne ende duhet të kontrollojmë).

Merrni adresën e transmetimit të videos nga adresa e faqes së videos në faqen e internetit të 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 e videos ytVidUrl mund të jetë adresa publike e faqes së çdo videoje në faqen e internetit të YouTube, për shembull https://www.youtube.com/watch?v=pd2RlatmNRk

Lojtari do të jetë ekzoplayer nga vetë Google. Ky nuk është një mbështjellës ueb mbi YouTube, por një luajtës i vërtetë i integruar për të luajtur çdo video, mjaft fleksibël dhe i personalizueshëm. Ai gjithashtu mund të luajë transmetime video nga YouTube nëse i jepni adresën e saktë. Sapo morëm adresën e transmetimit, kështu që le të shohim se si ta dërgojmë atë te luajtësi.

Lidhni bibliotekën me projektin app/build.gradle:

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

Ne nuk do të shqyrtojmë të gjitha nuancat e vendosjes së komponentit të luajtësit në ekranin e aplikacionit (mund të shikoni shembujt në faqen e internetit të projektit ose në kod), ne do të shikojmë vetëm se si të filloni të luani një video nga YouTube në luajtësin në adresa e marrë më lart:

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

Çështjet e njohura

  • Nuk do të luajë video me kufizime moshe që kërkojnë hyrje në llogarinë tuaj në Google/YouTube

për shembull: Ilya Muromets, Shqetësimi i Kinemasë Mosfilm, Ruslan dhe Lyudmila filmi 1, Mosfilm Film Concern

këshilla: shtoni video të tilla në listën e zezë ose kërkoni nga autori i videos të heqë kufizimin që është vendosur gabimisht.

  • Disa video të transmetuara për të cilat shërbimi kthen gjatësinë zero nuk do të luhen (për video të tilla, kohëzgjatja në lista dhe galeri shënohet si "[dur undef]")

për shembull: Prisni për të! Të gjitha çështjet e Soyuzmultfilm HD (Filma vizatimore për fëmijë), Karikatura nga studio Soyuzmultfilm, Karikaturat më të mira Soyuzmultfilm, Karikaturat nga studio Soyuzmultfilm

këshilla: shtoni video të tilla në listën e zezë.

  • Videot që disponohen vetëm përmes lidhjeve të drejtpërdrejta mund të mos përfshihen në listën lokale të luajtjes, edhe nëse shkarkoni të gjitha videot e përdoruesit

për shembull: Zbutja e zjarrit Episodi 1, Shqetësimi i Kinemasë Mosfilm

  • Nëse hasni në një video publike që nuk kërkon hyrje, luan në shfletues, por nuk luan në luajtës, dërgoni një raport të defekteve (është mjaft e mundshme që problemi të jetë rregulluar tashmë në versionin e ri NewPipeExtractor dhe do t'ju duhet vetëm të përditësoni asamblenë me këtë version, për shembull).

  • Ndërfaqja mund të ngadalësohet nëse Interneti është i ngadalshëm (por jo i fikur)

Si rezultat i kësaj,

Djali im kaloi nga një tablet në një televizor inteligjent Samsung, i cili nuk mund të ekzekutojë aplikacione Android. Prandaj, kontrolli më i mirë prindëror është ende personal.

Por aplikacioni doli të ishte mjaft i përshtatshëm që unë të filloja ta përdorja vetë. Përshtypja e parë nga versionet e hershme të punës ishte se isha në një botë tjetër. E gjithë përmbajtja shkarkohet nga YouTube, por ky nuk është më YouTube, por diçka tjetër, e sigurt dhe e kontrolluar, sikur të kishe nxjerrë një centipedë nga syri dhe e fute në një kavanoz qelqi. Dhe gjithçka ka të bëjë me rekomandimet.

Burimi: www.habr.com

Shto një koment