ProHoster > Blog > internetne novice > Smrt Koshcheija je na seznamu priporočil (ali je mogoče YouTube narediti prijeten in varen?)
Smrt Koshcheija je na seznamu priporočil (ali je mogoče YouTube narediti prijeten in varen?)
Uvod je kratek: želim govoriti o spletnem predvajalniku YouTube za Android z lokalnimi seznami predvajanja, kanali in priporočili.
Razširjen uvod:
Pred časom sem naletel na popolnoma enako težavo kot avtor čudovite aplikacije Seznam dovoljenih kanalov, in zase določil popolnoma enak odnos do tega: svojemu otroku želim občasno dati tablico ali pametni telefon z risankami, vendar nisem prav nič zadovoljen s tem, kje se po 2-3 klikih prikaže seznam priporočil v standardnih aplikacijah - odjemalcih YouTube - prevzame otroka.
Na žalost je bila po namestitvi aplikacije Channel Whitelist odkrita še ena bolj prozaična, a še vedno usodna napaka - NIH sem (in, kar je najpomembneje, moj sin) ugotovil, da njen vmesnik ni zelo priročen, zlasti po navadi uporabe predvajalnika YouTube Kids.
Na splošno sem bil čez nekaj časa pripravljen na lastno izvedbo. Čez nekaj časa je postalo mogoče postaviti oznako na prvo izdajo.
Ključne značilnosti:
Dodajte svoje najljubše kanale in sezname predvajanja – shranjeni bodo in indeksirani v lokalni bazi podatkov
Znotraj dodanih seznamov predvajanja izklopite nepotrebne videoposnetke, če jih ne potrebujete
Seznam priporočil se ustvari naključno samo iz kanalov in seznamov predvajanja, dodanih aplikaciji
Spodaj je podroben pregled glavnih funkcij in nekaj tehničnih podrobnosti o tem, kako predvajati videoposnetke YouTube v vaši aplikaciji za Android brez uporabe Googlovega API-ja in spletnih ovojev.
Na glavnem zaslonu in na zaslonu predvajalnika: naključna priporočila iz nenaključnih kanalov
Takojšnje iskanje v lokalni bazi podatkov
=>
Dodajte nov kanal ali seznam predvajanja
Iščite po imenu na spletu ali vstavite znan naslov. Seznam videoposnetkov kanala ali seznama predvajanja se shrani v lokalno bazo podatkov; ikone se ne shranijo v predpomnilnik.
Dinamični seznam predvajanja - predvajajte rezultate iskanja
=>
V priporočilih videoposnetkov bodo samo videoposnetki, ki ustrezajo iskalni poizvedbi.
Podobno, če odprete video iz nastavitev seznama predvajanja, bodo na seznamu priporočil prikazani samo videoposnetki z istega seznama predvajanja.
Sezname predvajanja in kanale lahko začasno izklopite in znova vklopite
Upoštevajte: videoposnetki z onemogočenega seznama predvajanja bodo prav tako izginili iz rezultatov iskanja, zgodovine ogledov in s seznama priljubljenih. Vendar ne skrbite, tam se bodo spet pojavili takoj, ko bo seznam predvajanja znova vklopljen.
Dodajte video na črni seznam
Blokiran video ne bo prikazan v priporočilih, v rezultatih iskanja in bo izginil s seznama priljubljenih in iz zgodovine ogledov. Video bo še vedno viden v nastavitvah seznama predvajanja.
Oglejte si črni seznam in znova omogočite pomotoma blokirane elemente: Nastavitve > glavni meni > Črni seznam
Priljubljeni videoposnetki in zgodovina ogledov
Priljubljeni videoposnetki na zaslonu predvajalnika so označeni z zvezdico v zgornjem desnem kotu.
Kontekstni meniji v naslovu zaslona in dolg klik v galerijah in seznamih
Kopirajte ime ali naslov videoposnetka ali seznama predvajanja na zaslonu za ogled ali na katerem koli seznamu.
Hiter začetek - dodajte priporočene kanale in sezname predvajanja
=>
Aplikacija bo takoj videti kot na zgornjih posnetkih zaslona.
Nepotrebne kanale in sezname predvajanja lahko izklopite ali izbrišete v nastavitvah.
Ni ga v Google Play in ga v bližnji prihodnosti ne bo (Google prepoveduje aplikacije, ki obidejo API in razčlenjujejo njihovo spletno stran, vključno z omenjenim seznamom dovoljenih kanalov ali predvajalnikom NewPipe)
Ne pozabite, da preklapljanje med različnimi različicami iz različnih virov na isti napravi ne bo delovalo zaradi različnih podpisov apk datoteke; preden namestite različico iz novega vira, boste morali najprej izbrisati nameščeno različico skupaj s podatki - predpomnilnik seznama predvajanja in zgodovino brskanja (ali ugotovite, kako prenesti podatke).
Tehnične podrobnosti
Ne zahteva računa Google/YouTube, potrebujete le internet, uporablja naslednje knjižnice:
vprašanje: Ali je na splošno zakonito strgati spletne strani brez dovoljenja (ali z izrecno prepovedjo) avtorjev? Google odstrani aplikacije iz Googla Play, ki ne uporabljajo njihovega API-ja, ampak razčlenjujejo svoja spletna mesta, ker kršijo svojo uporabniško pogodbo. odgovor: seveda je zakonito, na vas je, s katerim orodjem boste brali javno dostopne informacije. Nadalje: Ameriško sodišče je popolnoma legaliziralo strganje spletnih strani in prepovedalo tehnične posege vanje., ampak Gul ima morda drugačno mnenje, osebno še nimam želje iti na ameriško sodišče, da bi jih prepričal.
Nekaj kode
Knjižnica NewPipeExtractor - projekt podpore igralcem NewPipe, omogoča prenos seznama videoposnetkov za določen kanal ali seznam predvajanja, prenos podrobnih informacij o znanem videoposnetku (kar je vidno na spletni strani videoposnetka), pridobitev naslova ikone videoposnetka in pridobitev tudi naslova videoposnetka tok.
Koda za nalaganje seznama predvajanja je malo okorna, zato je ne bom navajal tukaj, kogar zanima, si oglejte izvorno kodo, v bistvu je razred ContentLoader.
Poglejmo, kako pridobiti naslov videotoka iz naslova javne video strani in ga predvajati v predvajalniku.
Zanimivo je, da ga po tem še vedno ne boste mogli uporabljati, ker ... primeri se bodo pritoževali zaradi manjkajočega razreda Downloader. V projekt ga je mogoče kopirati iz imenika avtomatiziranih testov NewPipeExtractor/extractor/src/test/java/org/schabi/newpipe/Downloader.java - deluje za različico 0.17.4 (izgleda, da je bil ta del predelan v novejši različici knjižnice, vendar moramo še preveriti).
Pridobite naslov video toka z naslovom video strani na spletnem mestu YouTube:
Igralec bo eksoplayer od samega Googla. To ni spletni ovoj nad YouTubom, ampak pravi vgrajen predvajalnik za predvajanje poljubnih videoposnetkov, precej prilagodljiv in prilagodljiv. Predvaja lahko tudi video tokove iz YouTuba, če mu posredujete pravilen naslov. Pravkar smo prejeli naslov toka, zato poglejmo, kako ga poslati predvajalniku.
Ne bomo upoštevali vseh odtenkov postavitve komponente predvajalnika na zaslon aplikacije (primere si lahko ogledate na spletnem mestu projekta ali v kodi), pogledali bomo le, kako začeti predvajati video iz YouTuba v predvajalniku na zgoraj prejeti naslov:
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);
}
}
Znane težave
Ne bo predvajal videoposnetkov s starostnimi omejitvami, ki zahtevajo prijavo v vaš Google/YouTube račun
nasvet: takšne videoposnetke dodajte na črno listo ali prosite avtorja videoposnetka, da odstrani pomotoma nastavljeno omejitev.
Nekateri predvajani videoposnetki, za katere storitev vrne ničelno dolžino, se ne bodo predvajali (pri takih videoposnetkih je trajanje na seznamih in v galeriji označeno kot »[dur undef]«)
Videoposnetki, ki so na voljo samo prek neposrednih povezav, morda ne bodo vključeni v lokalni seznam predvajanja, tudi če prenesete vse videoposnetke uporabnika
Če naletite na javni videoposnetek, ki ne zahteva prijave, se predvaja v brskalniku, vendar se ne predvaja v predvajalniku, pošljite poročilo o napaki (povsem možno je, da je bila težava že odpravljena v novi različici NewPipeExtractor in s to različico boste morali samo posodobiti sklop, na primer).
Vmesnik se lahko upočasni, če je internet počasen (vendar ni izklopljen)
Kot rezultat,
Moj sin je s tablice presedlal na Samsung Smart TV, ki ne more poganjati Android aplikacij. Zato je najboljši starševski nadzor še vedno osebni.
A aplikacija se je izkazala za dovolj priročno, da sem jo začel uporabljati tudi sam. Prvi vtis iz zgodnjih delovnih različic je bil, da sem v drugem svetu. Vse vsebine se prenašajo z YouTuba, vendar to ni več YouTube, ampak nekaj drugega, varnega in nadzorovanega, kot da bi stonogo vzeli iz očesa in jo dali v steklen kozarec. In vse se vrti okoli priporočil.