ProHoster > blog > aħbarijiet fuq l-internet > Il-mewt ta 'Koshchei tinsab fuq il-lista ta' rakkomandazzjonijiet (huwa possibbli li tagħmel YouTube komdu u sikur?)
Il-mewt ta 'Koshchei tinsab fuq il-lista ta' rakkomandazzjonijiet (huwa possibbli li tagħmel YouTube komdu u sikur?)
L-introduzzjoni hija qasira: Irrid nitkellem dwar il-player online ta 'YouTube għal Android b'playlists lokali, kanali u rakkomandazzjonijiet.
Introduzzjoni estiża:
Xi żmien ilu ltqajt ma' eżattament l-istess problema bħall-awtur ta' applikazzjoni mill-isbaħ Lista tal-Kanal White, u ddeterminat għalija nnifsi eżattament l-istess attitudni lejha: Irrid inkun kapaċi nagħti lit-tifel jew it-tifel tiegħi tablet jew smartphone b'kartuns minn żmien għal żmien, imma jien xejn kuntent fejn, wara 2-3 klikks, il-lista ta 'rakkomandazzjonijiet fl-applikazzjonijiet standard - klijenti YouTube - jieħu l-wild.
Sfortunatament, wara l-installazzjoni tal-applikazzjoni Channel Whitelist, ġie skopert difett ieħor aktar prosajku, iżda xorta fatali - NIH I (u, l-aktar importanti, ibni) sibt l-interface tagħha mhux konvenjenti ħafna, speċjalment wara d-drawwa li tuża l-player YouTube Kids.
B'mod ġenerali, wara xi żmien kont lest li nagħmel l-implimentazzjoni tiegħi stess. Wara xi żmien, sar possibbli li titqiegħed tikketta fuq l-ewwel rilaxx.
Karatteristiċi ewlenin:
Żid il-kanali u l-playlists favoriti tiegħek - dawn se jiġu ssejvjati u indiċjati fid-database lokali
Fi ħdan playlists miżjuda, itfi vidjows mhux meħtieġa jekk m'għandekx bżonnhom
Il-lista ta 'rakkomandazzjonijiet hija ġġenerata b'mod każwali biss minn kanali u playlists miżjuda mal-applikazzjoni
Hawn taħt hawn ħarsa ġenerali lejn il-karatteristiċi ewlenin f'aktar dettall, flimkien ma 'xi dettalji tekniċi dwar kif tilgħab vidjows YouTube fl-applikazzjoni Android tiegħek mingħajr ma tuża l-API ta' Google u l-wrappers tal-web.
Fuq l-iskrin prinċipali u fuq l-iskrin tal-plejer: rakkomandazzjonijiet każwali minn kanali mhux każwali
Tfittxija immedjata fid-database lokali
=>
Żid kanal jew playlist ġdid
Fittex bl-isem online jew daħħal indirizz magħruf. Il-lista ta' vidjows ta' kanal jew playlist tiġi ssejvjata fid-database lokali; l-ikoni mhumiex fil-cache.
Fir-rakkomandazzjonijiet tal-vidjo se jkun hemm biss vidjows li jissodisfaw il-mistoqsija tat-tfittxija.
Bl-istess mod, jekk tiftaħ vidjo mill-issettjar tal-playlist, vidjows biss mill-istess playlist se jidhru fil-lista ta 'rakkomandazzjonijiet.
Playlists u kanali jistgħu jintfew u jerġgħu jinxtegħlu temporanjament
Jekk jogħġbok innota: vidjows minn playlist b'diżabilità se jisparixxu wkoll mir-riżultati tat-tfittxija, l-istorja tal-wiri u mil-lista tal-favoriti. Imma tinkwetax, jerġgħu jidhru hemm immedjatament wara li l-playlist terġa' tinxtegħel.
Żid vidjo mal-lista sewda
Vidjow imblukkat mhux se jintwera fir-rakkomandazzjonijiet, fir-riżultati tat-tfittxija, u se jisparixxi mil-lista tal-favoriti u mill-istorja tal-wiri. Il-video xorta se jkun viżibbli fis-settings tal-playlist.
Ara l-lista s-sewda u erġa' ppermetti l-oġġetti mblukkati bi żball: Settings > header menu > Blacklist
Vidjows favoriti u storja tal-wiri
Vidjows favoriti fuq l-iskrin tal-plejer huma mmarkati b'asterisk fir-rokna ta' fuq tal-lemin.
Menus tal-kuntest fit-titlu tal-iskrin u kklikkja fit-tul fil-galleriji u l-listi
Ikkopja l-isem jew l-indirizz ta’ vidjow jew playlist fl-iskrin tal-wiri jew fi kwalunkwe lista.
Bidu malajr - żid kanali rakkomandati u playlists
=>
L-applikazzjoni se tidher immedjatament bħall-screenshots hawn fuq.
Il-kanali u l-playlists mhux meħtieġa jistgħu jintfew jew jitħassru fis-settings.
Mhuwiex fuq Google Play u mhux se jkun fil-futur qarib (Google jipprojbixxi l-applikazzjonijiet li jaqbżu l-API u janalizzaw il-websajt tagħhom, inkluż il-Canal Whitelist imsemmi jew il-plejer NewPipe)
Żomm f'moħħok li l-bidla bejn verżjonijiet differenti minn sorsi differenti fuq l-istess apparat mhux se taħdem minħabba firem differenti tal-fajl apk; qabel ma tinstalla l-verżjoni minn sors ġdid, l-ewwel ikollok tħassar il-verżjoni installata flimkien mad-dejta - il-cache tal-playlist u l-istorja tal-ibbrawżjar (jew insemmu kif tittrasferixxi d-data).
Dettalji tekniċi
Ma teħtieġx kont Google/YouTube, għandek bżonn biss l-Internet, tuża l-libreriji li ġejjin:
mistoqsija: Huwa ġeneralment legali li jinbarax websajts mingħajr permess (jew bi projbizzjoni espliċita) mill-awturi? Google tneħħi apps minn Google Play, li ma jużawx l-API tagħhom, iżda jparse s-siti tagħhom, għaliex jiksru l-ftehim tal-utent tagħhom. tweġiba: ovvjament, huwa legali, f'idejnek liema għodda tuża biex taqra informazzjoni disponibbli pubblikament. Barra minn hekk: Qorti tal-Istati Uniti legalizzat kompletament il-brix tal-websajt u pprojbit interferenza teknika magħha., iżda Gul jista’ jkollu opinjoni differenti; personalment, għad m’għandix ix-xewqa li mmur f’qorti Amerikana biex nikkonvinċihom.
Xi kodiċi
Librerija NewPipeExtractor - proġett ta' appoġġ għall-plejers Newpipe, jippermettilek tniżżel lista ta 'vidjows għal kanal speċifikat jew playlist, tniżżel informazzjoni dettaljata dwar vidjo famuż (dak li huwa viżibbli fuq il-paġna web tal-vidjo), tikseb l-indirizz tal-ikona tal-vidjow, u tikseb ukoll l-indirizz tal-vidjow nixxiegħa.
Il-kodiċi għat-tagħbija tal-playlist huwa ftit ingombranti, għalhekk mhux se nagħtiha hawn, għal dawk interessati, agħti ħarsa lejn il-kodiċi tas-sors, bażikament hija klassi ContentLoader.
Ejja naraw kif tikseb l-indirizz ta 'fluss tal-vidjo mill-indirizz tal-paġna pubblika tal-vidjo u tilgħabha fil-player.
Hija kurjuża li wara dan xorta ma tkunx tista’ tużah, għax... eżempji se jilmentaw dwar il-klassi Downloader nieqsa. Jista 'jiġi kkupjat għall-proġett mid-direttorju tat-testijiet awtomatizzati NewPipeExtractor/extractor/src/test/java/org/schabi/newpipe/Downloader.java - jaħdem għall-verżjoni 0.17.4 (jidher li din il-parti saret mill-ġdid f'verżjoni aktar ġdida tal-librerija, iżda għad għandna bżonn niċċekkjaw).
Ikseb l-indirizz tal-fluss tal-vidjo mill-indirizz tal-paġna tal-vidjo fuq il-websajt ta 'YouTube:
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;
}
L-indirizz tal-vidjo ytVidUrl jista' jkun l-indirizz pubbliku tal-paġna ta' kwalunkwe vidjo fuq il-websajt ta' YouTube, pereżempju https://www.youtube.com/watch?v=pd2RlatmNRk
Il-plejer se exoplayer minn Google stess. Dan mhuwiex tgeżwir tal-web fuq YouTube, iżda player inkorporat reali biex tilgħab kwalunkwe vidjows, pjuttost flessibbli u customizable. Jista 'wkoll jilgħab nixxigħat tal-vidjo minn YouTube jekk tipprovdih bl-indirizz korrett. Għadna kemm irċevejna l-indirizz tan-nixxiegħa, allura ejja naraw kif tibgħatha lill-plejer.
Aħna mhux se nikkunsidraw l-sfumaturi kollha tat-tqegħid tal-komponent tal-plejer fuq l-iskrin tal-applikazzjoni (tista 'tħares lejn l-eżempji fuq il-websajt tal-proġett jew fil-kodiċi), aħna se nħarsu biss lejn kif tibda tilgħab vidjo minn YouTube fil-player fuq l-indirizz riċevut hawn fuq:
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);
}
}
Kwistjonijiet Magħrufa
Mhux se tilgħab vidjows b'restrizzjonijiet ta 'età li jeħtieġu login fil-kont tiegħek Google/YouTube
parir: żid tali vidjows mal-lista sewda jew staqsi lill-awtur tal-vidjo biex ineħħi r-restrizzjoni li ġiet stabbilita bi żball.
Xi vidjows tax-xandir li għalihom is-servizz jirritorna tul żero mhux se jintlagħbu (għal vidjows bħal dawn, it-tul fil-listi u fil-gallerija huwa mmarkat bħala “[dur undef]”).
Jekk tiltaqa 'ma' vidjo pubbliku li ma jeħtieġx login, jilgħab fil-browser, iżda ma jilgħabx fil-player, ibgħat rapport tal-bug (huwa pjuttost possibbli li l-problema tkun diġà ġiet irranġata fil-verżjoni l-ġdida NewPipeExtractor u ser ikollok bżonn biss taġġorna l-assemblaġġ b'din il-verżjoni, per eżempju).
L-interface tista' tnaqqas jekk l-Internet ikun bil-mod (iżda mhux mitfi)
Bħala riżultat,
Ibni mċaqlaq minn tablet għal smart TV Samsung, li ma jistax iħaddem applikazzjonijiet Android. Għalhekk, l-aħjar kontroll tal-ġenituri għadu personali.
Iżda l-applikazzjoni rriżulta li kienet konvenjenti biżżejjed biex nibda nużaha jien. L-ewwel impressjoni mill-verżjonijiet tax-xogħol bikrija kienet li kont f'dinja oħra. Il-kontenut kollu jitniżżel minn YouTube, iżda dan m'għadux YouTube, iżda xi ħaġa oħra, sigura u kkontrollata, bħallikieku ħarġet ċentipede minn għajnejk u poġġih ġo vażett tal-ħġieġ. U huwa kollu dwar ir-rakkomandazzjonijiet.