ProHoster > Blogi > netin uutisia > Koshchein kuolema on suositusluettelossa (onko mahdollista tehdä YouTubesta viihtyisä ja turvallinen?)
Koshchein kuolema on suositusluettelossa (onko mahdollista tehdä YouTubesta viihtyisä ja turvallinen?)
Johdatus on lyhyt: Haluan puhua YouTube-verkkosoittimesta Androidille paikallisten soittolistojen, kanavien ja suositusten kera.
Laajennettu esittely:
Jokin aika sitten törmäsin täsmälleen samaan ongelmaan kuin upean sovelluksen kirjoittaja Kanavien sallittujen luettelo, ja päätin itselleni täsmälleen saman asenteen sitä kohtaan: haluan joskus antaa lapselleni tabletin tai älypuhelimen, jossa on sarjakuvia, mutta en ole ollenkaan tyytyväinen siihen, missä 2-3 klikkauksen jälkeen lista on suosituksista tavallisissa sovelluksissa - YouTube-asiakasohjelmat - vie lapsen.
Valitettavasti Channel Whitelist -sovelluksen asentamisen jälkeen löydettiin toinen proosallisempi, mutta silti kohtalokas virhe - NIH I (ja mikä tärkeintä, poikani) ei löytänyt käyttöliittymää kovin kätevänä, varsinkin YouTube Kids -soittimen käytön jälkeen.
Yleensä jonkin ajan kuluttua olin valmis tekemään oman toteutukseni. Jonkin ajan kuluttua tuli mahdolliseksi laittaa tagi ensimmäiseen julkaisuun.
Tärkeimmät ominaisuudet:
Lisää suosikkikanavasi ja soittolistasi - ne tallennetaan ja indeksoidaan paikalliseen tietokantaan
Poista tarpeettomat videot käytöstä lisätyistä soittolistoista, jos et tarvitse niitä
Suosituslista luodaan satunnaisesti vain sovellukseen lisätyistä kanavista ja soittolistoista
Alla on yleiskatsaus tärkeimmistä ominaisuuksista yksityiskohtaisemmin sekä joitain teknisiä yksityiskohtia YouTube-videoiden toistamisesta Android-sovelluksessasi ilman Google-sovellusliittymää ja verkkokääreitä.
Päänäytöllä ja soittimen näytöllä: satunnaisia suosituksia ei-satunnaisilta kanavilta
Välitön haku paikallisesta tietokannasta
=>
Lisää uusi kanava tai soittolista
Etsi verkossa nimellä tai lisää tunnettu osoite. Kanavan tai soittolistan videoluettelo tallennetaan paikalliseen tietokantaan; kuvakkeita ei tallenneta välimuistiin.
Dynaaminen soittolista - toista hakutuloksia
=>
Videosuosituksissa on vain videoita, jotka täyttävät hakukyselyn.
Vastaavasti, jos avaat videon soittolista-asetuksista, vain saman soittolistan videot näkyvät suositusluettelossa.
Soittolistat ja kanavat voidaan väliaikaisesti kytkeä pois päältä ja uudelleen päälle
Huomaa: käytöstä poistetun soittolistan videot katoavat myös hakutuloksista, katseluhistoriasta ja suosikkiluettelosta. Mutta älä huoli, ne näkyvät siellä uudelleen heti, kun soittolista otetaan uudelleen käyttöön.
Lisää video mustalle listalle
Estetty video ei näy suosituksissa, hakutuloksissa, ja se katoaa suosikkiluettelosta ja katseluhistoriasta. Video näkyy edelleen soittolistan asetuksissa.
Tarkastele mustaa listaa ja ota vahingossa estetyt kohteet uudelleen käyttöön: Asetukset > otsikkovalikko > Musta lista
Suosikkivideot ja katseluhistoria
Soittimen näytön suosikkivideot on merkitty tähdellä oikeassa yläkulmassa.
Kontekstivalikot näytön otsikossa ja pitkä napsautus gallerioissa ja luetteloissa
Kopioi videon tai soittolistan nimi tai osoite katselunäytössä tai missä tahansa luettelossa.
Pika-aloitus – lisää suositeltuja kanavia ja soittolistoja
=>
Sovellus näyttää välittömästi yllä olevilta kuvakaappauksilta.
Tarpeettomat kanavat ja soittolistat voidaan sammuttaa tai poistaa asetuksista.
Se ei ole Google Playssa eikä lähitulevaisuudessa (Google kieltää sovellukset, jotka ohittavat API:n ja jäsentävät heidän verkkosivustonsa, mukaan lukien mainitun kanavan sallittujen luettelon tai NewPipe-soittimen)
Toivottavasti se ilmestyy luetteloon jonkin ajan kuluttua F-Droid (lisäyshakemus näyttää hyväksytyltä, mutta ei ole liikkunut pidemmälle melkein kuukauteen), mutta ei vielä
Muista, että vaihtaminen eri versioiden välillä eri lähteistä samalla laitteella ei toimi apk-tiedoston eri allekirjoitusten vuoksi; ennen kuin asennat version uudesta lähteestä, sinun on ensin poistettava asennettu versio tietojen mukana - soittolistan välimuisti ja selaushistoria (tai selvitä kuinka siirrät tietoja).
Tekniset yksityiskohdat
Ei vaadi Google/YouTube-tiliä, tarvitset vain Internetin, käyttää seuraavia kirjastoja:
kysymys: Onko yleensä laillista kaapata verkkosivustoja ilman tekijöiden lupaa (tai nimenomaisella kiellolla)? Google poistaa sovelluksia Google Playsta, jotka eivät käytä API:aan, mutta jäsentävät sivustojaan, koska he rikkovat käyttösopimustaan. vastaus: tietenkin, se on laillista, voit päättää, mitä työkalua käytät julkisesti saatavilla olevien tietojen lukemiseen. Lisäksi: Yhdysvaltalainen tuomioistuin on täysin laillistanut verkkosivustojen kaapimisen ja kieltänyt siihen puuttumisen., mutta Gulilla voi olla eri mielipide; henkilökohtaisesti minulla ei ole vielä halua mennä amerikkalaiseen tuomioistuimeen vakuuttaakseni heidät.
Jotain koodia
kirjasto UusiPipeExtractor - pelaajatukiprojekti NewPipe, voit ladata videoluettelon tietylle kanavalle tai soittolistalle, ladata yksityiskohtaisia tietoja kuuluisasta videosta (mikä näkyy videon verkkosivulla), saada videokuvakkeen osoitteen ja myös videon osoitteen virta.
Soittolistan latauskoodi on hieman hankala, joten en anna sitä tässä, kiinnostuneet katsokaa lähdekoodia, se on pohjimmiltaan luokka ContentLoader.
Katsotaanpa, kuinka saada videovirran osoite julkisen videosivun osoitteesta ja toistaa se soittimessa.
On outoa, että tämän jälkeen et vieläkään voi käyttää sitä, koska... esimerkit valittavat puuttuvasta Downloader-luokasta. Se voidaan kopioida projektiin automaattisten testien hakemistosta NewPipeExtractor/extractor/src/test/java/org/schabi/newpipe/Downloader.java - toimii versiossa 0.17.4 (näyttää siltä, että tämä osa on uusittu kirjaston uudemmassa versiossa, mutta meidän on vielä tarkistettava).
Pelaaja tekee exoplayer itse Googlelta. Tämä ei ole YouTuben verkkokääre, vaan todellinen upotettu soitin minkä tahansa videon toistamiseen, melko joustava ja muokattavissa. Se voi myös toistaa videostreameja YouTubesta, jos annat sille oikean osoitteen. Saimme juuri stream-osoitteen, joten katsotaan kuinka se lähetetään soittimelle.
Emme ota huomioon kaikkia vivahteita soitinkomponentin sijoittamisessa sovellusnäytölle (voit katsoa esimerkkejä projektin verkkosivustolta tai koodista), katsomme vain, kuinka aloittaa videon toistaminen YouTubesta soittimessa osoitteessa yllä saatu osoite:
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);
}
}
Tunnettuja ongelmia
Ei toista videoita ikärajoituksilla, jotka edellyttävät kirjautumista Google-/YouTube-tilillesi
neuvoja: lisää tällaiset videot mustalle listalle tai pyydä videon tekijää poistamaan vahingossa asetettu rajoitus.
Joitakin lähetysvideoita, joille palvelu palauttaa nollapituuden, ei toisteta (tällaisten videoiden kesto luetteloissa ja galleriassa on merkitty "[dur undef]").
neuvoja: lisää tällaiset videot mustalle listalle.
Videot, jotka ovat saatavilla vain suorien linkkien kautta, eivät välttämättä sisälly paikalliseen soittolistaan, vaikka lataat kaikki käyttäjän videot
Jos törmäät julkiseen videoon, joka ei vaadi kirjautumista, toistetaan selaimessa, mutta ei soittimessa, lähetä vikailmoitus (on täysin mahdollista, että ongelma on jo korjattu uudessa versiossa UusiPipeExtractor ja sinun tarvitsee vain päivittää kokoonpano tällä versiolla, esimerkiksi).
Käyttöliittymä saattaa hidastua, jos Internet on hidas (mutta ei pois päältä)
Tämän seurauksena
Poikani muutti tabletista Samsungin älytelevisioon, joka ei voi käyttää Android-sovelluksia. Siksi paras vanhempien valvonta on edelleen henkilökohtainen.
Mutta sovellus osoittautui riittävän käteväksi aloittaakseni sen käytön itse. Ensimmäinen vaikutelma varhaisista työversioista oli, että olin toisessa maailmassa. Kaikki sisältö ladataan YouTubesta, mutta tämä ei ole enää YouTube, vaan jotain muuta, turvallista ja hallittua, ikään kuin ottaisit tuhatjalkaisen silmästäsi ja laittaisit sen lasipurkkiin. Ja kaikki on kiinni suosituksista.