Nhanganyaya ipfupi: Ini ndinoda kutaura nezve YouTube online player ye Android ine emuno playlists, chiteshi uye kurudziro.
Sumo yakawedzerwa:
Imwe nguva yapfuura ndakasangana nedambudziko rakafanana nemunyori wekushandisa kunoshamisa
Nehurombo, mushure mekuisa iyo Channel Whitelist application, imwezve prosaic, asi ichiri inouraya chikanganiso chakawanikwa - NIH I (uye, zvinonyanya kukosha, mwanakomana wangu) yakaona chimiro chayo chisina kunyatsokunakira, kunyanya mushure metsika yekushandisa YouTube Vana mutambi.
Muzhinji, mushure menguva yakati ndakanga ndagadzirira kuita yangu yekuitwa. Mushure menguva yakati, zvakave zvinogoneka kuisa tag pakuburitswa kwekutanga.
Zvinhu zvakakosha:
- Wedzera zviteshi zvako zvaunofarira uye zvinyorwa zvekutamba - zvichachengetwa uye kurongedzerwa mudura renzvimbo
- Mukati mezvinyorwa zvekutamba zvakawedzerwa, dzima mavhidhiyo asina basa kana usingaade
- Rondedzero yekurudziro inogadzirwa zvisina tsarukano kubva kumachaneli uye playlists akawedzerwa kune application
Open source, GPLv3 rezinesi:
Pazasi pane mhedziso yeakakosha maficha mune zvakadzama, pamwe nehunyanzvi hwekuita ekutamba mavhidhiyo eYouTube mune yako Android application pasina kushandisa Google API nemawebhu wrappers.
Pachidzitiro chikuru uye pachiratidziro chevatambi: kurudziro isina kurongeka kubva kune isiri-random chiteshi
Kutsvaga chiriporipo mudura renzvimbo
Wedzera chiteshi chitsva kana playlist
Tsvaga nezita pamhepo kana kuisa kero inozivikanwa. Rondedzero yemavhidhiyo echiteshi kana playlist inochengetwa kudura renzvimbo; zvidhori hazvina kuchengetwa.
Dynamic playlist - tamba mhinduro dzekutsvaga
Muvhidhiyo kurudziro pachave nemavhidhiyo chete anogutsa mubvunzo wekutsvaga.
Saizvozvo, kana iwe ukavhura vhidhiyo kubva kune yekutamba marongero, chete mavhidhiyo kubva kune imwechete playlist anozoonekwa mune rondedzero yekurudziro.
Playlists uye zviteshi zvinogona kudzimwa kwenguva pfupi uye zvakare
Ndokumbira utarise: mavhidhiyo kubva kune akaremara playlist anozonyangarika kubva pamibairo yekutsvaga, nhoroondo yekuona uye kubva kune yaunofarira runyorwa. Asi usazvinetse, ivo vachaonekwa ipapo zvakare pakarepo mushure mekunge playlist yavhurwa zvakare.
Wedzera vhidhiyo kune blacklist
Vhidhiyo yakavharwa haizoratidzirwe mukurudziro, mumibairo yekutsvaga, uye inonyangarika kubva pane rondedzero yevanoda uye kubva munhoroondo yekuona. Vhidhiyo icharamba ichionekwa mumaseting ekutamba.
Wona iyo blacklist uye wogonesa zvakare zvinhu zvakavharika nekukanganisa:
Settings > header menu > Blacklist
Anofarira mavhidhiyo uye nhoroondo yekuona
Mavhidhiyo aunofarira pachiratidziro chevatambi akanyorwa neasterisk mukona yekurudyi.
Mamenu emukati mumusoro wescreen uye tinya-refu mumagalari uye zvinyorwa
Kopa zita kana kero yevhidhiyo kana playlist mubhurawuza screen kana chero runyorwa.
Kurumidza kutanga - wedzera zvinokurudzirwa zviteshi uye playlists
Iyo application ichakurumidza kutaridzika senge skrini iri pamusoro.
Zviteshi zvisina kudikanwa uye playlists zvinogona kudzimwa kana kudzimwa muzvirongwa.
Kuiswa
Peji yeprojekiti:
muchirungu:
zvinoburitswa:
- Haisi paGoogle Play uye haizove munguva pfupi iri kutevera (Google inorambidza zvikumbiro zvinodarika iyo API uye ongorora webhusaiti yavo, kusanganisira yakataurwa Channel Whitelist kana NewPipe mutambi)
- Kuvaka kubva kunzvimbo:
https://github.com/sadr0b0t/yashlang/ - Dhawunirodha apk kubva kuchikamu chekuburitsa:
https://github.com/sadr0b0t/yashlang/releases - Ndinovimba ichaonekwa mukatalogi mushure menguva yakati
F-Droid (chikumbiro chekuwedzera chinoita sechinobvumidzwa , asi haisati yaenderera mberi kweinenge mwedzi), asi haisati yasvika
Ramba uchifunga kuti kushandura pakati peshanduro dzakasiyana kubva kwakasiyana masosi pachigadzirwa chimwe chete hazvishande nekuda kwemasiginecha akasiyana eiyo apk faira; usati waisa iyo vhezheni kubva kune nyowani sosi, iwe unozotanga wadzima iyo yakaiswa vhezheni pamwe nedata - iyo playlist cache uye nhoroondo yekubhurawuza (kana tsvaga nzira yekufambisa data).
Unyanzvi ruzivo
Izvo hazvidi iyo Google/YouTube account, iwe unongoda iyo Internet, inoshandisa anotevera maraibhurari:
NewPipeExtractor kugamuchira data kubva kuYouTube sevhisi uyeexoplayer kutamba vhidhiyo.
Vhura sosi, yemahara GPLv3 rezinesi.
mubvunzo: Zviri pamutemo here kukwenya mawebhusaiti pasina mvumo (kana nekurambidzwa kwakajeka) kubva kuvanyori?
mhinduro: hongu, zviri pamutemo, zviri kwauri kuti ndechipi chishandiso chekushandisa kuverenga ruzivo rwunowanikwa pachena. Uyezve:
Imwe kodhi
raibhurari
Iyo kodhi yekurodha playlist idiki, saka ini handisi kuzopa pano, kune avo vanofarira, tarisa iyo sosi kodhi, ikirasi.
Ngationei kuti tingawana sei kero yevhidhiyo kuyerera kubva kukero yepeji yevhidhiyo yeruzhinji uye kuiridza mumutambi.
Batanidza raibhurari ku
dependencies {
...
// NewPipe: youtube parser
// https://github.com/TeamNewPipe/NewPipeExtractor
implementation "com.github.TeamNewPipe:NewPipeExtractor:v0.17.4"
...
}
Zvinoda kuziva kuti mushure meizvi hauchakwanisa kuishandisa, nekuti ... mienzaniso ichanyunyuta pamusoro pekushayikwa Downloader kirasi. Inogona kukopwa kupurojekiti kubva kune otomatiki bvunzo dhairekitori
Tora kero yerukova rwevhidhiyo nekero yevhidhiyo peji pawebhusaiti yeYouTube:
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;
}
Iyo vhidhiyo kero ytVidUrl inogona kuve kero yeruzhinji yepeji yechero vhidhiyo pawebhusaiti yeYouTube, semuenzaniso.
Mutambi achava
Batanidza raibhurari kupurojekiti
dependencies {
...
// google Exoplayer
// https://github.com/google/ExoPlayer
// https://exoplayer.dev/
implementation 'com.google.android.exoplayer:exoplayer:2.10.8'
...
}
Isu hatizotarise ese nuances yekuisa chikamu chemutambi pachiratidziro chekushandisa (unogona kutarisa mienzaniso pane webhusaiti yeprojekiti kana mukodhi), isu tichangotarisa maitiro ekutanga kutamba vhidhiyo kubva kuYouTube mune mutambi pa. kero yakagamuchirwa pamusoro:
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);
}
}
Nyaya Dzinozivikanwa
- Haisi kuzotamba mavhidhiyo ane zvirambidzo zvezera zvinoda kupinda muakaundi yako yeGoogle/YouTube
somuenzaniso:
zano: wedzera mavhidhiyo akadaro kune yakasviba kana bvunza munyori wevhidhiyo kuti abvise kurambidzwa kwakaiswa nekukanganisa.
- Mamwe mavhidhiyo ekutepfenyura ayo sevhisi inodzosera zero kureba haizotambwe (kunemavhidhiyo akadaro, nguva iri mumazita uye gallery inomakwa se[dur undef]”)
somuenzaniso:
zano: wedzera mavhidhiyo akadaro kune iyo blacklist.
- Mavhidhiyo anongowanikwa chete kuburikidza neakananga malink anogona kusaverengerwa mune yemuno playlist, kunyangwe ukadhawunirodha ese emushandisi mavhidhiyo.
somuenzaniso:
-
Kana iwe ukasangana nevhidhiyo yeruzhinji isingade kupinda mukati, inotamba mubrowser, asi isingatambe mumutambi, tumira mushumo webug (zvinogoneka kuti dambudziko rakatogadziriswa mushanduro itsva. NewPipeExtractor uye iwe unongoda kugadzirisa musangano neiyi vhezheni,
somuenzaniso ). -
Iyo interface inogona kudzikira kana iyo Internet inonoka (asi isina kudzimwa)
Somugumisiro,
Mwanakomana wangu akatama kubva pahwendefa kuenda kuSamsung smart TV, isingakwanise kumhanyisa Android application. Naizvozvo, kudzora kwakanakisisa kwavabereki kuchiri kwomunhu oga.
Asi application yacho yakazove yakanakira ini kuti nditange kuishandisa pachangu. Maonero ekutanga kubva kumashanduro ekutanga ekushanda aive ekuti ndaive mune imwe nyika. Zvese zvirimo zvinotorwa kubva kuYouTube, asi iyi haisisiri YouTube, asi chimwe chinhu, chakachengeteka uye chinodzorwa, sekunge wabvisa centipede muziso rako woiisa muchirongo chegirazi. Uye zvese zvinoenderana nemazano.
Source: www.habr.com