đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster

LĂŒhike sissejuhatus: tahan rÀÀkida Androidi Youtube'i veebipleierist, mis toetab kohalikke esitusloendeid, kanaleid ja soovitusi.

đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster

Pikk sissejuhatus:
MÔni aeg tagasi puutusin kokku tÀpselt sama probleemiga nagu selle suurepÀrase rakenduse autor. Channel Whitelist, ja mÀÀratlesin endale selle suhtes tÀpselt sama suhtumise: ma tahan aeg-ajalt anda oma lapsele tahvelarvuti vÔi nutitelefoni multikatega, kuid mind ei rahulda, kuhu 2-3 kliki jÀrel viib lapsi soovituste nimekiri tavalistes Youtube'i rakendustes.

Kahjuks ilmnes pĂ€rast Channel Whitelist rakenduse installimist teine, proosalisem, kuid siiski saatuslik puudus — NIH tundus mulle (ja, mis veelgi olulisem, minu pojale) mitte vĂ€ga mugava liidese tĂ”ttu, eriti pĂ€rast YouTube Kidsi mĂ€ngija kasutamise harjumust.

ÜhesĂ”naga, mĂ”ne aja pĂ€rast olin valmis tegema oma rakenduse versiooni. Veel mĂ”ne aja pĂ€rast sai esialgse vĂ€ljaande jaoks sildi paigaldamine vĂ”imalikuks.

PÔhifunktsioonid:

  • Lisage oma lemmikkanalid ja esitlusloendid — need salvestatakse ja indekseeritakse kohalikus andmebaasis.
  • Lisatud esitlusloendite sees saate vĂ€lja lĂŒlitada liigsed videod, kui neid ei vajata.
  • Soovituste nimekiri genereeritakse juhuslikult ainult rakendusse lisatud kanalitest ja esitlusloenditest.

Allikaid saab vaadata avatud, GPLv3 litsentsi all: https://github.com/sadr0b0t/yashlang/

Edasi tutvustame peamisi funktsioone ĂŒksikasjalikumalt, lisaks mĂ”ned tehnilised ĂŒksikasjad sellest, kuidas mĂ€ngida YouTube'i videosid oma Androidi rakenduses ilma Google'i API ja veebikatteid kasutamata.

PeamenĂŒĂŒs ja mĂ€ngija ekraanil: juhuslikud soovitused mitte-juhuslikest kanalitest.

đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster

đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster

đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster

đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster

đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster

đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster

Momentne otsing kohalikes andmestikes.

đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster => đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster

Lisa uus kanal vÔi esitlusloend.

đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster

đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster

Otsi nime jÀrgi veebis vÔi sisesta tuntud aadress. Kanali vÔi esitlusloendi videote nimekiri salvestatakse kohalikku andmebaasi, ikoonid ei salvestata vahemÀesse.

DĂŒnaamiline esitlusloend — mĂ€ngi otsingutulemeid.

đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster => đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster

đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster

đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster

Videote soovitustes kuvatakse ainult need, mis vastavad otsingupÀringule.

Sarnaselt, kui avada video esitlusloendi seadetest, kuvatakse soovitustes ainult selle sama esitlusloendi videod.

Esitlusloendeid ja kanaleid saab ajutiselt vĂ€lja lĂŒlitada ja uuesti sisse lĂŒlitada.

đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster

Pange tĂ€hele: vĂ€lja lĂŒlitatud playlista videosid ei kuvatakse ka otsingutulemustes, vaatamishistoorias ja lemmikliste nimekirjas. Kuid pole pĂ”hjust muretseda, need ilmuvad seal tagasi kohe, kui playlist taas aktiveeritakse.

Lisa video musta nimekirja

đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster

Blokeeritud video ei ilmu soovitustes, otsingutulemustes, kaob lemmikute hulgast ja vaatamishistoriast. Video on endiselt nÀhtav playliste seadistustes.

Vaata musta nimekirja ja luba uuesti elemendid, mis on ekslikult blokeeritud:
Seaded > menĂŒĂŒ ĂŒlaosas > Must nimekiri

đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster

Lemmikvideod ja vaatamishistory

đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster

Lemmikvideod mĂ€ngija ekraanil on tĂ€histatud tĂ€hega paremas ĂŒlanurgas.

KontekstitemenĂŒĂŒd ekraani ĂŒlaosas ja pikka kliki galeriides ja nimekirjades

đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster

Kopeeri video vÔi playliste nimi vÔi aadress vaatamise ekraanilt vÔi igas nimekirjas.

Kiire algus — lisa soovitatud kanaleid ja playliste

đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster => đŸ„‡ Ainult 9.27% NPM-i pakettide hooldajatest kasutavad kaheastmelist autentimist | ProHoster

Rakendus nĂ€eb vĂ€lja nagu ĂŒlaltoodud ekraanipiltidel.

Ebavajalikud kanalid ja playliste saab seadistustes vĂ€lja lĂŒlitada vĂ”i kustutada.

Paigaldamine

Projekti leht: https://github.com/sadr0b0t/yashlang/
ingliskeeles: https://github.com/sadr0b0t/yashlang/blob/master/README.en.md
vÀljalasked: https://github.com/sadr0b0t/yashlang/releases

Arvestage, et erinevate versioonide vahetamine erinevatest allikatest ĂŒhes seadmes ei Ă”nnestu erinevate apk-failide allkirjade tĂ”ttu, enne uue allika versiooni installimist tuleb installitud versioon koos andmete - vahemĂ€lu ja vaatamishistoriaga (vĂ”i vĂ€lja mĂ”elda, kuidas neid andmeid edasi viia) esmalt eemaldada.

Tehnilised ĂŒksikasjad

Ei nÔua Google/Youtube'i kontot, on vajalik ainult internet, kasutab teeke:

Avatud lÀhtekood, vabalaenar GPLv3.

kĂŒsimus: Kas veebisaitide kraapimine autorite loata (vĂ”i selgesĂ”nalise keelu korral) on seaduslik? Google eemaldab Google Play's rakendused,, mis ei kasuta nende API-d ja kraabivad nende saite, kuna nad rikuvad nende kasutamislepingut.
vastus: loomulikult, seaduslik, teie valik, millist tööriista kasutada avaliku teabe lugemiseks. Veelgi enam: USA kohus legaliseeris tĂ€ielikult veebilehtede kraapimise ja keelas tehnilised takistused selle jaoks, kuid Gula vĂ”ib omada teistsugust arvamust, isiklikult pole mul veel soovi minna Ameerika kohtusse neid ĂŒmber veenma.

Veidi koodi

Raamatukogu NewPipeExtractor — mĂ€ngija abiprojekt NewPipe, vĂ”imaldab laadida alla loendi videodest mÀÀratud kanalist vĂ”i esitusloendist, laadida alla teavet tuntud video kohta (see, mis on nĂ€htav video veebilehelt), saada video ikooni aadress ja samuti voogedastuse aadressi.

Kood esitusloendi allalaadimiseks on veidi mahukas, seetĂ”ttu ei too ma seda siia, kellel on huvi — vaadake lĂ€htekoodi, peamiselt on see klass ContentLoader.

Vaadatakse, kuidas saada video voogedastuse aadress avaliku video lehe aadressist ja mÀngida seda mÀngijas.

Raamatukogu ĂŒhendamine failis
app/build.gradle

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

Huvitav on see, et pĂ€rast seda ei Ă”nnestu seda ikkagi kasutada, kuna nĂ€ited viskavad vea puuduvast klassist Downloader. Selle saab kopeerida projekti automaattestide kataloogist NewPipeExtractor/extractor/src/test/java/org/schabi/newpipe/Downloader.java — töötab versiooniga 0.17.4 (nĂ€ib, et raamatukogu uuemas versioonis on see osa ĂŒmber tehtud, kuid tuleb veel kontrollida).

Kuidas saada video voogedastuse aadressi videot lehe aadressist YouTube'is:

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

Video aadressina ytVidUrl vÔib olla avalik aadress mis tahes video lehele YouTube'is, nÀiteks https://www.youtube.com/watch?v=pd2RlatmNRk

MĂ€ngija saab olema ExoPlayer otsesama Google. See ei ole veebikate Youtubest, vaid tĂ”eline sisseehitatud mĂ€ngija, mis suudab mĂ€ngida ĂŒkskĂ”ik milliseid videoid ning on piisavalt paindlik ja kohandatav. Sealhulgas oskab see mĂ€ngida ka voogedastuse videoid Youtubest, kui anda Ă”ige aadress. Aadressi saime just Ă€sja, seega vaatame, kuidas edastada see mĂ€ngijasse.

Lisage raamatukogu projekti app/build.gradle:

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

Me ei kĂ€sitle kĂ”iki detailide kĂŒsimusi mĂ€ngija komponentide paigutamisest rakenduse ekraanile (vĂ”ite vaadata projekti veebisaidil nĂ€iteid vĂ”i koodi), vaatame ainult seda, kuidas alustada video esitamise Youtubest mĂ€ngijas saadud aadressi pĂ”hjal:

app/src/main/java/su/sadrobot/yashlang/WatchVideoActivity.java

private void playVideoStream(final String streamUrl, final long seekTo) {
    if (streamUrl == null) {
        // peatage praeguse video esitamine, kui see on laaditud
        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);

        // Paneme vana video pausile, samal ajal kui valmistame uut
        if (videoPlayerView.getPlayer().getPlaybackState() != Player.STATE_ENDED) {
            // Kui paneme pausile siin pÀrast seda, kui mÀngija on ise pausile jÀÀnud, lÔpetades
            // video esitamise, saame siin teise sĂŒndmuse STATE_ENDED, seega on meil siin vaja
            // spetsiifilist kontrolli.
            // Samal ajal jÀÀb getPlayWhenReady() vÀÀrtus true, seega kontrollime just seisundit.
            // https://github.com/google/ExoPlayer/issues/2272
            videoPlayerView.getPlayer().setPlayWhenReady(false);
        }

        // Valmistame mÀngija allika abil ette.
        ((SimpleExoPlayer) videoPlayerView.getPlayer()).prepare(videoSource);

        // Seame praeguse positsiooni kohe video laadimise ajal
        // (kommentaarides rÀÀgitakse midagi andmeallikatest, mis toetavad vÔi ei toeta
        // seeki laadimise ajal, tundub, et see on vale - teeme seeki kohe pÀrast laadimist)
        // Exoplayer mÀngib uue mÀngu loendi algusest, mitte antud positsioonilt
        // https://github.com/google/ExoPlayer/issues/4375
        // Kuidas laadida voog antud positsioonist? #2197
        // https://github.com/google/ExoPlayer/issues/2197
        // selles kohas pole normaalne kestus veel saadaval, seega ei kontrolli me seda
        //if(seekTo > 0 && seekTo  0) {
            // 5 sekundit varem
            videoPlayerView.getPlayer().seekTo(seekTo - 5000 > 0 ? seekTo - 5000 : 0);
        }
        videoPlayerView.getPlayer().setPlayWhenReady(true);
    }
}

Tuntud probleemid

  • Ei mĂ€ngi videoid, mille vanusepiirangud nĂ”uavad Google/Youtube'i kontole sisse logimist.

nÀiteks: Ilya Muromets, kinokompanii «Mosfilm», Ruslan ja Lyudmila 1. osa / Ruslan and Lyudmila film 1, kinokompanii «Mosfilm»

soovitus: lisada sellised videod musta nimekirja vÔi paluda video autori kÀest eemaldada vale piirang.

  • Ei mĂ€ngi mĂ”ned otseĂŒlekanded, mille puhul teenus tagastab nullpikkuse (selliste videote kestus on nimekirjades ja galeriis mĂ€rgitud kui «[dur undef]»)

nÀiteks: Nu Pogodi! KÔik osad Soyuzmultfilm HD (multikad lastele), Soyuzmultfilmi stuudio multikad, Tippmultikad Soyuzmultfilm, Soyuzmultfilmi stuudio multikad

nÔuanne: lisada sellised videod musta nimekirja.

  • Videod, mis on saadaval ainult otse linkide kaudu, vĂ”ivad mitte sattuda kohalikku mĂ€nguplaati, isegi kui laadite ĂŒles kĂ”ik kasutaja videod.

nÀiteks: Tule tameelsemine 1. osa, Kinokontsert "Mosfilm"

  • Kui kohtate avalikku videot, milleks ei ole vajalik sisselogimine, mis mĂ€ngib brauseris, kuid ei mĂ€ngi mĂ€ngijana, saatke vearaport (on vĂ”imalik, et probleem on juba lahendatud uues versioonis. NewPipeExtractor ja tuleb lihtsalt uus versioon lasta alla. nĂ€iteks).

  • Liides vĂ”ib aeglasel (kuid mitte vĂ€lja lĂŒlitatud) internetil pisut konutada.

KokkuvÔttes

Poeg on ĂŒle lĂ€inud tahvelarvutilt Samsungi nutitelesale, mis ei oska kĂ€ivitada Androidi rakendusi. Seega on parim vanemlik kontroll siiski isiklik.

Kuid rakendus osutus piisavalt mugavaks, et hakkasin seda ise kasutama. Esimene mulje varasematest tööversioonidest — tundus, et olen sattunud teise maailma. KĂ”ik sisu laaditakse YouTube'ist, kuid see ei ole enam YouTube, vaid midagi muud, ohutut ja kontrollitavat, nagu oleks ma vĂ€lja tĂ”mmanud skolopendrist silma ja pannud selle klaaspurki. Ja see on just soovitustes.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster