ProHoster > блог > интернет вести > Смртта на Кошчеи е на списокот со препораки (дали е можно да се направи YouTube пријатен и безбеден?)
Смртта на Кошчеи е на списокот со препораки (дали е можно да се направи YouTube пријатен и безбеден?)
Воведот е краток: сакам да зборувам за онлајн плеерот на YouTube за Android со локални плејлисти, канали и препораки.
Проширен вовед:
Пред некое време наидов на истиот проблем како авторот на прекрасна апликација Белата листа на канали, и за себе си го определив токму истиот став кон тоа: сакам одвреме-навреме да можам на моето дете да му подарувам таблет или паметен телефон со цртани филмови, но воопшто не сум задоволен од тоа каде по 2-3 клика е списокот на препораки во стандардни апликации - клиенти на YouTube - го зема детето.
За жал, по инсталирањето на апликацијата Channel Whitelist, беше откриен уште еден попрозаичен, но сепак фатален пропуст - NIH I (и што е најважно, мојот син) го најде својот интерфејс не многу удобен, особено по навиката да го користам плеерот YouTube Kids.
Во принцип, по некое време бев подготвен да направам сопствена имплементација. По некое време, стана можно да се стави ознака на првото издание.
Главни карактеристики:
Додадете ги вашите омилени канали и листи за репродукција - тие ќе бидат зачувани и индексирани во локалната база на податоци
Во додадените плејлисти, исклучете ги непотребните видеа ако не ви се потребни
Списокот со препораки се генерира по случаен избор само од канали и плејлисти додадени во апликацијата
Подолу е преглед на главните карактеристики подетално, плус некои технички детали за тоа како да репродуцирате видеа на YouTube во вашата апликација за Android без користење на Google API и веб обвивки.
На главниот екран и на екранот на плеерот: случајни препораки од неслучајни канали
Инстант пребарување во локалната база на податоци
=>
Додајте нов канал или плејлиста
Пребарајте по име онлајн или вметнете позната адреса. Списокот со видеа на канал или плејлиста е зачуван во локалната база на податоци; иконите не се кеширани.
Динамична плејлиста - репродуцирајте резултати од пребарувањето
=>
Во препораките за видео ќе има само видеа што го задоволуваат барањето за пребарување.
Слично на тоа, ако отворите видео од поставките на плејлистата, само видеата од истата плејлиста ќе се појават во списокот со препораки.
Плејлистите и каналите може привремено да се исклучат и повторно да се вклучат
Ве молиме имајте предвид: видеата од оневозможена плејлиста исто така ќе исчезнат од резултатите од пребарувањето, историјата на гледање и од списокот со омилени. Но, не грижете се, тие повторно ќе се појават таму веднаш откако листата за репродукција повторно ќе се вклучи.
Додадете видео на црната листа
Блокираното видео нема да се прикажува во препораките, во резултатите од пребарувањето и ќе исчезне од листата на омилени и од историјата на гледање. Видеото сепак ќе биде видливо во поставките на плејлистата.
Погледнете ја црната листа и повторно овозможете ставки блокирани по грешка: Поставки > мени за заглавие > Црна листа
Омилени видеа и историја на гледање
Омилените видеа на екранот на плеерот се означени со ѕвездичка во горниот десен агол.
Контекстните менија во насловот на екранот и долго кликнувајте во галериите и списоците
Копирајте го името или адресата на видео или плејлиста на екранот за гледање или во која било листа.
Брз почеток - додајте препорачани канали и плејлисти
=>
Апликацијата веднаш ќе изгледа како сликите од екранот погоре.
Непотребните канали и плејлисти може да се исклучат или избришат во поставките.
Не е на Google Play и нема да биде во блиска иднина (Гугл забранува апликации што го заобиколуваат API и ја анализираат нивната веб-страница, вклучително и споменатата бела листа на канали или плеерот NewPipe)
Имајте на ум дека префрлањето помеѓу различни верзии од различни извори на истиот уред нема да работи поради различни потписи на датотеката apk; пред да ја инсталирате верзијата од нов извор, прво ќе треба да ја избришете инсталираната верзија заедно со податоците - кешот на плејлистата и историјата на прелистување (или дознајте како да префрлите податоци).
Технички детали
Не бара сметка на Google/YouTube, потребен ви е само Интернет, ги користи следните библиотеки:
прашање: Дали е генерално легално да се бришат веб-локации без дозвола (или со експлицитна забрана) од авторите? Google ги отстранува апликациите од Google Play, кои не го користат нивното API, туку ги анализираат нивните сајтови, бидејќи тие го прекршуваат нивниот кориснички договор. одговор: се разбира, тоа е легално, зависи од вас која алатка да ја користите за да ги читате јавно достапните информации. Понатаму: Американскиот суд целосно го легализираше стругањето на веб-страниците и забрани техничко мешање во него., но Ѓул можеби има поинакво мислење; лично јас сè уште немам желба да одам на американски суд за да ги убедам.
Некој код
Библиотека NewPipeExtractor - проект за поддршка на играчи Newpipe, ви овозможува да преземете листа на видеа за одреден канал или плејлиста, да преземете детални информации за познато видео (што е видливо на веб-страницата на видеото), да ја добиете адресата на иконата за видео, а исто така да ја добиете адресата на видеото поток.
Кодот за вчитување на плејлистата е малку незгоден, затоа нема да го давам овде, за заинтересираните погледнете го изворниот код, во основа е класа ContentLoader.
Ајде да видиме како да ја добиеме адресата на видео-стрим од адресата на страницата за јавно видео и да ја пуштиме во плеерот.
Интересно е што после ова сè уште нема да можете да го користите, бидејќи ... Примерите ќе се жалат на исчезнатата класа на Downloader. Може да се копира во проектот од директориумот за автоматизирани тестови NewPipeExtractor/extractor/src/test/java/org/schabi/newpipe/Downloader.java - работи за верзијата 0.17.4 (се чини дека овој дел е преработен во понова верзија на библиотеката, но сепак треба да провериме).
Добијте ја адресата на видео-стримот по адресата на видео-страницата на веб-страницата на YouTube:
Играчот ќе биде егзоплеер од самиот Google. Ова не е веб обвивка преку YouTube, туку вистински вграден плеер за репродукција на какви било видеа, доста флексибилен и приспособлив. Може да репродуцира видео преноси од YouTube ако му ја дадете точната адреса. Само што ја добивме адресата за пренос, па да видиме како да ја испратиме до плеерот.
Ние нема да ги разгледаме сите нијанси за поставување на компонентата на плеерот на екранот на апликацијата (можете да ги погледнете примерите на веб-страницата на проектот или во кодот), ќе разгледаме само како да започнете да репродуцирате видео од YouTube во плеерот на адресата добиена погоре:
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);
}
}
Познати Проблеми
Нема да репродуцира видеа со старосни ограничувања за кои е потребно најавување на вашата сметка на Google/YouTube
совет: додајте такви видеа на црната листа или побарајте од авторот на видеото да го отстрани ограничувањето што е поставено по грешка.
Некои емитувани видеа за кои услугата враќа нула должина нема да се репродуцираат (за такви видеа, времетраењето во списоците и галеријата е означено како „[dur undef]“)
Ако наидете на јавно видео кое не бара најавување, се репродуцира во прелистувачот, но не се репродуцира во плеерот, испратете извештај за грешка (сосема е можно проблемот веќе да е решен во новата верзија NewPipeExtractor и ќе треба само да го ажурирате склопот со оваа верзија, на пример).
Интерфејсот може да се забави ако Интернетот е бавен (но не е исклучен)
Како резултат на тоа,
Мојот син се пресели од таблет на паметен телевизор Samsung, кој не може да работи со апликации за Android. Затоа, најдобрата родителска контрола е сепак лична.
Но, апликацијата се покажа како доволно удобна за да почнам да ја користам сам. Првиот впечаток од раните работни верзии беше дека сум во друг свет. Сите содржини се преземаат од YouTube, но ова веќе не е YouTube, туку нешто друго, безбедно и контролирано, како да сте извадиле стоногалка од окото и сте ја ставиле во стаклена тегла. И се е до препораките.