Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?)

Sarrera laburra da: Androiderako YouTube lineako erreproduzitzaileari buruz hitz egin nahi dut tokiko erreprodukzio zerrenda, kanal eta gomendioekin.

Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?)

Sarrera zabaldua:
Duela denbora pixka bat aplikazio zoragarri baten egilearen arazo bera aurkitu nuen Kanalaren zerrenda zuria, eta neure buruaren aurrean jarrera bera zehaztu nuen: noizean behin nire seme-alabari marrazki bizidunekin tableta edo telefono bat eman ahal izan nahi diot, baina ez nago batere gustura non, 2-3 klik egin ondoren, zerrenda. aplikazio estandarretan gomendioen - YouTube bezeroak - hartzen du umea.

Zoritxarrez, Channel Whitelist aplikazioa instalatu ondoren, beste akats prosaikoagoa, baina oraindik hilgarriago bat aurkitu zen - NIH I (eta, batez ere, nire semea) bere interfazea ez da oso erosoa aurkitu, batez ere YouTube Kids erreproduzitzailea erabiltzeko ohituraren ostean.

Oro har, denbora pixka bat igaro ondoren, nire ezarpena egiteko prest nengoen. Denbora pixka bat igaro ondoren, posible izan zen lehen bertsioan etiketa bat jartzea.

Ezaugarri nagusiak:

  • Gehitu gogoko dituzun kanalak eta erreprodukzio-zerrendak - tokiko datu-basean gorde eta indexatuko dira
  • Gehitutako erreprodukzio-zerrendetan, desaktibatu behar ez dituzun bideoak behar ez badituzu
  • Gomendioen zerrenda ausaz sortzen da aplikazioan gehitutako kanal eta erreprodukzio zerrendetatik soilik

Iturburu irekia, GPLv3 lizentzia: https://github.com/sadr0b0t/yashlang/

Jarraian, ezaugarri nagusien ikuspegi orokorra dago xehetasun gehiagorekin, eta xehetasun tekniko batzuk zure Android aplikazioan YouTube bideoak nola erreproduzitu Google API eta web bilgarriak erabili gabe.

Pantaila nagusian eta erreproduzitzailearen pantailan: ausazkoak ez diren kanalen ausazko gomendioak

Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?)

Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?)

Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?)

Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?)

Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?)

Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?)

Berehalako bilaketa tokiko datu-basean

Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?) => Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?)

Gehitu kanal edo erreprodukzio zerrenda berri bat

Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?) Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?) Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?) Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?)

Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?) Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?) Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?) Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?)

Bilatu sarean izenaren arabera edo sartu helbide ezagun bat. Kanal edo erreprodukzio zerrenda baten bideoen zerrenda tokiko datu-basean gordetzen da; ikonoak ez dira cachean gordetzen.

Erreprodukzio-zerrenda dinamikoa - erreproduzitu bilaketa-emaitzak

Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?) Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?) => Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?)

Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?)

Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?)

Bideo-gomendioetan bilaketa-kontsulta asetzen duten bideoak bakarrik egongo dira.

Era berean, erreprodukzio-zerrendaren ezarpenetatik bideo bat irekitzen baduzu, erreprodukzio-zerrenda bereko bideoak bakarrik agertuko dira gomendioen zerrendan.

Erreprodukzio-zerrendak eta kanalak aldi baterako itzali eta berriro piztu daitezke

Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?) Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?) Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?) Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?)

Kontuan izan: desgaitutako erreprodukzio-zerrenda bateko bideoak bilaketa-emaitzetan, ikustaldi-historian eta gogokoen zerrendatik ere desagertuko dira. Baina ez kezkatu, bertan agertuko dira berriro erreprodukzio-zerrenda piztu eta berehala.

Gehitu bideo bat zerrenda beltzean

Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?) Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?) Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?)

Blokeatutako bideo bat ez da gomendioetan, bilaketa-emaitzetan agertuko, eta gogokoen zerrendatik eta ikustaldi-historiatik desagertuko da. Bideoa ikusgai egongo da erreprodukzio-zerrendaren ezarpenetan.

Ikusi zerrenda beltza eta akatsez blokeatutako elementuak berriro gaitu:
Ezarpenak > goiburuko menua > Zerrenda beltza

Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?) Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?)

Gogoko bideoak eta ikustearen historia

Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?) Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?) Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?)

Erreproduzigailuaren pantailako bideo gogokoenak izartxo batekin markatuta daude goiko eskuineko izkinan.

Testuinguruko menuak pantailako izenburuan eta egin klik luzea galerietan eta zerrendetan

Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?) Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?) Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?) Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?)

Kopiatu bideo edo erreprodukzio zerrenda baten izena edo helbidea ikusteko pantailan edo edozein zerrendatan.

Hasiera azkarra - gehitu gomendatutako kanalak eta erreprodukzio-zerrendak

Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?) Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?) => Koshcheiren heriotza gomendioen zerrendan dago (posible al da YouTube erosoa eta segurua izatea?)

Aplikazioa berehala goiko pantaila-argazkien itxura izango du.

Beharrezkoak ez diren kanalak eta erreprodukzio-zerrendak desaktibatu edo ezabatu daitezke ezarpenetan.

Instalazio-

Proiektuaren orria: https://github.com/sadr0b0t/yashlang/
ingelesez: https://github.com/sadr0b0t/yashlang/blob/master/README.en.md
kaleratzeak: https://github.com/sadr0b0t/yashlang/releases

Kontuan izan gailu berean iturri ezberdinetako bertsio ezberdinen artean aldatzeak ez duela funtzionatuko apk fitxategiaren sinadura desberdinengatik; bertsioa iturri berri batetik instalatu aurretik, instalatutako bertsioa ezabatu beharko duzu datuekin batera - erreprodukzio-zerrenden cachea eta nabigazio-historia (edo datuak nola transferitzen diren jakin).

Xehetasun teknikoak

Ez du Google/YouTube konturik behar, Internet baino ez duzu behar, honako liburutegi hauek erabiltzen ditu:

Kode irekia, doako GPLv3 lizentzia.

galdera: orokorrean legezkoa al da webguneak egileen baimenik gabe (edo debeku esplizitu batekin) arakatzea? Google-k aplikazioak kentzen ditu Google Play-tik, beren APIa erabiltzen ez dutenak, baina haien guneak analizatzen dituztenak, zeren erabiltzaile-hitzarmena urratzen dute.
erantzuna: noski, legezkoa da, zure esku dago zein tresna erabili publikoki eskuragarri dagoen informazioa irakurtzeko. Gainera: AEBetako auzitegi batek erabat legeztatu du webguneen scraping eta interferentzia teknikoak debekatu ditu., baina baliteke Gulek beste iritzi bat izatea; pertsonalki, oraindik ez daukat amerikar auzitegi batera joateko gogorik haiek konbentzitzeko.

Kode batzuk

Liburutegia NewPipeExtractor - jokalarien laguntza proiektua Newpipe, kanal edo erreprodukzio-zerrenda jakin baterako bideoen zerrenda deskargatzeko aukera ematen dizu, bideo ospetsu bati buruzko informazio zehatza deskargatzeko (bideoaren web orrian ikusgai dagoena), bideoaren ikonoaren helbidea lortzeko eta bideoaren helbidea ere lortzeko. erreka.

Erreprodukzio-zerrenda kargatzeko kodea apur bat astuna da, beraz, ez dut hemen emango, interesa dutenentzat, begiratu iturburu kodeari, funtsean klase bat da ContentLoader.

Ikus dezagun bideo-korronte baten helbidea bideo-orri publikoaren helbidetik nola lortu eta erreproduzitzailean nola erreproduzitu.

Konektatu liburutegia
aplikazioa/eraiki.gradle

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

Bitxia da honen ondoren oraindik ezin izango duzula erabili, izan ere... adibideek falta den Downloader klaseaz kexatuko dira. Proba automatizatuen direktoriotik proiektuan kopiatu daiteke NewPipeExtractor/extractor/src/test/java/org/schabi/newpipe/Downloader.java - 0.17.4 bertsiorako funtzionatzen du (badirudi zati hau liburutegiaren bertsio berriago batean berritu zela, baina oraindik egiaztatu behar dugu).

Lortu bideo-korrontearen helbidea YouTube webguneko bideo-orriaren helbidearen arabera:

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

Bideoaren helbidea ytVidUrl YouTube webguneko edozein bideoren orriaren helbide publikoa izan daiteke, adibidez https://www.youtube.com/watch?v=pd2RlatmNRk

Jokalaria izango da exoplayer Google-tik bertatik. Hau ez da YouTube-ko web-bilgarri bat, edozein bideo erreproduzitzeko benetako erreproduzitzaile kapsulatu bat baizik, nahiko malgua eta pertsonalizagarria. YouTube-ko bideo-korronteak ere erreproduzi ditzake helbide zuzena ematen badiozu. Korrontearen helbidea jaso berri dugu, beraz, ikus dezagun nola bidali erreproduzitzaileari.

Lotu liburutegia proiektuarekin aplikazioa/eraiki.gradle:

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

Ez ditugu erreproduzitzailearen osagaia aplikazioaren pantailan jartzeko ñabardura guztiak kontuan hartuko (proiektuaren webgunean edo kodean dauden adibideak ikus ditzakezu), erreproduzitzailean YouTube-ko bideo bat nola erreproduzitzen hasteko ikusiko dugu soilik. goian jasotako helbidea:

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

Arazo ezagunak

  • Ez dira erreproduzituko zure Google/YouTube kontuan saioa hastea eskatzen duten adin-murrizketak dituzten bideoak

adibidez: Ilya Muromets, Mosfilm Cinema Concern, Ruslan eta Lyudmila film 1, Mosfilm Film Concern

aholkua: gehitu bideo horiek zerrenda beltzean edo eskatu bideoaren egileari akatsez ezarritako murrizketa kentzeko.

  • Zerbitzuak zero luzera itzultzen duten igorpen-bideo batzuk ez dira erreproduzituko (bideo horietarako, zerrendetan eta galerian iraupena "[dur undef]" gisa markatuta dago).

adibidez: Itxaron! Soyuzmultfilm HD-ren ale guztiak (umeentzako marrazki bizidunak), Soyuzmultfilm estudioko marrazki bizidunak, Soyuzmultfilm marrazki bizidunak, Soyuzmultfilm estudioko marrazki bizidunak

aholkua: gehitu horrelako bideoak zerrenda beltzean.

  • Zuzeneko esteken bidez soilik erabilgarri dauden bideoak baliteke tokiko erreprodukzio-zerrendan sartzea, erabiltzailearen bideo guztiak deskargatzen badituzu ere

adibidez: Taming of Fire 1. atala, Mosfilm Cinema Concern

  • Saio-hasierarik behar ez duen bideo publiko batekin topo egiten baduzu, arakatzailean erreproduzitzen den, baina erreproduzitzailean erreproduzitzen ez badu, bidali akatsen txostena (aski posible da arazoa bertsio berrian jada konponduta egotea NewPipeExtractor eta bertsio honekin muntaia eguneratu besterik ez duzu beharko, adibidez).

  • Interfazea moteldu daiteke Internet motela bada (baina itzalita ez badago)

Baten ondorioz,

Nire semea tablet batetik Samsung telebista adimendun batera joan zen, eta horrek ezin ditu Android aplikazioak exekutatu. Beraz, gurasoen kontrol onena pertsonala da oraindik ere.

Baina aplikazioa nahiko erosoa iruditu zitzaidan neuk erabiltzen hasteko. Hasierako laneko bertsioen lehen inpresioa beste mundu batean nengoela izan zen. YouTube-tik deskargatzen da eduki guztia, baina hau jada ez da YouTube, beste zerbait baizik, segurua eta kontrolatua, begitik ehuna atera eta kristalezko ontzi batean sartuko bazenu bezala. Eta gomendioei buruzkoa da guztia.

Iturria: www.habr.com

Gehitu iruzkin berria