Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Giriş qısadır: Android üçün yerli çalğı siyahıları, kanalları və tövsiyələri olan YouTube onlayn pleyerindən danışmaq istəyirəm.

Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Genişləndirilmiş giriş:
Bir müddət əvvəl gözəl bir tətbiqin müəllifi ilə eyni problemlə qarşılaşdım Kanal Ağ Siyahısı, və özüm üçün eyni münasibəti təyin etdim: övladıma vaxtaşırı cizgi filmləri olan planşet və ya smartfon hədiyyə etmək istəyirəm, amma 2-3 klikdən sonra siyahının harada olması məni heç də qane etmir. standart tətbiqlərdə tövsiyələrin - YouTube müştəriləri - uşağı götürür.

Təəssüf ki, Channel Whitelist tətbiqini quraşdırdıqdan sonra daha bir prozaik, lakin hələ də ölümcül qüsur aşkar edildi - NIH I (və ən əsası oğlum) interfeysini, xüsusən də YouTube Kids pleyerindən istifadə etmək vərdişindən sonra o qədər də əlverişli olmadığını tapdı.

Ümumiyyətlə, bir müddət sonra mən öz tətbiqimi etməyə hazır idim. Bir müddət sonra ilk buraxılışa etiket qoymaq mümkün oldu.

Əsas xüsusiyyətlər:

  • Sevimli kanallarınızı və çalğı siyahılarınızı əlavə edin - onlar yerli verilənlər bazasında saxlanacaq və indeksləşdiriləcək
  • Əlavə edilmiş pleylistlərdə, ehtiyacınız yoxdursa, lazımsız videoları söndürün
  • Tövsiyələrin siyahısı yalnız proqrama əlavə edilmiş kanallar və çalğı siyahılarından təsadüfi olaraq yaradılır

Açıq mənbə, GPLv3 lisenziyası: https://github.com/sadr0b0t/yashlang/

Aşağıda daha ətraflı əsas funksiyaların icmalı, üstəgəl Google API və veb paketlərindən istifadə etmədən Android tətbiqinizdə YouTube videolarını necə oynatmaq barədə bəzi texniki təfərrüatlar verilmişdir.

Əsas ekranda və oyunçu ekranında: təsadüfi olmayan kanallardan təsadüfi tövsiyələr

Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Yerli verilənlər bazasında ani axtarış

Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) => Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Yeni kanal və ya pleylist əlavə edin

Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Onlayn adla axtarın və ya məlum ünvanı daxil edin. Kanalın və ya pleylistin videolarının siyahısı yerli verilənlər bazasında saxlanılır.

Dinamik pleylist - axtarış nəticələrini oynayır

Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) => Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Video tövsiyələrində yalnız axtarış sorğusunu təmin edən videolar olacaq.

Eynilə, pleylist parametrlərindən video açsanız, tövsiyələr siyahısında yalnız eyni pleylistdən olan videolar görünəcək.

Pleylistlər və kanallar müvəqqəti olaraq söndürülə və yenidən yandırıla bilər

Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Nəzərə alın: əlil pleylistdəki videolar da axtarış nəticələrindən, baxış tarixçəsindən və sevimlilər siyahısından silinəcək. Ancaq narahat olmayın, onlar pleylist yenidən işə salındıqdan dərhal sonra orada yenidən görünəcəklər.

Qara siyahıya video əlavə edin

Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshcheinin ölümü tövsiyələr siyahısındadır (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östərilməyəcək və sevimlilər siyahısından və baxış tarixçəsindən silinəcək. Video hələ də pleylist parametrlərində görünəcək.

Qara siyahıya baxın və səhvən bloklanmış elementləri yenidən aktivləşdirin:
Parametrlər > başlıq menyusu > Qara siyahı

Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Sevimli videolar və baxış tarixçəsi

Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Pleyer ekranındakı sevimli videolar yuxarı sağ küncdə ulduz işarəsi ilə qeyd olunur.

Ekran başlığında kontekst menyuları və qalereyalarda və siyahılarda uzun klikləyin

Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?)

Baxış ekranında və ya hər hansı siyahıda video və ya pleylistin adını və ya ünvanını kopyalayın.

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

Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) Koshcheinin ölümü tövsiyələr siyahısındadır (YouTube-u rahat və təhlükəsiz etmək mümkündürmü?) => Koshcheinin ölümü tövsiyələr siyahısındadır (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əri kimi görünəcək.

Lazımsız kanallar və çalğı siyahıları parametrlərdə söndürülə və ya silinə bilər.

Quraşdırma

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

Yadda saxlayın ki, eyni cihazda müxtəlif mənbələrdən fərqli versiyalar arasında keçid apk faylının fərqli imzalarına görə işləməyəcək, versiyanı yeni mənbədən quraşdırmadan əvvəl ilk növbədə quraşdırılmış versiyanı məlumatlarla birlikdə silməlisiniz; pleylist önbelleği və baxış tarixçəsi (və ya məlumatların necə ötürüləcəyini anlayın).

Texniki detallar

Google/YouTube hesabı tələb etmir, yalnız İnternetə ehtiyacınız var, aşağıdakı kitabxanalardan istifadə edir:

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

Sual: Müəlliflərin icazəsi olmadan (və ya açıq qadağa ilə) veb saytları qırmaq ümumiyyətlə qanunidirmi? Google tətbiqləri Google Play-dən silirAPI istifadə etməyən, lakin saytlarını təhlil edən, çünki istifadəçi müqavilələrini pozurlar.
cavab: təbii ki, qanunidir, açıq məlumatı oxumaq üçün hansı alətdən istifadə etmək sizə bağlıdır. Bundan əlavə: ABŞ məhkəməsi veb saytın qırılmasını tamamilə qanuniləşdirdi və ona texniki müdaxiləni qadağan etdi., amma Gülün şəxsən fərqli fikri ola bilər, mənim onları razı salmaq üçün hələlik Amerika məhkəməsinə müraciət etmək istəyim yoxdur.

Bəzi kod

kitabxana NewPipeExtractor - oyunçu dəstəyi layihəsi YeniPipe, müəyyən bir kanal və ya pleylist üçün videoların siyahısını endirməyə, məşhur video haqqında ətraflı məlumatı (videonun veb səhifəsində görünənləri) endirməyə, video işarəsinin ünvanını əldə etməyə, həmçinin videonun ünvanını əldə etməyə imkan verir. axın.

Çalğı siyahısını yükləmək üçün kod bir az çətindi, ona görə də burada verməyəcəyəm, maraqlananlar üçün mənbə koduna nəzər salın, bu, əsasən bir sinifdir ContentLoader.

Gəlin ümumi video səhifəsinin ünvanından video axınının ünvanını necə əldə edəcəyimizi və onu pleyerdə oynatmağı görək.

Kitabxananı birləşdirin
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 itkin Downloader sinfindən şikayət edəcək. O, avtomatlaşdırılmış testlər kataloqundan layihəyə kopyalana bilər NewPipeExtractor/extractor/src/test/java/org/schabi/newpipe/Downloader.java - 0.17.4 versiyası üçün işləyir (görünür, bu hissə kitabxananın daha yeni versiyasında yenidən işlənib, lakin hələ də yoxlamaq lazımdır).

YouTube saytındakı video səhifəsinin ünvanı ilə video axınının ünvanını əldə edin:

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

ytVidUrl video ünvanı YouTube saytında hər hansı bir videonun səhifəsinin ümumi ünvanı ola bilər, məsələn https://www.youtube.com/watch?v=pd2RlatmNRk

Oyunçu olacaq ekzoplayer Google-un özündən. Bu, YouTube üzərindən veb paketi deyil, hər hansı bir videonu oynamaq üçün olduqca çevik və fərdiləşdirilə bilən real quraşdırılmış oyunçudur. Düzgün ünvan təqdim etsəniz, o, həmçinin YouTube-dan video axınlarını oynata bilər. Biz indicə axın ünvanını aldıq, gəlin onu oyunçuya necə göndərəcəyimizi görək.

Kitabxananı layihəyə qoşun app/build.gradle:

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

Oyunçu komponentinin tətbiq ekranında yerləşdirilməsinin bütün nüanslarını nəzərdən keçirməyəcəyik (layihənin veb saytında və ya kodda nümunələrə baxa bilərsiniz), biz yalnız pleyerdə YouTube-dan video oynatmağa necə başlayacağımıza baxacağıq. yuxarıda alınan ünvan:

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

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

Məlum məsələlər

  • Google/YouTube hesabınıza giriş tələb edən yaş məhdudiyyətləri olan videoları oynatmayacaq

məsələn: İlya Muromets, Mosfilm Kino Konserni, Ruslan və Lyudmila film 1, Mosfilm Kino Konserni

məsləhət: belə videoları qara siyahıya əlavə edin və ya videonun müəllifindən səhvən qoyulmuş məhdudiyyəti aradan qaldırmağı xahiş edin.

  • Xidmətin sıfır uzunluğu qaytardığı bəzi yayım videoları oynatılmayacaq (belə videolar üçün siyahılar və qalereyadakı müddət “[dur undef]” kimi qeyd olunur)

məsələn: Gözləyin! Soyuzmultfilm HD-nin bütün buraxılışları (Uşaqlar üçün cizgi filmləri), Soyuzmultfilm studiyasından cizgi filmləri, Ən yaxşı cizgi filmləri Soyuzmultfilm, Soyuzmultfilm studiyasından cizgi filmləri

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

  • Yalnız birbaşa keçidlər vasitəsilə əldə edilə bilən videolar, istifadəçinin bütün videolarını endirsəniz belə, yerli pleylistə daxil edilə bilməz.

məsələn: Yanğın əhliləşdirilməsi Epizod 1, Mosfilm Kino Konserni

  • Giriş tələb etməyən, brauzerdə oynayan, lakin pleyerdə oynatılmayan ictimai videoya rast gəlsəniz, səhv hesabatı göndərin (tam mümkündür ki, problem yeni versiyada artıq həll olunub. NewPipeExtractor və yalnız bu versiya ilə montajı yeniləməlisiniz, məsələn).

  • İnternet yavaşdırsa (lakin söndürülməyib) interfeys yavaşlaya bilər.

Nəticədə,

Oğlum planşetdən Android proqramlarını işlədə bilməyən Samsung smart televizoruna keçdi. Buna görə də, ən yaxşı valideyn nəzarəti hələ də şəxsidir.

Ancaq tətbiq mənim özüm istifadə etməyə başlamaq üçün kifayət qədər rahat oldu. İlk iş versiyalarından ilk təəssürat başqa bir dünyada olduğum idi. Bütün məzmun YouTube-dan endirilir, lakin bu, artıq YouTube deyil, başqa bir şeydir, təhlükəsiz və idarə olunan bir şeydir, sanki gözündən qırxayaq çıxarıb şüşə qaba qoyursan. Və hər şey tövsiyələrə aiddir.

Mənbə: www.habr.com

DDoS mühafizəsi, VPS VDS serverləri olan saytlar üçün etibarlı hostinq alın 🔥 DDoS qorunması, VPS VDS serverləri ilə etibarlı veb sayt hostinqi alın | ProHoster