Вступление коротко: хочу рассказать про онлайн плеер Ютюб для Андроида с локальными плейлистами, каналами и рекомендациями.  Некоторое время назад я столкнулся ровно с такой проблемой, как и автор замечательного приложения Channel Whitelist, и определил для себя к ней ровно такое же отношение: я хочу иметь возможность время от времени давать ребенку планшет или смартфон с мультиками, но меня совершенно не устраивает, куда через 2-3 клика заводит ребенка список рекомендаций в стандартных приложениях — клиентах Ютюб. К сожалению, после установки приложения Channel Whitelist уже у него был обнаружен другой более прозаичный, но всё равно фатальный недостаток — NIH мне (и, главное, сыну) показался не очень удобным его интерфейс, особенно после привычки использовать плеер YouTube Kids. В общем, еще через некоторое время я созрел, чтобы сделать свою реализацию. Еще через некоторое время стало возможным поставить тег на первый релиз. Основные возможности: Исходники открыты, лицензия GPLv3: https://github.com/sadr0b0t/yashlang/ Дальше обзор основных возможностей более подробно, плюс немного технических подробностей о том, как играть видео с Ютюб в вашем приложении на Андроид без использования АПИ Гугл и веб-оберток.        =>          Искать по имени онлайн или вставить известный адрес. Список роликов канала или плейлиста сохраняется в локальную базу, иконки не кэшируются.   =>    В рекомендациях под видео будут только ролики, удовлетворяющие поисковому запросу. Аналогичным образом, если открыть видео из настроек плейлиста, в списке рекомендаций будут только ролики из этого же плейлиста.     Обратите внимание: ролики из выключенного плейлиста исчезнут также из результатов поиска, истории просмотров и из списка любимых. Но не стоит переживать, они опять появятся там сразу после того, как плейлист будет снова включен.    Заблокированный ролик не будет отображаться в рекомендациях, в результатах поиска, исчезнет из списка любимых и из истории просмотров. Ролик всё еще будет виден в настройках плейлиста. Просмотреть черный список и снова включить элементы, заблокированные по ошибке:
Настройки > меню в заголовке > Черный список      Любимые ролики на экране плеера отмечаются звёздочкой в правом верхнем углу.     Копировать имя или адрес видео или плейлиста в экране просмотра или в любом списке.   =>  Приложение сразу станет выглядеть так, как на скриншотах выше. Ненужные каналы и плейлисты можно выключить или удалить в настройках. Страница проекта: https://github.com/sadr0b0t/yashlang/
на английском языке: https://github.com/sadr0b0t/yashlang/blob/master/README.en.md
релизы: https://github.com/sadr0b0t/yashlang/releases Имейте ввиду, что переключаться между разными версиями из разных источников на одном устройстве не получится из-за разных подписей файла apk, перед установкой версии из нового источника придется установленную версию сначала удалить вместе с данными — кэшем плейлистов и историей просмотров (или придумать, как эти данные перенести). Не требует аккаунт Гугл/Ютюб, нужен только интернет, использует библиотеки: Открытый исходный код, свободная лицензия GPLv3. вопрос: Парсить сайты без разрешения (или с явным запретом) авторов вообще законно? Гугл удаляет из Гугл-плея приложения, которые не используют их API, а парсят их сайты, т.к. они нарушают их пользовательское соглашение.
ответ: конечно, законно, это ваше дело, какой инструмент использовать для чтения общедоступной информации. Больше того: Суд США полностью легализовал скрапинг сайтов и запретил ему технически препятствовать, но у Гула может быть другое мнение, лично у меня пока нет желания отправляться в американский суд их переубеждать. Библиотека NewPipeExtractor — вспомогательный проект плеера NewPipe, позволяет загружать список роликов для указанного канала или плейлиста, загружать подробную информацию об известном видео (то, что видно на веб-странице ролика), получать адрес иконки видео, а так же получать адрес потока видео. Код для загрузки плейлиста немного громоздкий, поэтому здесь приводить его не буду, кому интересно — загляните в исходники, в основном это класс ContentLoader. Посмотрим, как получить адрес потока видео по адресу публичной странички видео и играть его в плеере. Подключить библиотеку в
app/build.gradle Любопытно, что после этого ее всё равно не получится использовать, т.к. примеры будут ругаться на недостающий класс Downloader. Его можно скопировать в проект из каталога автоматических тестов NewPipeExtractor/extractor/src/test/java/org/schabi/newpipe/Downloader.java — работает для версии 0.17.4 (похоже, что в более новой версии библиотеки эта часть была переделана, но нужно еще проверить). Получить адрес потока видео по адресу странички видео на сайте Ютюб: app/src/main/java/su/sadrobot/yashlang/controller/ContentLoader.java В качестве адреса видео ytVidUrl может быть публичный адрес странички любого видео на сайте Ютюб, например https://www.youtube.com/watch?v=pd2RlatmNRk Плеер будет ExoPlayer от самой Google. Это не веб-обертка над Ютюб, а самый настоящий встраиваемый плеер для проигрывания любых видеороликов, достаточно гибкий и настраиваемый. В том числе умеет играть потоки видео с Ютюба, если указать ему правильный адрес. Адрес потока мы получили только что, поэтому посмотрим, как его отправить в плеер. Подключить библиотеку в проект app/build.gradle: Все нюансы размещения компонента плеера на экране приложения рассматривать не будем (можете посмотреть в примерах на сайте проекта или в коде), посмотрим только на то, как запустить проигрывание видео с Ютюба в плеере по полученному выше адресу: app/src/main/java/su/sadrobot/yashlang/WatchVideoActivity.java например: Илья Муромец, Киноконцерн "Мосфильм", Руслан и Людмила 1-ая серия / Ruslan and Lyudmila film 1, Киноконцерн "Мосфильм" совет: добавлять такие ролики в черный список или попросить автора ролика снять ограничение, выставленное по ошибке. например: Ну Погоди! Все Выпуски Союзмультфильм HD (Мультики для детей), Мультики студии Союзмультфильм, Топ мультиков Союзмультфильм, Мультики студии Союзмультфильм совет: добавлять такие ролики в черный список. например: Укрощение огня 1 серия, Киноконцерн "Мосфильм" Если встретите публичный ролик, который не требует логин, играет в браузере, но не играет в плеере, присылайте баг-репорт (вполне возможно, проблема уже исправлена в новой версии NewPipeExtractor и нужно будет только обновить сборку с этой версией, например). Интерфейс может подтормаживать при медленном (но не выключенном) интернете Сын переехал с планшета на смарт-тв Самсунг, который не умеет запускать приложения Андроид. Поэтому лучший родительский контроль — всё равно личный. Но приложение получилось достаточно удобным для того, чтобы я начал его использовать сам. Первое впечатление с ранних работающих версий — попал в другой мир. Весь контент загружается с ютюба, но это уже не ютюб, а нечто другое, безопасное и контролируемое, как будто вынул из глаза сколопендру и посадил её в стеклянную банку. И дело именно в рекомендациях. разнорабочий