Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?)

Fohy ny teny fampidirana: Te hiresaka momba ny mpilalao an-tserasera YouTube ho an'ny Android aho miaraka amin'ny playlist, fantsona ary tolo-kevitra eo an-toerana.

Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?)

Fampidirana nitarina:
Fotoana vitsy lasa izay dia tojo olana mitovy amin'ny mpanoratra ny fampiharana mahafinaritra aho Channel Whitelist, ary tapa-kevitra ho an'ny tenako ny toe-tsaina mitovy amin'izany: tiako ny hanome ny zanako tablette na smartphone misy sariitatra tsindraindray, saingy tsy faly mihitsy aho hoe aiza, aorian'ny 2-3 clicks, ny lisitra. ny tolo-kevitra amin'ny fampiharana mahazatra - mpanjifa YouTube - maka ilay zaza.

Indrisy anefa, taorian'ny fametrahana ny fampiharana Channel Whitelist, dia nisy lesoka iray hafa, saingy mbola mahafaty ihany no hita - NIH I (ary, ny tena zava-dehibe indrindra, ny zanako lahy) dia nahita fa tsy dia mety loatra ny interface, indrindra taorian'ny fahazarana mampiasa ny mpilalao YouTube Kids.

Amin'ny ankapobeny, rehefa afaka kelikely dia vonona ny hanao ny fampiharana manokana aho. Rehefa afaka kelikely, dia azo atao ny mametraka marika amin'ny famoahana voalohany.

Zava-dehibe:

  • Ampio ny fantsona sy playlists ankafizinao - ho voatahiry sy hosoratana ao amin'ny angon-drakitra eo an-toerana izy ireo
  • Ao anatin'ny playlist fanampiny, vonoy ny horonan-tsary tsy ilaina raha tsy mila azy ireo ianao
  • Ny lisitr'ireo tolo-kevitra dia noforonina kisendrasendra fotsiny avy amin'ny fantsona sy ny playlist nampidirina amin'ny fampiharana

Loharano misokatra, fahazoan-dàlana GPLv3: https://github.com/sadr0b0t/yashlang/

Ity ambany ity ny topimaso momba ny endri-javatra lehibe amin'ny antsipiriany bebe kokoa, miampy antsipiriany ara-teknika momba ny fomba filalaovana horonan-tsary YouTube amin'ny fampiharana Android anao nefa tsy mampiasa ny Google API sy ny fonon-tranonkala.

Eo amin'ny efijery lehibe sy eo amin'ny efijery mpilalao: tolo-kevitra kisendrasendra avy amin'ny fantsona tsy kisendrasendra

Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?)

Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?)

Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?)

Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?)

Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?)

Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?)

Fikarohana eo noho eo amin'ny angon-drakitra eo an-toerana

Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?) => Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?)

Manampia fantsona na playlist vaovao

Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?) Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?) Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?) Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?)

Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?) Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?) Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?) Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?)

Mitadiava amin'ny anarana amin'ny Internet na asio adiresy fantatra. Ny lisitry ny lahatsarin'ny fantsona na playlist dia voatahiry ao amin'ny angon-drakitra eo an-toerana; tsy voatahiry ny kisary.

Playlist dinamika - milalao ny valin'ny fikarohana

Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?) Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?) => Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?)

Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?)

Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?)

Ao amin'ny tolo-kevitry ny horonan-tsary dia tsy hisy afa-tsy horonan-tsary mahafa-po ny fangatahana fikarohana.

Toy izany koa, raha manokatra horonan-tsary avy amin'ny lisitry ny lisitry ny playlist ianao, dia horonan-tsary avy amin'ny playlist iray ihany no hiseho amin'ny lisitry ny soso-kevitra.

Azo vonoina vonjimaika sy velomina indray ny lisitry ny kilalao sy ny fantsona

Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?) Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?) Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?) Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?)

Mariho azafady: hanjavona ao amin'ny valin'ny fikarohana, ny tantaran'ny fijerena ary avy amin'ny lisitry ny ankafiziny ihany koa ny horonan-tsary avy amin'ny playlist kilemaina. Aza manahy anefa fa hiseho eo indray avy hatrany izy ireo rehefa alefa indray ny playlist.

Ampio horonan-tsary amin'ny lisitra mainty

Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?) Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?) Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?)

Ny horonan-tsary voasakana dia tsy haseho amin'ny tolo-kevitra, amin'ny valin'ny fikarohana, ary hanjavona ao amin'ny lisitry ny ankafizina sy amin'ny tantaran'ny fijerena. Mbola ho hita ao amin'ny firafitry ny playlist ny horonan-tsary.

Jereo ny lisitra mainty ary avereno indray ireo singa voasakana tsy mety:
Settings> lohapejy menu> Blacklist

Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?) Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?)

Lahatsary ankafizina sy tantara nijery

Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?) Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?) Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?)

Ireo horonan-tsary ankafizina eo amin'ny efijery mpilalao dia voamarika amin'ny asterisk eo amin'ny zoro havanana ambony.

Menus context ao amin'ny lohatenin'ny efijery ary tsindrio lava amin'ny galleries sy lisitra

Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?) Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?) Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?) Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?)

Adikao ny anarana na adiresin'ny horonan-tsary na playlist amin'ny efijery fijerena na amin'ny lisitra rehetra.

Fanombohana haingana - ampio fantsona sy playlists atolotra

Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?) Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?) => Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?)

Ny fampiharana dia hitovy amin'ny pikantsary etsy ambony.

Ny fantsona sy ny playlist tsy ilaina dia azo vonoina na voafafa ao amin'ny fandrindrana.

fametrahana

Pejin'ny tetikasa: https://github.com/sadr0b0t/yashlang/
amin'ny teny anglisy: https://github.com/sadr0b0t/yashlang/blob/master/README.en.md
famoahana: https://github.com/sadr0b0t/yashlang/releases

Ataovy ao an-tsaina fa ny fifandimbiasana eo amin'ny dikan-teny samihafa avy amin'ny loharano samihafa amin'ny fitaovana iray dia tsy handeha noho ny sonia samihafa amin'ny rakitra apk; alohan'ny hametrahana ny dikan-teny avy amin'ny loharano vaovao dia tsy maintsy mamafa ny dikan-napetraka miaraka amin'ny angon-drakitra ianao - ny cache playlist sy ny tantaran'ny fitetezana (na fantaro ny fomba famindrana angona).

Heviny ara-teknika

Tsy mila kaonty Google/YouTube, Internet ihany no ilainao, mampiasa ireto trano famakiam-boky manaraka ireto:

Loharano misokatra, lisansa GPLv3 maimaim-poana.

Fanontaniana: Ara-dalàna amin'ny ankapobeny ve ny mikisaka tranonkala tsy nahazoana alalana (na misy fandrarana mazava) avy amin'ny mpanoratra? Google dia manala ny fampiharana amin'ny Google Play, izay tsy mampiasa ny API-ny, fa manara-maso ny tranokalany, satria mandika ny fifanarahana amin'ny mpampiasa azy izy ireo.
valiny: mazava ho azy fa ara-dalàna izany, miankina aminao izay fitaovana ampiasaina hamakiana ny vaovao azo ampahibemaso. Ankoatra izany: Ny fitsarana amerikana dia nanara-dalàna tanteraka ny fikikisana tranonkala ary nandrara ny fitsabahana ara-teknika amin'izany., saingy mety manana hevitra hafa i Gul; izaho manokana dia tsy mbola manana faniriana handeha any amin'ny fitsarana amerikana handresy lahatra azy ireo.

Kaody sasany

fitehirizam-boky NewPipeExtractor - tetikasa fanohanana mpilalao Newpipe, dia ahafahanao misintona lisitr'ireo horonan-tsary ho an'ny fantsona na playlist iray voafaritra, misintona fampahalalana amin'ny antsipiriany momba ny horonan-tsary malaza (izay hita ao amin'ny pejin-tranonkalan'ilay horonan-tsary), alao ny adiresin'ny kisary video, ary alao ihany koa ny adiresin'ilay horonan-tsary stream.

Somary manahirana kely ny code amin'ny famenoana ny playlist, ka tsy homeko eto, ho an'izay liana, jereo ny source code, kilasy io. ContentLoader.

Andeha hojerentsika ny fomba hahazoana ny adiresin'ny horonan-tsary avy amin'ny adiresin'ny pejin-dahatsary ho an'ny daholobe ary milalao izany amin'ny mpilalao.

Ampifandraiso amin'ny tranomboky
app/build.gradle

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

Mahavariana fa aorian'ity dia mbola tsy afaka mampiasa izany ianao, satria ... ohatra dia hitaraina momba ny kilasy Downloader tsy hita. Azo adika amin'ny tetikasa avy amin'ny lahatahiry fitiliana mandeha ho azy NewPipeExtractor/extractor/src/test/java/org/schabi/newpipe/Downloader.java - miasa ho an'ny version 0.17.4 (toa nohavaozina ity ampahany ity amin'ny dikan-teny vaovao amin'ny tranomboky, fa mbola mila manamarina).

Raiso ny adiresin'ny horonan-tsary amin'ny alàlan'ny adiresin'ny pejin'ny horonan-tsary ao amin'ny tranokala 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;
    }

Ny adiresin'ny horonan-tsary ytVidUrl dia mety ho adiresin'ny daholobe amin'ny pejin'ny horonan-tsary rehetra ao amin'ny tranokala YouTube, ohatra. https://www.youtube.com/watch?v=pd2RlatmNRk

Ny mpilalao dia ho exoplayer avy amin'ny Google mihitsy. Tsy fonon-tranonkala amin'ny YouTube ity, fa mpilalao tena tafiditra amin'ny filalaovana horonan-tsary rehetra, mora azo sy azo zahana. Afaka milalao horonan-tsarimihetsika avy amin'ny YouTube koa izy io raha omenao ny adiresy marina. Vao avy nahazo ny adiresin'ny stream izahay, ka andeha hojerentsika ny fomba handefasana azy amin'ny mpilalao.

Ampifandraiso amin'ny tetikasa ny tranomboky app/build.gradle:

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

Tsy hojerentsika ny nuance rehetra amin'ny fametrahana ny singa mpilalao eo amin'ny efijery fampiharana (azonao jerena ny ohatra ao amin'ny tranokalan'ny tetikasa na ao amin'ny code), hojerentsika fotsiny ny fomba hanombohana milalao horonantsary avy amin'ny YouTube amin'ny mpilalao amin'ny ny adiresy voaray etsy ambony:

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

Olana fantatra

  • Tsy hilalao horonan-tsary misy fameperana taona mila fidirana amin'ny kaontinao Google/YouTube

ohatra: Ilya Muromets, Mosfilm Cinema Concern, Ruslan sy Lyudmila sarimihetsika 1, Mosfilm Film Concern

toro-hevitra: ampidiro ao amin'ny lisitra mainty ny horonan-tsary toy izany na anontanio ny mpanoratra ny horonan-tsary hanaisotra ny fameperana izay tsy nety.

  • Ny horonan-tsary fandefasana sasany izay mamerina ny halavan'ny serivisy dia tsy handeha (ho an'ny horonan-tsary toy izany, ny faharetan'ny lisitra sy ny galeria dia voamarika ho "[dur undef]")

ohatra: Andraso e! Ny olana rehetra momba ny Soyuzmultfilm HD (sarisary ho an'ny ankizy), Sariitatra avy amin'ny studio Soyuzmultfilm, Sariitatra ambony Soyuzmultfilm, Sariitatra avy amin'ny studio Soyuzmultfilm

torohevitra: ampio ny horonan-tsary toy izany ao amin'ny lisitra mainty.

  • Ireo horonan-tsary izay tsy misy afa-tsy amin'ny alalan'ny rohy mivantana dia mety tsy ho tafiditra ao amin'ny playlist eo an-toerana, na dia alainao daholo aza ny lahatsarin'ny mpampiasa.

ohatra: Taming of Fire Episode 1, Mosfilm Cinema Concern

  • Raha sendra lahatsary ho an'ny daholobe tsy mila fidirana ianao, milalao ao amin'ny navigateur, fa tsy milalao ao amin'ny mpilalao, alefaso ny tatitra momba ny bibikely (mety ho efa voavaha ny olana amin'ny dikan-teny vaovao. NewPipeExtractor ary mila manavao ny fivoriambe amin'ity dikan-teny ity ianao, ohatra).

  • Mety hihena ny interface raha miadana ny Internet (fa tsy maty)

Ho vokany,

Ny zanako lahy dia nifindra avy amin'ny takelaka iray mankany amin'ny Samsung smart TV, izay tsy afaka mampiasa fampiharana Android. Noho izany, ny fanaraha-maso tsara indrindra ataon'ny ray aman-dreny dia mbola manokana.

Saingy ny fampiharana dia hita fa mety ho ahy ny manomboka mampiasa azy. Ny fahatsapana voalohany tamin'ireo dikan-teny voalohany niasa dia hoe tany amin'ny tontolo hafa aho. Ny votoaty rehetra dia alaina avy amin'ny YouTube, fa tsy YouTube intsony ity, fa zavatra hafa, azo antoka sy voafehy, toy ny hoe naka centipede teo amin'ny masonao ianao ary napetranao tao anaty siny fitaratra. Ary momba ny soso-kevitra rehetra izany.

Source: www.habr.com

Add a comment