Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Giriş qısa: Android üçün lokal playlistlər, kanallar və tövsiyələrlə YouTube onlayn oyunçusu haqqında danışmaq istəyirəm.

Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Giriş ətraflı:
Bir müddət əvvəl mən yazıçı kimi mükəmməl tətbiqdə olduğu kimi eyni problemin qarşısına çıxdım. Channel Whitelist, və bu problemə gerçəkdən eyni münasibətim var: vaxt-və-vakti ilə uşağa planşet və ya smartfon verib cizgi filmləri göstərmək istəyirəm, amma 2-3 klikdən sonra standart YouTube müştərilərində uşağı hansı tövsiyələrə aparacağını heç cür qəbul etmirəm.

Təəssüf ki, Channel Whitelist tətbiqini quraşdırdıqdan sonra onun başqa bir daha prozaik, ancaq yenə də fatal bir çatışmazlığı aşkar olundu — NIH mənim (və, ən əsası, oğlumun) interfeysini, xüsusilə YouTube Kids oyuncusuna alışdıqdan sonra, çox rahat olmadı.

Ümumilikdə, bir müddət sonra öz icramı etmək üçün hazır oldum. Hələ bir müddət sonra ilk versiyaya etiket qoymaq mümkün oldu.

Əsas imkanlar:

  • Sevimli kanallarınızı və playlistlərinizi əlavə edin — onlar saxlanacaq və lokal bazada indekslənəcək.
  • Əlavə olunmuş playlistlərin içində, lazım olmayan videoları söndərə bilərsiniz.
  • Tövsiyə siyahısı yalnız tətbiqə əlavə olunmuş kanallardan və playlistlərdən təsadüfi olaraq generasiya edilir.

Mənbə kodları açıqdır, lisenziya GPLv3: https://github.com/sadr0b0t/yashlang/

Sonra əsas imkanların daha ətraflı icmalı, eləcə də, Andaroid tətbiqinizdə YouTube-dan video oynatmanın texniki detallarını təqdim edəcək.

Baş ekran və oyunçunun ekranında: təsadüfi tövsiyələr qeyri-təsadüfi kanallardan

Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Lokal bazada anlıq axtarış

Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) => Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Yeni kanal və ya playlist əlavə et

Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

İnternetdə adla axtarın və ya tanınmış adresi daxil edin. Kanalın və ya playlistin video siyahısı lokal bazaya saxlanılır, ikonlar keşlənmir.

Dinamik playlist — axtarış nəticələrini oynat

Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) => Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Videonun altında olan tövsiyələr yalnız axtarış sorğusuna cavab verən videolar olacaq.

Eyni şəkildə, əgər playlistin parametrlərindən bir videonu açsanız, tövsiyə siyahısında yalnız həmin playlistdakı videolar olacaq.

Playlistlər və kanallar müvəqqəti olaraq söndürülebilir və yenidən aktivləşdirilə bilər.

Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Qeyd edin: söndürüldüyü playlistdən olan videolar axtarış nəticələrindən, baxış tarixçəsindən və sevimlilər siyahısından da silinəcək. Lakin narahat olmayın, playlist yenidən aktivləşdirildikdən dərhal sonra orada təkrar görünəcək.

Videonu qara siyahıya əlavə et

Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Bloklanmış video tövsiyələrdə, axtarış nəticələrində görünməyəcək, sevimlilər siyahısından silinəcək və baxış tarixçəsindən itəcək. Video hələ də playlist parametrlərində görünəcək.

Qara siyahını nəzərdən keçirin və səhvən bloklanan elementləri yenidən aktivləşdirin:
Parametrlər > başlıqda menyu > Qara siyahı

Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Sevimli videolar və izləmə tarixçəsi

Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Pleyerdəki sevimli videolar sağ yuxarı küncdə ulduzla işarələnir.

Ekranın üstündə kontekst menyuları və qalereyalarda, siyahılarda uzun basma ilə açıla bilər.

Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Videonun və ya pleylistin adını və ünvanını izləmə ekranında və ya hər hansı bir siyahıda kopyalayın.

Tez başlanğıc — tövsiyə olunan kanalları və pleylistləri əlavə edin

Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) => Koshchey's Ölümü tövsiyə siyahısında (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Tətbiq dərhal yuxarıdakı ekran görüntülərində olduğu kimi görünəcək.

Lazımsız kanalları və pleylistləri parametrlərdə söndürə və ya silə bilərsiniz.

Quraşdırma

Layihə səhifəsi: https://github.com/sadr0b0t/yashlang/
ingilis dilində: https://github.com/sadr0b0t/yashlang/blob/master/README.en.md
buraxılışlar: https://github.com/sadr0b0t/yashlang/releases

Müxtəlif versiyalar arasında keçidin eyni cihazda mümkün olmayacağını nəzərə alın, çünki apk faylının imzaları fərqlidir; yeni mənbədən versiyanı quraşdırmadan əvvəl mövcud versiyanı silməli və məlumatları — pleylistlərin və izləmə tarixinin keşini — tamamilə silməlisiniz (ya da bu məlumatları necə ötürəcəyinizi fikirləşməlisiniz).

Texniki detallar

Google/YouTube hesabı tələb etmir, yalnız internet lazımdır; istifadə olunan kitabxanalar:

Açıq mənbə kodu, GPLv3 pulsuz lisenziyası.

sual: İcazəsiz (ya da açıq qadağanla) müəlliflərin saytlardan parçalaması qanunidirmi? Google, API-dən istifadə etməyən və saytlarını parçalayan tətbiqləri Google Play-dən silir, çünki onlar istifadəçi razılaşmasını pozur.cavab: əlbəttə ki, qanunidir; açıq məlumatı oxumaq üçün hansı alətdən istifadə etmək sizin işinizdir. Daha da:
ABŞ məhkəməsi saytların paralanmasını tamamilə qanuniləşdirmiş və texniki olaraq buna mane olmağı qadağan etmişdir , amma Google-in başqa bir fikri ola bilər; şəxsimdə hələ amerika məhkəməsinə gedib onları inandırmaq istəyi yoxdur.Bir az kod

— pleyer üçün köməkçi layihə

Kitabxana NewPipeExtractor NewPipe , müəyyən bir kanal və ya pleylist üçün video siyahısını yükləməyə, tanınmış bir videonun ətraflı məlumatını (videonun veb səhifəsində görünənləri) yükləməyə, video ikonunun ünvanını əldə etməyə və eyni zamanda video axınının ünvanını əldə etməyə imkan verir.Pleylist yükləmək üçün kod bir az mürəkkəbdir, ona görə burada onu verməyəcəyəm; maraqlananlar mənbələrə baxsın, əsasən bu,

ContentLoader sinifidir..

Gəlin, videonun açıq səhifəsindən video axını üçün ünvanı necə əldə edəcəyimizi və bunu pleyerdə necə oynatacağımızı baxaq.

Kitabı əlavə et
app/build.gradle

dependencies {
...
    // NewPipe: youtube parser
    // https://github.com/TeamNewPipe/NewPipeExtractor
    implementation "com.github.TeamNewPipe:NewPipeExtractor:v0.17.4"
...
}

Maraqlıdır ki, bundan sonra hələ də istifadə edə bilməyəcəksiniz, çünki nümunələr itkən Downloader sinfi səbəbindən xətalar verəcək. Bu sinfi avtomatik testlər kataloqundan layihəyə köçürə bilərsiniz. NewPipeExtractor/extractor/src/test/java/org/schabi/newpipe/Downloader.java — 0.17.4 versiyası üçün işləyir (görünür, kitabxananın daha yeni versiyasında bu hissə yenidən yazılıb, amma hələ də yoxlamaq lazımdır).

Youtube-da videonun səhifə ünvanı vasitəsilə video axını ünvanını alın:

app/src/main/java/su/sadrobot/yashlang/controller/ContentLoader.java

    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;
    }

Bir video ünvanı olaraq ytVidUrl, Youtube saytındakı istənilən videonun açıq səhifə ünvanı ola bilər, məsələn, https://www.youtube.com/watch?v=pd2RlatmNRk

Pleyer ExoPlayer Google-dan. Bu, Youtube-un üzərindəki veb qabıq deyil, istənilən videonu oynatmaq üçün tamamilə həqiqi inteqrasiya olunan pleyerdir, kifayət qədər çevik və konfiqurasiya edilə biləndir. Ayrıca, düzgün ünvan göstərildiyi təqdirdə Youtube-dan video axınlarını oynatmaq bacarığına malikdir. Təkcə axının ünvanını yeni əldə etdik, ona görə də onu pleyerə necə göndərəcəyimizi gözdən keçirək.

Layihəyə kitabxanını əlavə et app/build.gradle:

dependencies {
...
    // google Exoplayer
    // https://github.com/google/ExoPlayer
    // https://exoplayer.dev/
    implementation 'com.google.android.exoplayer:exoplayer:2.10.8'
...
}

Pleyer komponentinin tətbiq ekranında yerləşdirilməsi ilə bağlı bütün incəlikləri nəzərdən keçirməyəcəyik (layihə saytındakı nümunələrə və ya kodda baxa bilərsiniz), yalnız yuxarıda əldə olunan ünvan vasitəsilə Youtube-dan videonu pleyerdə necə oynatacağımıza baxacağıq:

app/src/main/java/su/sadrobot/yashlang/WatchVideoActivity.java

private void playVideoStream(final String streamUrl, final long seekTo) {
    if (streamUrl == null) {
        // cari halədə mövcud video dayandırılırsa
        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);

        // Köhnə videonu dayandırırıq, yeni video hazırlanarkən
        if (videoPlayerView.getPlayer().getPlaybackState() != Player.STATE_ENDED) {
            // Əgər burada dayandırırıqsa, pleyer özündə oynatmağı dayandırıbsa, bir daha STATE_ENDED hadisəsi alacağıq,
            // buna görə xüsusi yoxlama lazımdır.
            // Bu zaman getPlayWhenReady() dəyəri true qalacaq, ona görə də, məhz vəziyyəti yoxlayırıq.
            // https://github.com/google/ExoPlayer/issues/2272
            videoPlayerView.getPlayer().setPlayWhenReady(false);
        }

        // İzləməyi mənbə ilə hazırlayın.
        ((SimpleExoPlayer) videoPlayerView.getPlayer()).prepare(videoSource);

        // Videonu yüklədikdə cari mövqeyi dərhal verəcəyik
        // (şərhlərdə bəzi datayla bağlı şeylər yazılır, yükləmə zamanı seek əmrlərini dəstəkləyir ya dəstəkləmir,
        // görünür bu bir şeydir - sadəcə olaraq yükləndikdən sonra dərhal seek edirik)
        // Exoplayer yeni Playlist'i əvvəlindən başlayır, təqdim olunan mövqedən deyil
        // https://github.com/google/ExoPlayer/issues/4375
        // Arzu olunan mövqedə streaming necə yüklənir? #2197
        // https://github.com/google/ExoPlayer/issues/2197
        // burada normal müddət hələ əlçatan deyil, ona görə də, yoxlamırıq
        //if(seekTo > 0 && seekTo  0) {
            // 5 saniyə əvvələ
            videoPlayerView.getPlayer().seekTo(seekTo - 5000 > 0 ? seekTo - 5000 : 0);
        }
        videoPlayerView.getPlayer().setPlayWhenReady(true);
    }
}

Məşhur problemlər

  • Yaş məhdudiyyəti olan videolar, Google/YouTube hesabına giriş tələb edir, oynanmayacaq

məsələn: İlya Muromets, Mədəniyyət Firması "Mosfilm", Ruslan və Lyudmila 1-ci seriya / Ruslan and Lyudmila film 1, Mədəniyyət Firması "Mosfilm"

məsləhət: belə videoları qara siyahıya əlavə edin ya da müəllifdən səhvən qoyulmuş məhdudiyyətin aradan qaldırılmasını istəyin.

  • Müəyyən videoların yayımları, xidmətin sıfır uzunluq qaytardığı üçün oynanmayacaq (bu cür videoların uzunluğu siyahılarda və qalereyada "[dur undef]" olaraq qeyd olunur)

məsələn: Nuh, bütün seriyalar Soyuzmultfilm HD (Uşaq cizgi filmləri), Soyuzmultfilm studiosunun cizgi filmləri, Soyuzmultfilm cizgi filmlərinin toplu siyahısı, Soyuzmultfilm studiosunun cizgi filmləri

məsləhət: belə videoları qara siyahıya əlavə edin.

  • Yalnız birbaşa linklərlə əldə edilə bilən videolar, istifadəçinin bütün videolarını yüklədikdə yerli oynatma siyahısına düşə bilməz

məsələn: Odun zavalı 1-ci seriya, Mədəniyyət Firması "Mosfilm"

  • Əgər bir video varsa, o, qeyri-şəxsi video olur, hesabınız tələb olunmur, lakin brauzerdə oynayır, lakin pleyerdə oynanmır, qarışıq rapor göndərin (bu, yeni versiyada problem həll olunubsa, onda yalnız o versiyanı yeniləmək lazım olacaq, NewPipeExtractor və yalnız o versiya ilə yenilənmək lazımdır, məsələn).

  • İnterfeys yavaş (amma bağlı olmayan) internetdə zəif işləyə bilər.

Nəticədə

Oğlum planşetdən Android tətbiqlərini işlətməyən Samsung smart tv-yə keçdi. Buna görə də, ən yaxşı valideyn nəzarəti hələ də şəxsidir.

Amma tətbiq kifayət qədər rahatdır ki, özüm də istifadə etməyə başladım. Əvvəlki versiyalardan olan ilk təəssürat — başqa bir dünyaya keçmişəm. Bütün məzmun YouTube-dan yüklənir, amma bu artıq YouTube deyil, fərqli, təhlükəsiz və idarə olunan bir şeydir, sanki gözümün içinə qaraqabaq mənzərə qoyulub və onu şüşə bankaya yerləşdirmişəm. Burada işin mərkəzində məsləhətlər dayanır.

Mənbə: habr.com

DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər 🔥 DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər | ProHoster