Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?)

Танилцуулга богино байна: Би Android-д зориулсан YouTube онлайн тоглуулагчийн талаар орон нутгийн тоглуулах жагсаалт, суваг, зөвлөмжийн талаар ярихыг хүсч байна.

Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?)

Өргөтгөсөн танилцуулга:
Хэсэг хугацааны өмнө би гайхалтай програм зохиогчтой яг ижил асуудалтай тулгарсан Сувгийн цагаан жагсаалт, мөн өөртөө яг ижил хандлагыг тодорхойлсон: Би хүүхэддээ үе үе хүүхэлдэйн кино бүхий таблет эсвэл ухаалаг гар утсыг өгөхийг хүсч байгаа ч 2-3 товшилтын дараа жагсаалт хаана байгаа нь надад огтхон ч сэтгэл хангалуун бус байна. стандарт програмууд дахь зөвлөмжийн - YouTube-ийн үйлчлүүлэгчид - хүүхдийг авдаг.

Харамсалтай нь Channel Whitelist програмыг суулгасны дараа өөр нэг гайхалтай, гэхдээ үхлийн аюултай дутагдал илэрсэн - NIH I (мөн хамгийн чухал нь миний хүү) интерфэйс нь тийм ч тохиромжтой биш, ялангуяа YouTube Kids тоглуулагчийг ашиглах зуршилтай болсон.

Ерөнхийдөө хэсэг хугацааны дараа би өөрийнхөө хэрэгжилтийг хийхэд бэлэн болсон. Хэсэг хугацааны дараа анхны хувилбар дээр шошго тавих боломжтой болсон.

Гол давуу талууд:

  • Дуртай суваг, тоглуулах жагсаалтаа нэмээрэй - тэдгээрийг дотоод мэдээллийн санд хадгалж, индексжүүлэх болно
  • Нэмэгдсэн тоглуулах жагсаалт дотроос шаардлагагүй видеонуудыг хэрэггүй бол унтраа
  • Зөвлөмжийн жагсаалтыг зөвхөн програмд ​​нэмсэн суваг, тоглуулах жагсаалтаас санамсаргүй байдлаар үүсгэнэ

Нээлттэй эх сурвалж, GPLv3 лиценз: https://github.com/sadr0b0t/yashlang/

Доорх нь үндсэн функцүүдийн тойм, мөн Google API болон вэб боодол ашиглахгүйгээр Android програм дээрээ YouTube-ийн видеог хэрхэн тоглуулах талаар техникийн зарим дэлгэрэнгүй мэдээллийг доор харуулав.

Үндсэн дэлгэц болон тоглуулагчийн дэлгэц дээр: санамсаргүй бус сувгуудын санамсаргүй зөвлөмжүүд

Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?)

Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?)

Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?)

Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?)

Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?)

Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?)

Орон нутгийн мэдээллийн санд шуурхай хайлт хийх

Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?) => Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?)

Шинэ суваг эсвэл тоглуулах жагсаалт нэмнэ үү

Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?) Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?) Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?) Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?)

Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?) Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?) Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?) Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?)

Онлайнаар нэрээр нь хайх эсвэл мэдэгдэж буй хаягийг оруулна уу. Суваг эсвэл тоглуулах жагсаалтын видеоны жагсаалтыг локал мэдээллийн санд хадгалсан бөгөөд дүрсийг кэшдээгүй.

Динамик тоглуулах жагсаалт - хайлтын үр дүнг тоглуулах

Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?) Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?) => Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?)

Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?)

Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?)

Видеоны зөвлөмжид зөвхөн хайлтын асуулгад нийцсэн видеонууд байх болно.

Үүний нэгэн адил, хэрэв та тоглуулах жагсаалтын тохиргооноос видеог нээвэл зөвлөмжийн жагсаалтад зөвхөн ижил тоглуулах жагсаалтын видеонууд гарч ирнэ.

Тоглуулах жагсаалт болон сувгийг түр унтрааж, дахин асаах боломжтой

Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?) Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?) Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?) Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?)

Анхаарна уу: идэвхгүй тоглуулах жагсаалтын видеонууд хайлтын илэрц, үзсэн түүх болон дуртай жагсаалтаас алга болно. Гэхдээ санаа зовох хэрэггүй, тоглуулах жагсаалтыг дахин асаасан даруйд тэд тэнд дахин гарч ирэх болно.

Хар жагсаалтад видео нэмнэ үү

Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?) Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?) Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?)

Хаагдсан видео нь зөвлөмж, хайлтын үр дүнд харагдахгүй бөгөөд дуртай зүйлсийн жагсаалт болон үзсэн түүхээс алга болно. Видео тоглуулах жагсаалтын тохиргоонд харагдсан хэвээр байх болно.

Хар жагсаалтыг харж, алдаагаар блоклосон зүйлсийг дахин идэвхжүүлнэ үү:
Тохиргоо > толгой цэс > Хар жагсаалт

Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?) Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?)

Дуртай видео, үзсэн түүх

Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?) Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?) Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?)

Тоглогчийн дэлгэц дээрх дуртай видеонууд баруун дээд буланд одоор тэмдэглэгдсэн байдаг.

Дэлгэцийн гарчиг дахь контекст цэс болон галерей болон жагсаалт дээр удаан дарна уу

Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?) Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?) Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?) Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?)

Видео эсвэл тоглуулах жагсаалтын нэр, хаягийг үзэх дэлгэц эсвэл дурын жагсаалтад хуулна уу.

Хурдан эхлүүлэх - санал болгосон суваг болон тоглуулах жагсаалтыг нэмнэ үү

Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?) Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?) => Кощейгийн үхэл нь зөвлөмжийн жагсаалтад орсон (YouTube-г тухтай, аюулгүй болгох боломжтой юу?)

Аппликешн нь дээрх дэлгэцийн агшин шиг шууд харагдах болно.

Шаардлагагүй суваг, тоглуулах жагсаалтыг тохиргооноос унтрааж эсвэл устгаж болно.

тохиргоо

Төслийн хуудас: https://github.com/sadr0b0t/yashlang/
Англи хэлэнд: https://github.com/sadr0b0t/yashlang/blob/master/README.en.md
хувилбарууд: https://github.com/sadr0b0t/yashlang/releases

  • Энэ нь Google Play дээр байхгүй бөгөөд ойрын ирээдүйд байхгүй болно (Google нь API-г давж, вэбсайтаа задлан шинжилдэг програмуудыг хориглодог, үүнд дурдсан Channel Whitelist эсвэл NewPipe тоглуулагч орно)
  • Эх сурвалжаас бүтээх: https://github.com/sadr0b0t/yashlang/
  • Хувилбарын хэсгээс apk татаж авах: https://github.com/sadr0b0t/yashlang/releases
  • Хэсэг хугацааны дараа каталогт гарч ирнэ гэж найдаж байна F-Droid (нэмэх хүсэлтийг зөвшөөрсөн бололтой, гэхдээ бараг нэг сарын турш цааш хөдөлсөнгүй), гэхдээ хараахан болоогүй байна

Нэг төхөөрөмж дээрх өөр өөр эх сурвалжаас өөр хувилбаруудын хооронд шилжих нь apk файлын өөр өөр гарын үсгийн улмаас ажиллахгүй гэдгийг санаарай; шинэ эх сурвалжаас хувилбарыг суулгахын өмнө та эхлээд суулгасан хувилбарыг өгөгдлийн хамт устгах хэрэгтэй болно. тоглуулах жагсаалтын кэш болон хайлтын түүх (эсвэл өгөгдлийг хэрхэн дамжуулах талаар олж мэдээрэй).

Техникийн дэлгэрэнгүй мэдээлэл

Google/YouTube бүртгэл шаардлагагүй, танд зөвхөн интернет хэрэгтэй, дараах сангуудыг ашигладаг.

  • NewPipeExtractor YouTube үйлчилгээнээс өгөгдөл хүлээн авах болон
  • exoplayer видео тоглуулах.

Нээлттэй эх сурвалж, үнэгүй GPLv3 лиценз.

Асуулт: Зохиогчийн зөвшөөрөлгүйгээр (эсвэл тодорхой хориглосноор) вэбсайтуудыг хусах нь ерөнхийдөө хууль ёсны юу? Google нь Google Play-с програмуудыг устгадаг, тэдгээрийн API ашигладаггүй, харин сайтаа задлан шинжилдэг, учир нь Тэд хэрэглэгчийн гэрээгээ зөрчиж байна.
Хариулт: Мэдээжийн хэрэг, энэ нь хууль ёсны бөгөөд олон нийтэд нээлттэй мэдээллийг уншихын тулд ямар хэрэгслийг ашиглах нь танд хамаарна. Цаашлаад: АНУ-ын шүүх вэбсайтыг хусахыг бүрэн хуульчилж, түүнд техникийн хөндлөнгөөс оролцохыг хориглов., гэхдээ Гул өөр бодолтой байж магадгүй; Би хувьдаа тэднийг итгүүлэхийн тулд Америкийн шүүхэд хандах хүсэл хараахан алга байна.

Зарим код

номын сан NewPipeExtractor - тоглогчийг дэмжих төсөл Newpipe, танд заасан суваг эсвэл тоглуулах жагсаалтад зориулсан видеоны жагсаалтыг татаж авах, алдартай видеоны талаарх дэлгэрэнгүй мэдээллийг (видеоны вэб хуудсанд харагдахуйц) татаж авах, видео дүрсний хаягийг авах, мөн видеоны хаягийг авах боломжийг олгоно. урсгал.

Тоглуулах жагсаалтыг ачаалах код нь бага зэрэг төвөгтэй тул би энд өгөхгүй, сонирхсон хүмүүс эх кодыг хараарай, энэ нь үндсэндээ анги юм. ContentLoader.

Нийтийн видео хуудасны хаягаас видео урсгалын хаягийг хэрхэн авч, тоглуулагч дээр тоглуулахыг харцгаая.

Номын санг холбоно уу
app/build.gradle

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

Үүний дараа та үүнийг ашиглах боломжгүй хэвээр байгаа нь сонин байна, учир нь ... жишээ нь Downloader ангийн алга болсон талаар гомдоллох болно. Үүнийг автоматжуулсан тестийн лавлахаас төсөл рүү хуулж болно NewPipeExtractor/extractor/src/test/java/org/schabi/newpipe/Downloader.java - 0.17.4 хувилбар дээр ажилладаг (энэ хэсгийг номын сангийн шинэ хувилбарт дахин хийсэн бололтой, гэхдээ бид шалгах шаардлагатай хэвээр байна).

YouTube вэбсайт дээрх видео хуудасны хаягаар видео урсгалын хаягийг авна уу:

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 видео хаяг нь YouTube вэбсайт дээрх аливаа видеоны хуудасны нийтийн хаяг байж болно, жишээлбэл https://www.youtube.com/watch?v=pd2RlatmNRk

Тоглогч болно exoplayer Google-ээс өөрөөс нь. Энэ бол YouTube дээрх вэб хуудас биш, харин уян хатан, өөрчлөх боломжтой аливаа видеог тоглуулах жинхэнэ суулгагдсан тоглуулагч юм. Хэрэв та зөв хаягийг зааж өгвөл энэ нь YouTube-ээс видео дамжуулалтыг тоглуулах боломжтой. Бид дөнгөж сая дамжуулалтын хаягийг хүлээн авсан тул үүнийг тоглуулагч руу хэрхэн илгээхийг харцгаая.

Төсөлд номын санг холбоно уу app/build.gradle:

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

Бид програмын дэлгэц дээр тоглуулагчийн бүрэлдэхүүн хэсгийг байрлуулах бүх нарийн ширийн зүйлийг авч үзэхгүй (та төслийн вэбсайт эсвэл код дээрх жишээг харж болно), бид зөвхөн YouTube-ээс видеог тоглуулагч дээр хэрхэн тоглуулж эхлэхийг л харах болно. дээр хүлээн авсан хаяг:

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

Мэдэгдэж буй асуудлууд

  • Таны Google/YouTube бүртгэлд нэвтрэх шаардлагатай насны хязгаарлалттай видеог тоглуулахгүй

Жишээ нь: Илья Муромец, Мосфильм кино концерн, Руслан, Людмила нар 1-р кино, Мосфильм кино концерн

Зөвлөмж: ийм видеог хар жагсаалтад оруулах эсвэл видеоны зохиогчоос алдаа гаргасан хязгаарлалтыг арилгахыг хүс.

  • Үйлчилгээ нь тэг уртыг буцаадаг зарим нэвтрүүлгийн видеог тоглуулахгүй (ийм видеонуудын жагсаалт болон галлерей дахь үргэлжлэх хугацааг “[dur undef]” гэж тэмдэглэсэн)

Жишээ нь: Хүлээгээрэй! "Союзмультфильм" HD киноны бүх дугаар (Хүүхдэд зориулсан хүүхэлдэйн кино), "Союзмультфильм" студийн хүүхэлдэйн кино, Шилдэг хүүхэлдэйн кинонууд "Союзмультфильм", "Союзмультфильм" студийн хүүхэлдэйн кино

зөвлөгөө: ийм видеог хар жагсаалтад нэмнэ үү.

  • Зөвхөн шууд линкээр дамжуулан авах боломжтой видеог та хэрэглэгчийн бүх видеог татаж авсан ч гэсэн орон нутгийн тоглуулах жагсаалтад оруулахгүй байж болно.

Жишээ нь: Галыг номхотгох нь 1-р анги, Мосфильм кино концерн

  • Хэрэв та нэвтэрч орох шаардлагагүй, хөтөч дээр тоглуулдаг боловч тоглуулагч дээр тоглуулдаггүй олон нийтийн видеотой таарвал алдааны тайланг илгээнэ үү (шинэ хувилбарт асуудал аль хэдийн засагдсан байж магадгүй юм. NewPipeExtractor мөн та зөвхөн энэ хувилбараар угсралтыг шинэчлэх хэрэгтэй болно. Жишээ нь).

  • Интернет удаан (гэхдээ унтраагаагүй) бол интерфэйс удааширч магадгүй.

Үүний үр дүнд,

Миний хүү таблетаас Андройд програм ажиллуулах боломжгүй Samsung ухаалаг зурагт руу шилжсэн. Тиймээс эцэг эхийн хамгийн сайн хяналт бол хувь хүн хэвээр байна.

Гэхдээ энэ програм нь надад үүнийг өөрөө ашиглаж эхлэхэд тохиромжтой байсан. Анхны ажлын хувилбаруудаас надад төрсөн анхны сэтгэгдэл бол би өөр ертөнцөд байсан юм. Бүх контентыг YouTube-ээс татаж авдаг, гэхдээ энэ нь YouTube байхаа больсон, харин нүднээсээ зуун настыг аваад шилэн саванд хийж байгаа мэт аюулгүй, хяналттай өөр зүйл юм. Мөн энэ бүхэн зөвлөмжийн тухай юм.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх