Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?)

Ifihan kukuru: Mo fẹ lati sọrọ nipa ẹrọ orin ori ayelujara YouTube fun Android pẹlu awọn akojọ orin agbegbe, awọn ikanni ati awọn iṣeduro.

Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?)

Ifihan ti o gbooro:
Ni akoko diẹ sẹhin Mo pade ni deede iṣoro kanna bi onkọwe ohun elo iyanu kan Ikanni Whitelist, ati pinnu fun ara mi gangan iwa kanna si rẹ: Mo fẹ lati ni anfani lati fun ọmọ mi ni tabulẹti tabi foonuiyara pẹlu awọn aworan efe lati igba de igba, ṣugbọn emi ko ni idunnu rara pẹlu ibiti, lẹhin 2-3 tẹ, akojọ naa ti awọn iṣeduro ni awọn ohun elo boṣewa - awọn onibara YouTube - gba ọmọ naa.

Laanu, lẹhin fifi sori ohun elo ikanni Whitelist, prosaic miiran diẹ sii, ṣugbọn sibẹ abawọn apaniyan ni a ṣe awari - NIH I (ati, pataki julọ, ọmọ mi) rii wiwo rẹ ko rọrun pupọ, paapaa lẹhin aṣa ti lilo ẹrọ orin YouTube Kids.

Ni gbogbogbo, lẹhin igba diẹ Mo ti ṣetan lati ṣe imuse ti ara mi. Lẹhin akoko diẹ, o ṣee ṣe lati fi aami sii lori itusilẹ akọkọ.

Осnovnые возможности:

  • Ṣafikun awọn ikanni ayanfẹ rẹ ati awọn akojọ orin – wọn yoo wa ni fipamọ ati ṣe atọkasi ni aaye data agbegbe
  • Laarin awọn akojọ orin ti a ṣafikun, pa awọn fidio ti ko wulo ti o ko ba nilo wọn
  • Atokọ awọn iṣeduro jẹ ipilẹṣẹ laileto nikan lati awọn ikanni ati awọn akojọ orin ti a ṣafikun si ohun elo naa

Orisun ṣiṣi, iwe-aṣẹ GPLv3: https://github.com/sadr0b0t/yashlang/

Ni isalẹ jẹ awotẹlẹ ti awọn ẹya akọkọ ni awọn alaye diẹ sii, pẹlu diẹ ninu awọn alaye imọ-ẹrọ lori bii o ṣe le mu awọn fidio YouTube ṣiṣẹ ninu ohun elo Android rẹ laisi lilo Google API ati awọn fifiwe wẹẹbu.

Lori iboju akọkọ ati loju iboju ẹrọ orin: awọn iṣeduro laileto lati awọn ikanni ti kii ṣe laileto

Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?)

Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?)

Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?)

Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?)

Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?)

Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?)

Wiwa lẹsẹkẹsẹ ni ibi ipamọ data agbegbe

Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?) => Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?)

Fi ikanni titun kan kun tabi akojọ orin

Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?) Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?) Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?) Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?)

Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?) Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?) Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?) Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?)

Ṣewadii pẹlu orukọ lori ayelujara tabi fi adirẹsi ti a mọ sii. Atokọ awọn fidio ti ikanni tabi akojọ orin ti wa ni ipamọ si ibi ipamọ data agbegbe; awọn aami ko ni ipamọ.

Akojọ orin alayipo - mu awọn abajade wiwa ṣiṣẹ

Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?) Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?) => Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?)

Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?)

Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?)

Ninu awọn iṣeduro fidio yoo wa awọn fidio nikan ti o ni itẹlọrun ibeere wiwa.

Bakanna, ti o ba ṣii fidio lati awọn eto akojọ orin, awọn fidio nikan lati inu akojọ orin kanna yoo han ninu atokọ awọn iṣeduro.

Awọn akojọ orin ati awọn ikanni le wa ni pipa fun igba diẹ ati tan lẹẹkansi

Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?) Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?) Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?) Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?)

Jọwọ ṣakiyesi: awọn fidio lati inu akojọ orin alaabo yoo tun parẹ lati awọn abajade wiwa, itan wiwo ati lati atokọ awọn ayanfẹ. Ṣugbọn maṣe yọ ara rẹ lẹnu, wọn yoo han nibẹ lẹẹkansi lẹsẹkẹsẹ lẹhin ti akojọ orin ti wa ni titan lẹẹkansi.

Fi fidio kan kun si akojọ dudu

Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?) Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?) Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?)

Fidio ti a dina mọ kii yoo ṣe afihan ni awọn iṣeduro, ni awọn abajade wiwa, ati pe yoo parẹ lati atokọ ti awọn ayanfẹ ati lati itan wiwo. Fidio naa yoo tun han ni awọn eto akojọ orin.

Wo akojọ dudu ki o tun mu awọn ohun dinalọna nipasẹ aṣiṣe ṣiṣẹ:
Eto > Akojọ akọsori > Akojọ dudu

Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?) Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?)

Awọn fidio ayanfẹ ati itan wiwo

Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?) Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?) Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?)

Awọn fidio ayanfẹ loju iboju ẹrọ orin ti samisi pẹlu aami akiyesi ni igun apa ọtun oke.

Awọn akojọ aṣayan ọrọ inu akọle iboju ati titẹ-gun ni awọn aworan ati awọn akojọ

Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?) Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?) Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?) Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?)

Daakọ orukọ tabi adirẹsi fidio tabi akojọ orin ni iboju wiwo tabi ni eyikeyi atokọ.

Ibẹrẹ kiakia - ṣafikun awọn ikanni iṣeduro ati awọn akojọ orin

Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?) Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?) => Iku Koshchei wa lori atokọ ti awọn iṣeduro (Ṣe o ṣee ṣe lati jẹ ki YouTube ni itunu ati ailewu?)

Ohun elo naa yoo dabi awọn sikirinisoti loke.

Awọn ikanni ti ko nilo ati awọn akojọ orin le wa ni paa tabi paarẹ ninu awọn eto.

eto

Oju-iwe ise agbese: https://github.com/sadr0b0t/yashlang/
ni ede Gẹẹsi: https://github.com/sadr0b0t/yashlang/blob/master/README.en.md
awọn idasilẹ: https://github.com/sadr0b0t/yashlang/releases

Ni lokan pe yiyi laarin awọn ẹya oriṣiriṣi lati awọn orisun oriṣiriṣi lori ẹrọ kanna kii yoo ṣiṣẹ nitori awọn ibuwọlu oriṣiriṣi ti faili apk; ṣaaju fifi ẹya sori ẹrọ lati orisun tuntun, iwọ yoo ni akọkọ lati paarẹ ẹya ti o fi sii pẹlu data naa - kaṣe akojọ orin ati itan lilọ kiri ayelujara (tabi ro ero bi o ṣe le gbe data lọ).

Awọn alaye imọ-ẹrọ

Ko nilo akọọlẹ Google/YouTube kan, iwọ nilo Intanẹẹti nikan, o lo awọn ile-ikawe wọnyi:

Orisun ṣiṣi, iwe-aṣẹ GPLv3 ọfẹ.

ibeere: Ṣe o ni gbogbo ofin a scrape awọn aaye ayelujara lai aiye (tabi pẹlu ohun fojuhan wiwọle) lati awọn onkọwe? Google yọ awọn ohun elo kuro lati Google Play, eyi ti ko lo API wọn, ṣugbọn ṣe itupalẹ awọn aaye wọn, nitori wọn ṣẹ adehun olumulo wọn.
idahun: dajudaju, o jẹ ofin, o wa si ọ eyi ti ọpa lati lo lati ka alaye ti o wa ni gbangba. Siwaju sii: Ile-ẹjọ AMẸRIKA kan ti fi ofin si oju opo wẹẹbu scraping patapata ati kikọlu imọ-ẹrọ eewọ pẹlu rẹ., ṣugbọn Gul le ni ero ti o yatọ; tikalararẹ, Emi ko sibẹsibẹ ni ifẹ lati lọ si ile-ẹjọ Amẹrika kan lati parowa fun wọn.

Diẹ ninu awọn koodu

ìkàwé NewPipeExtractor - player support ise agbese Opo tuntun, gba ọ laaye lati ṣe igbasilẹ atokọ ti awọn fidio fun ikanni pàtó kan tabi atokọ orin, ṣe igbasilẹ alaye alaye nipa fidio olokiki (ohun ti o han lori oju-iwe wẹẹbu fidio), gba adirẹsi ti aami fidio, ati tun gba adirẹsi fidio naa ṣiṣan.

Awọn koodu fun ikojọpọ akojọ orin jẹ diẹ ti o lewu, nitorina Emi kii yoo fun ni nibi, fun awọn ti o nifẹ, wo koodu orisun, o jẹ ipilẹ kilasi kan. ContentLoader.

Jẹ ki a wo bii o ṣe le gba adirẹsi ti ṣiṣan fidio lati adirẹsi oju-iwe fidio ti gbogbo eniyan ati mu ṣiṣẹ ninu ẹrọ orin.

So ile-ikawe si
app/build.gradle

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

O jẹ iyanilenu pe lẹhin eyi iwọ kii yoo ni anfani lati lo, nitori… apeere yoo kerora nipa sonu Downloader kilasi. O le ṣe daakọ si iṣẹ akanṣe lati inu itọsọna awọn idanwo adaṣe NewPipeExtractor/extractor/src/idanwo/java/org/schabi/newpipe/Downloader.java - ṣiṣẹ fun ẹya 0.17.4 (o dabi pe a tun ṣe apakan yii ni ẹya tuntun ti ile-ikawe, ṣugbọn a tun nilo lati ṣayẹwo).

Gba adirẹsi ti ṣiṣan fidio nipasẹ adirẹsi oju-iwe fidio lori oju opo wẹẹbu YouTube:

app/src/akọkọ/java/su/sadrobot/yashlang/oluṣakoso/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;
    }

Adirẹsi fidio ytVidUrl le jẹ adirẹsi gbogbo eniyan ti oju-iwe eyikeyi fidio lori oju opo wẹẹbu YouTube, fun apẹẹrẹ https://www.youtube.com/watch?v=pd2RlatmNRk

Ẹrọ orin yoo exoplayer lati Google funrararẹ. Eyi kii ṣe apẹrẹ wẹẹbu lori YouTube, ṣugbọn ẹrọ orin ifibọ gidi kan fun ṣiṣere eyikeyi awọn fidio, irọrun pupọ ati isọdi. O tun le mu awọn ṣiṣan fidio ṣiṣẹ lati YouTube ti o ba pese pẹlu adirẹsi ti o pe. A ṣẹṣẹ gba adirẹsi ṣiṣan naa, nitorinaa jẹ ki a wo bii a ṣe le firanṣẹ si ẹrọ orin.

So awọn ìkàwé si ise agbese app/build.gradle:

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

A kii yoo gbero gbogbo awọn nuances ti gbigbe paati ẹrọ orin sori iboju ohun elo (o le wo awọn apẹẹrẹ lori oju opo wẹẹbu iṣẹ akanṣe tabi ni koodu), a yoo wo bi o ṣe le bẹrẹ fidio kan lati YouTube ninu ẹrọ orin ni adirẹsi ti o gba loke:

app/src/akọkọ/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);
    }
}

Awọn ọran ti a mọ

  • Kii yoo mu awọn fidio ṣiṣẹ pẹlu awọn ihamọ ọjọ-ori ti o nilo iwọle si akọọlẹ Google/YouTube rẹ

fun apẹẹrẹ: Ilya Muromets, Mosfilm Cinema ibakcdun, Ruslan ati Lyudmila fiimu 1, Mosfilm Film ibakcdun

imọran: ṣafikun iru awọn fidio si atokọ dudu tabi beere lọwọ onkọwe fidio lati yọ ihamọ ti a ṣeto nipasẹ aṣiṣe.

  • Diẹ ninu awọn fidio igbohunsafefe fun eyiti iṣẹ naa da ipari gigun odo kii yoo ṣiṣẹ (fun iru awọn fidio, iye akoko ninu awọn atokọ ati ibi aworan aworan jẹ samisi bi “[dur undef]”)

fun apẹẹrẹ: Duro fun o! Gbogbo Awọn ọran ti Soyuzmultfilm HD (Awọn aworan efe fun awọn ọmọde), Awọn aworan efe lati ile-iṣere Soyuzmultfilm, Top cartoons Soyuzmultfilm, Cartoons lati Soyuzmultfilm isise

imọran: fi iru awọn fidio si blacklist.

  • Awọn fidio ti o wa nikan nipasẹ awọn ọna asopọ taara le ma wa ninu akojọ orin agbegbe, paapaa ti o ba ṣe igbasilẹ gbogbo awọn fidio olumulo

fun apẹẹrẹ: Taming of Fire Episode 1, Mosfilm Cinema ibakcdun

  • Ti o ba wa fidio ti gbogbo eniyan ti ko nilo iwọle kan, ṣiṣẹ ni ẹrọ aṣawakiri, ṣugbọn ko ṣiṣẹ ninu ẹrọ orin, firanṣẹ ijabọ kokoro kan (o ṣee ṣe pe iṣoro naa ti wa titi tẹlẹ ninu ẹya tuntun. NewPipeExtractor ati pe iwọ yoo nilo lati ṣe imudojuiwọn apejọ pẹlu ẹya yii, fun apẹẹrẹ).

  • Ni wiwo le fa fifalẹ ti Intanẹẹti ba lọra (ṣugbọn ko wa ni pipa)

Bajẹ

Ọmọ mi gbe lati tabulẹti kan si Samsung smart TV, eyiti ko le ṣiṣe awọn ohun elo Android. Nitorinaa, iṣakoso obi ti o dara julọ tun jẹ ti ara ẹni.

Ṣugbọn ohun elo naa wa ni irọrun to fun mi lati bẹrẹ lilo funrararẹ. Ni igba akọkọ ti sami lati awọn tete ṣiṣẹ awọn ẹya ni wipe mo ti wà ni miran aye. Gbogbo akoonu ti wa ni igbasilẹ lati YouTube, ṣugbọn eyi kii ṣe YouTube mọ, ṣugbọn nkan miiran, ailewu ati iṣakoso, bi ẹnipe o mu centipede kan kuro ni oju rẹ ki o fi sinu idẹ gilasi kan. Ati pe o jẹ gbogbo nipa awọn iṣeduro.

orisun: www.habr.com

Fi ọrọìwòye kun