LINUX.ORG.RU
решено ФорумTalks

Видео искалка - reptube

 , , , ,


6

5

Студия Колобо.. кхм. Конгломерат корпораций "000 На Коленочке ЛТД" от создателей "И таааак сойдёёёт" представляяяееет! Очередную, но уникальную во всей солнечной системе, а может быть даже галактике, фигню!
Короче суть проста как две палки, часто кидают ссылки на ютуб которые нифига не работают, но иногда есть аналогичное видео на rutube/platforma/my.mail/etc и для автоматизации поиска накалякалось. Главное чтобы youtube.com не блокировался полностью, чтобы по ссылке можно было извлечь название видео. Можно просто искать видео на rutube/platforma/my.mail/etc с разным форматом вывода, пайпы, m3u вывод для mpv и прочее Собственно воть и всё. Конечно, можно просто использовать браузер и использовать поиск в нём, но вот зачем это делать, если это можно не делать! Гениально, где моя шоколадная медалька.

Недоисходники

Чет я приболел, лень писать смешульки так что я тут тупо скопирую readme дабы не запаривать Ъ своим очередным высеро…шедевром


Зависимости

Любая версия Lua и утилита curl

  • Lua5.1
  • Luajit
  • Lua5.2
  • Lua5.3
  • Lua5.4

Использование

  • Аргументы опциональные
    • -h Отобразить справку
    • -d Отключить цветной вывод
    • -n [NUMBER] Количество результатов для вывода, в каждом из ресурсов
    • -v Подробный вывод, описание, имя канала, категория
    • -m Вывод в формате m3u (удобно для передачи в mpv)
    • -s Искать только точное совпадение с запросом
    • -l Отображать вывод в виде списка чистых ссылок
    • -ru --rutube Отобразить результаты с rutube.ru
    • -pl --platforma Отобразить результаты с platforma.ru
    • -my --mymail Отобразить результаты с my.mail.ru
    • -ok --okru Отобразить результаты с ok.ru
    • -dz --dzen Отобразить результаты с dzen.ru
    • -co --coub Отобразить результаты с coub.com

По умолчанию поиск ведётся везде, если вы выберите -ru будет показан
только вывод с rutube, если вы выберите больше ключей например ‘-pl -ru’
то будет выведено только то что выбрано, и в том порядке в котром идут ключи

Примеры

Использовать для поиска текстовый запрос, вывести 10 результатов с подробностями
аргументы можно спокойно смешивать с запросом, если в запросе нет символа - и
других символов интерпретируемых терминалом, в ином случае 'нужно обернуть в каычки'

reptube Рецепты салатов -n 10 -v

Получить только 1 вариант с названием

reptube -n 1 Почему надо выключать телефоны на борту самолета

Найти видео по ссылке из youtube

reptube https://www.youtube.com/watch?v=jN1fA6zupOM

Найти видео по ссылке из youtube в строгом режиме, 100% совпадение или ничего

reptube -s https://www.youtube.com/watch?v=jN1fA6zupOM

Оформить вывод в формат m3u, полезно для передачи видеоплеерам, например mpv

reptube -m https://www.youtube.com/watch?v=jN1fA6zupOM | mpv -

Можно использовать pipe удобно для скриптов

echo 'Фильмы' | reptube -m | mpv -

Ссылки можно передать в чистом виде как аргументы, но до получения метаданных
названия видео отображаться не будут, но начнут отображение в момент воспроизведения

mpv $(reptube -l Мультики)

Примеры вывода

  • Первое попавшееся видео
dron@gnu:~$ reptube Фильм Матрица -n 1 
* [1] Матрица (фильм, 1999)
  https://rutube.ru/video/307c52af7c3e122855aea0899c247971/
  • Тоже самое только с подробным выводом
dron@gnu:~$ reptube Фильм Матрица -n 1 -v
* [1] Матрица (фильм, 1999)
  [Фильмач — фильмы и сериалы онлайн][Фильмы]
  Культовый киберпанк братьев Вачовски, стабильно занима
  ющий высокие места во всевозможных топах лучших фильмов. 
  Философский подтекст фильм так глубок, что его корни ищут
   не только в классической мысли, но и более спорных источ
  никах — от классического аниме до «Алисы в стране чудес».
  Днём Томас Андерсон пишет код в одной из поглотивших мир 
  корпораций, а по ночам взламывает цифровые системы. В мир
  е закулисья он носит имя Нео, и в сети для него нет ни од
  ной тайны. Однажды Нео приходит таинственное сообщение= «
  Ты увяз в Матрице», а также указание следовать за белым к
  роликом. Вскоре он находит того самого кролика на спине н
  екой Тринити, и она предлагает ему погрузиться в новую ре
  альность. После этого жизнь Нео разделяется на «до» и «по
  сле».Год выпуска= 1999Жанр= фантастика, боевикПродолжител
  ьность= 136 мин.Режиссёр= Лана Вачовски, Лилли ВачовскиВ 
  ролях= Киану Ривз, Лоренс Фишбёрн, Кэрри-Энн Мосс, Хьюго 
  Уивинг, Глория Фостер, Джо Пантольяно, Маркус Чонг, Джули
  ан Араханга, Мэтт Доран, Белинда МакКлориCтрана= США, Авс
  тралияCтудия= Groucho II Film Partnership, Warner Bros. P
  ictures Co., Bullet Time, Silver PicturesЗдесь вы можете 
  посмотреть фильм Матрица в русском синхронном переводе в 
  хорошем качестве (4k, 2k, Full HD, 1080p) совершенно бесп
  латно.
  https://rutube.ru/video/307c52af7c3e122855aea0899c247971/
  • В фомате m3u
dron@gnu:~$ reptube Фильм Матрица -n 1 -m
#EXTM3U
#EXTINF:-1,'Матрица (фильм, 1999)'
https://rutube.ru/video/307c52af7c3e122855aea0899c247971/
  • Чистая ссылка
dron@gnu:~$ reptube Фильм Матрица -n 1 -l
https://rutube.ru/video/307c52af7c3e122855aea0899c247971/
  • Поиск по ссылке на youtube с точным совпадением
dron@gnu:~$ reptube -s 'https://www.youtube.com/watch?v=jN1fA6zupOM'
* [1] Почему надо выключать телефоны на борту самолета
  https://rutube.ru/video/3f329d37994e4f1c9e148028c1bf5d7a/
* [2] Почему надо выключать телефоны на борту самолета
  https://rutube.ru/video/4c87a2ea11f92883cfcfabd63a79c794/
dron@gnu:~$ 
  • Тупа мультики детю врубить (нет фильтра по возрату, на свой страх и риск)
reptube добрые мультфильмы -m | mpv -

Надеюсь кому пригодится
Досвиданья ::)

★★★★★

Последнее исправление: LINUX-ORG-RU (всего исправлений: 10)
Ответ на: комментарий от krasnh

Закинуть не получится, нет расширения, шебанг не даст запуститься, а делать отдельно мне лень, температура под сорок.

Закинь вот это

mp.register_event('start-file', function()
   local utils = require('mp.utils')
   local path = mp.get_property('path')
   if path:find('https://www.youtube',1,true) or
      path:find('https://youtube',1,true) or
      path:find('https://m.youtube',1,true) or
      path:find('https://youtu.be',1,true)  then
      local data = utils.subprocess(
      {
          capture_stdout = true,
          capture_size = 1000,
          playback_only = false,
          cancellable = false,
          args = {'reptube','-l','-s','-ru','-n','1',path}
      })
      mp.commandv('loadfile',data.stdout)
   end
end)
LINUX-ORG-RU ★★★★★
() автор топика
Последнее исправление: LINUX-ORG-RU (всего исправлений: 3)
Ответ на: комментарий от LINUX-ORG-RU

вот это

Работает.

На этой ссылке - да, на этой - нет. А на этой только в vk есть альтернатива. )

Не хватает только визуализации сообщений, типа, такая-то ссылка найдена там-то, или наоборот, ничего не найдено. И чтоб не закрывало окно mpv, если ничего нет.


Но раз «температура под сорок», то мы со всем пониманием. Выздоравливай.

krasnh ★★★★
()
Последнее исправление: krasnh (всего исправлений: 2)
Ответ на: комментарий от krasnh

на этой - нет.

dron@gnu:~/Рабочий-стол/sdfsdf$ mpv --scripts=./test.lua https://www.youtube.com/watch?v=quDhs0cmA6A
[ffmpeg] https: HTTP error 404 Not Found
Failed to open https://rutube.ru/video/fde641cf23e4631ff7c741fa642077cf/
.
Exiting... (Quit)

Тут мои полномочия, всё, закончились. Вопросы к mpv и тому через что он открывает всё.

А на этой только в vk есть альтернатива.

Я одноклассники добавил недавно, обновись (в любом случае обновись), там есть

dron@gnu:~$ reptube  -s https://www.youtube.com/watch?v=qbM4wWlgHtQ
* [1] Franz Ferdinand - Take Me Out (На русском / Cover b
  y RADIO TAPOK)
  https://ok.ru/video/3156186632508 ~~~~~~~~~~~~~~~~~~~~~~~ [00:04:27]
* [2] Franz Ferdinand - Take Me Out (На русском / Cover b
  y RADIO TAPOK)
  https://ok.ru/video/2190209124900 ~~~~~~~~~~~~~~~~~~~~~~~ [00:04:27]
dron@gnu:~$

Причём более полная версия

Не хватает только визуализации сообщений

Не хочется, это геморой.

Не закрывало

А тут я сам не понимаю, ключи принудительного сохранения окна открытым не работают. Несколько подряд ссылок добавить в список воспроизведения изнутри не получается, плейлист файл изнутри через раз открывается, молча выходит и всё. Глюкодром какой-то. Разбираться не буду, ну его нафиг.

LINUX-ORG-RU ★★★★★
() автор топика
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от LINUX-ORG-RU

одноклассники

Там исходное видео - VK. Хорошо хоть не ютуб, там и такое бывает.

А то проверяю эту ссылку на яндекс.видео, а там никаких одноклассников, только вк. Думаю, нифига себе reptube, настолько мощный поисковик, находит и то, с чем не справляются алгоритмы яндекса. )

krasnh ★★★★
()
Последнее исправление: krasnh (всего исправлений: 1)
Ответ на: комментарий от krasnh

У меня ничего мощного нет, я просто дёргаю публичные запросы поиска самих сайтов напрямую у каждого по очереди и всё, выдачу показываю и не более того. Сегодня завтра ещё dzen добавлю.

LINUX-ORG-RU ★★★★★
() автор топика
Ответ на: комментарий от krasnh

dzen добавлен. Ну и хватит наверное, пора спать.

LINUX-ORG-RU ★★★★★
() автор топика

Как я заметил, с этими замедлениями ютуба, большинство контента переехало в рутуб и vk. Причем даже, как бы в vk и не больше.

Это я к тому, что в будущем, после выздоровления, ) неплохо бы и его как-нибудь прикрутить тоже. Да, знаю, ты писал выше о проблемах с поиском в нем.

krasnh ★★★★
()
Ответ на: комментарий от krasnh

Нутк, что сайты публично выдают, то и имеем. Ни больше ни меньше. Кто его знает что человек ищет, про машинки, про цветочки или видеоклип какой. Я вот в поисковике название программы вбил, а мне в картинках порнуху показывает. Срамота то какая, ну и назвал блин. Ну и ладно.

А так, ничего с этим не поделаешь, обычно люди делятся ссылками на видео с неким контекстом про видео, мол «смари какое милое видео про котиков» и если ты через странсляцию ссылок открыл «ютуб в рутубе», а там вместо котиков львы, ну значит название такое, тоже самое будет если просто название вбивать в поиске самих сайтов.

В любом случае я не буду никак ничего улучшать и всё такое, чисто сырой вывод, как есть. Иногда это работает, а иногда нет.

LINUX-ORG-RU ★★★★★
() автор топика
Ответ на: комментарий от LINUX-ORG-RU

coub

Только вот думал, как бы добавить в этот твой код для mpv еще одно условие срабатывания, но уже для ссылки с coub.
Это по мотивам Качалка COUB для вашего ПеКа (комментарий).

Все же на этом ресурсе случаются чуть ли не шедевры, а смотреть их удобней (мне) в отдельном окне.

krasnh ★★★★
()
Ответ на: комментарий от krasnh

Там нет смысла что-то менять, coub добавлен как поисковый провайдер для поиска на нём, а не как поиск по ссылке с coub.

LINUX-ORG-RU ★★★★★
() автор топика
Ответ на: комментарий от krasnh

Аааа, ты видео зациклить на лету хочешь. Не получилось в рантайме менять настройки dlp, лень разбираться, но вот так работает

-------------------------------------------------------------------------------
local tmpname = '/tmp/b78cae1d-965e-75a56f54-fc63-4e459a-913e-a565c3979c1b.mp4'
-------------------------------------------------------------------------------
mp.register_event('start-file', function()
   local utils = require('mp.utils')
   local path = mp.get_property('path')
   if path:find('https://www.youtube',1,true) or
      path:find('https://youtube',1,true) or
      path:find('https://m.youtube',1,true) or
      path:find('https://youtu.be',1,true)  then
      local data = utils.subprocess(
      {
          capture_stdout = true,
          capture_size = 1000,
          playback_only = false,
          cancellable = false,
          args = {'reptube','-l','-s','-ru','-n','1',path}
      })
      mp.commandv('loadfile',data.stdout)
   end
   ---
   if path:find('https://coub.com',1,true) then
      os.remove(tmpname)
      local stat = utils.subprocess(
      {
          playback_only = false,
          args = {
              'yt-dlp',
              '--ppa',
              "Merger+ffmpeg_i1:-stream_loop -1",
              '--ppa',
              "Merger+ffmpeg_o1:-shortest",
              path,
              '-o',
              tmpname
         }
      })
      if stat.status then
         mp.commandv('loadfile',tmpname)
      end
   end
end)
LINUX-ORG-RU ★★★★★
() автор топика
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от LINUX-ORG-RU

вот так работает

Не, это extractor/coub.py отрабатывает. Причем неправильно - картинка виснет, звук играет (на гитхабе так и не починили, хотя запрос был). Если провериться с --no-ytdl, то ничего не будет, твой код не сработает.

Я изначально предполагал сделать, чтоб ссылка coub, перетащенная на окно mpv, передавалась твоему скрипту Качалка COUB для вашего ПеКа. Но там нюансы:

  • воспроизведение желательно на том же окне плеера, на который и перетащена ссылка
  • твой скрипт воспроизводит с помощью двух окон, одно - звук, другое - видео
krasnh ★★★★
()
6 января 2025 г.
Ответ на: комментарий от LINUX-ORG-RU

вк раз 100 пускает потом всё отваливается, там уникальный anonID нужен который через js генерится и пустя время тухнет

Как я уже выше писал, особенность российской действительности, что перезаливы ютуба пишутся не на один хостинг, а дробятся на несколько популярных, в основном, это рутуб, вк и дзен. И выпадение вк из твоего скрипта делают его не сильно эффективным.

Имхо, добавь поиск по вк, но сделай его, например, на отдельный аргумент reptube - поюзать, посмотреть. Может ограничения в 100 за глаза хватит на сутки, а потом anonID обнулится? Лично мне такого количества хватит за глаза.
А то я уже дзен настроил на yt-dlp, и решил reptube установить опять, но вспомнил, что нет вк. )

krasnh ★★★★
()
Ответ на: комментарий от krasnh

У них есть запрос act=get_anonym_token который для своего получения требует два параметра client_secret и client_id эта хрень получается внутри кишков js в браузере динамически, затем выдаётся access_token и его параметр expires, время жизни короче. И только тогдаааааааааа, оно работает, вроде получение токена и публично, но вот получение client_* нет

Есть, как альтернатива публичному веб поиску

Но там нужно получать личный токен для запросов, из коробки работать не будет == ненужно Короче огороженный геморой, я включил только то у чего есть явный публичный API просто дёргается он не в просто браузере, а в недобраузере.

И ещё пока я сейчас смотрел, уточняя, там уже некоторое поменялось, в смысле работа catalog.getVideoSearc, там новый ключ значние которого тоже хрен пойми как берётся и это значит, даже если ранее бы всё было и работало, то сейчас бы сломалось и я понятия бы не имел как чинить. Там ещё всё трекерами обвешано, оно бы ладно но не всегда понятно что это трекер, а без него ничего не работает, пару раз кривой запрос сделаешь блок IP/отпечатка браузера на некоторое время, ой короче, я уже писал не хотят не надо.

Короче с вк мимо, будет у них как у dzen/rutube/platforma/mail/ok/ прямой запрос на поиск видео, который просто plain text/json/etc вываливает и всё, без всех этих вот штук, тогда и будет =)))

Можно webkit или nodejs с модулем эмулем браузера в фоне пускать чтобы они нативно страницу получали и весь js пережевывали и брать из них client_id/client_secret/access_token, но я не буду этого делать, вот просто потому что.

Оно просто не работает. Вручную вбитые данные из инспектора браузера несколько минут работают и отваливаются, как их обновлять я уже написал, никак. Ну и всё =)

Нихачунибуду :), пусть сделают публичное API для народа, у всех главное есть, и только у них свой огород с трёхметровым забором, чего они так шифруются непонятно.

LINUX-ORG-RU ★★★★★
() автор топика

Добавлен нум.

Ключи -nu и --nuum

Всё что для отображения надо, на месте (не всегда, но на месте)

  • ссылка на страницу построенная из id
  • длительность
  • описание
  • категория

Открытое API запросов и в принципе контент разнообразный залит, попадались перезаливы с других платформ.

Примеры

dron@gnu:~$ reptube --nuum  Добрые мультики -v -n 3
* [1] Мультфильмы "Звездная сказка" 1982 Добрые мультики
  [SoYuzmF][Кино и cериалы]
  Советские из детства
  https://nuum.ru/videos/3545024 ~~~~~~~~~~~~~~~~~~~~~~~~~~~ [00:10:11]
* [2] Сборник Мультфильмы СССР. Старые добрые мультики
  [SoYuzmF][Кино и cериалы]
  Мультфильмы детям и родителям
  https://nuum.ru/videos/3800213 ~~~~~~~~~~~~~~~~~~~~~~~~~~~ [01:05:32]
* [3] Мультфильмы "Тигренок без полосок" Добрые мультики
  [SoYuzmF][Кино и cериалы]
  Мультфильмы для самых маленьких
  https://nuum.ru/videos/3128399 ~~~~~~~~~~~~~~~~~~~~~~~~~~~ [00:08:29]
dron@gnu:~$ reptube -nu матрица фильм -v
* [1] Матрица. Фильм.
  [MilordFilm][Кино и cериалы]
  Жизнь Томаса Андерсона разделена на две части: днём он
   – самый обычный офисный работник, получающий нагоняи от 
  начальства, а ночью превращается в хакера по имени Нео, и
   нет места в сети, куда он бы не смог проникнуть. Но одна
  жды всё меняется. Томас узнаёт ужасающую правду о реально
  сти.   #боевик  #фантастика #Матрица #Фильм
  https://nuum.ru/videos/3422797 ~~~~~~~~~~~~~~~~~~~~~~~~~~~ [02:16:18]
* [2] Фильм "Матрица. Воскрешение" #кино #фильмы #фэнтези
   #боевики #подписки #nuumbonus #bonusnuum
  [Cinema_Films_KateArs][Кино и cериалы]
  Геймдизайнер Томас Андерсон сделал себе имя работой на
  д трилогией игр «Матрица». Хотя окружающий мир периодичес
  ки даёт сбои и обнажает свою истинную сущность, бывший Не
  о исправно посещает психотерапевта, принимает пилюли и пр
  актически убедил себя, что всё это — игра его воображения
  . Но однажды на него выходит хакерша Багз и предлагает сн
  ова следовать за белым кроликом.
  https://nuum.ru/videos/3311243 ~~~~~~~~~~~~~~~~~~~~~~~~~~~ [02:16:55]


P.S.

К слову поиск по ссылке от ютуба, например

dron@gnu:~$ reptube -s 'https://www.youtube.com/watch?v=jN1fA6zupOM'
dron@gnu:~$ reptube    'https://www.youtube.com/watch?v=jN1fA6zupOM'

Может висеть, у тех у кого не просто кхм замедляется ютуб, а ваще даже json/html не подгружается. И так как при таком исходе через https://www.youtube.com/oembed не выдаёт название ролика, то ничего и не будет искаться, на деле просто curl висит и всё и по таймеру отваливается. Раньше был ещё вариант с google API v2, но теперь он работает… не работает, а google API v3 через https://www.googleapis.com требует теперь ключ в запросе. Короче это геморой, у кого по божески, просто видео не грузит с googlevideo.com, а html и json выдаётся искать по ссылкам будет, если нет, то нет.

¯\(ツ)

LINUX-ORG-RU ★★★★★
() автор топика
Ответ на: комментарий от LINUX-ORG-RU

Ты можешь кинуть ссылку на ютуб на ролик длинной в час, а тебе по совпадению с названием выдаст ролик длинной в минуту.

Можно сортировать/фильтровать по совпадению длинны видео кстати

goingUp ★★★★★
()
Ответ на: комментарий от goingUp

Можно сортировать/фильтровать по совпадению длинны видео кстати

Для этого нужно получить длину видео, а для этого открыть хоть что-то связанное с ним сделав запрос к youtube.com, но если заблокированы DNS то ни ответа, ни привета, что длина, что название. Ютуб, то просто кхм замедляется, то прям ваще молчит нафиг, сегодня так, завтра сяк. С google API я не буду связываться, там токены нужны. До недавнего времени html и json`ы всякие отдавало, тоже медленно, но быстро и не нужно было, чё там надо то, килобайт получить и нормально, вот те название ролика, а ща с перебоями даже это.

Ну и тоже момент есть, многие кто перезаливают ролики, особенно те кто впихивал ранее в них рекламу, ролики подрезают, так как в видео нет спец плашки рекламодателя ERID, некоторые заключили контракты с площадками и вырезают из видео перезаливаемого упоминание других площадок и так далее. Некоторые просто вынуждены для залива на другую площадку перекодировать видео сначала у себя и попутно ещё подрезают до кучи, ну там титры 20 минутные у фильма например выдирают и так далее. Короче. Такое себе. Тут мудрить не стоит, если удалось получить название по нему поиск и всё, ни больше ни меньше, если не удалось, нууу и ладно, чо.

А вот просто сортировать вывод по длительности в принципе можно, но как доп опция, но потом какнить.

LINUX-ORG-RU ★★★★★
() автор топика
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)