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

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

 , , , ,


5

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 ★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)