Я знаю, что это немного не по теме, но я могу предложить следующий скрипт bash. Я использую его на своем Raspberry Pi, и он работает очень хорошо.
#!/bin/sh
while [ true ];
do
searchresult=""
while [ -z "$searchresult" ]; do
rand=$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-5};echo)
echo "$rand"
searchresult=$(googler -C -n 100 --np -x -w https://www.youtube.com "$rand")
done
urls=$(echo "$searchresult" | grep -o "https://www.youtube.com/watch?v=...........")
url=$(shuf -e -n 1 $urls)
echo "$url"
omxplayer -o hdmi $(youtube-dl -f mp4 -g "$url")
done
Условием является то, что вы установили googler и youtube-dl. Моя первоначальная идея состояла в том, чтобы сгенерировать случайные строки из 11 символов и добавить их к базовому URL-адресу для видео на YouTube. Однако количество возможных перестановок огромно (26 заглавных букв + 26 строчных букв + 10 цифр + дефис + подчеркивание = 64 символа; 64 ^ 11 = 7,38x10 ^ 19 перестановок) и будет израсходовано, если каждый человек на Земле загрузит 10 миллиардов видео. Вот почему случайная генерация полного 11-символьного идентификатора нецелесообразна. Вместо этого мой скрипт генерирует случайные 5-символьные строки (переменная «rand») и передает их в качестве поискового запроса в googler. Googler ищет на сайте YouTube эти случайные строки и в большинстве случаев возвращает результаты (переменная «searchresult»). В случае отсутствия результата поиск повторяется с другой случайной строкой и так далее до успеха. Обычно требуется от одной до трех попыток. Я пробовал с разной длиной строки поиска - 4, возможно, недостаточно уникальна, а 6 слишком длинна, и может потребоваться много попыток, чтобы получить результат, и я заметил, что если скрипт отправляет более 10 поисковых запросов за короткое время, Google временно блокирует дальнейшие поиски.
На следующем шаге скрипт извлекает гиперссылки на видео YouTube из результатов поиска и помещает их в переменную «urls». Затем один из них случайным образом выбирается для воспроизведения (переменная "url") и передается игроку - в моем случае omxplayer, но вы можете заменить его любым другим игроком, который вы хотите. Omxplayer хорош на Raspberry Pi, потому что он использует аппаратное ускорение и выводит через hdmi прямо на мой телевизор. Если я изменю «-o hdmi» на «-o local», звук будет отправлен через 3,5-мм стереоразъем на внешний усилитель. Нажатие «q» во время воспроизведения останавливает воспроизведение текущего видео и автоматически запускается следующее случайное. Это будет продолжаться вечно, пока вы не нажмете Ctrl-C, чтобы остановить скрипт.
Дополнительные советы
С некоторыми изменениями вы можете получать случайные видео по заданной теме. Например, если мы укажем «Deep Purple» в качестве дополнительного условия поиска, мы получим случайные музыкальные клипы Deep Purple:
#!/bin/sh
while [ true ];
do
searchresult=""
while [ -z "$searchresult" ]; do
rand=$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-2};echo)
echo "$rand"
searchresult=$(googler -C -n 10 --np -x -w https://www.youtube.com "$rand" "Deep Purple")
done
urls=$(echo "$searchresult" | grep -o "https://www.youtube.com/watch?v=...........")
url=$(shuf -e -n 1 $urls)
echo "$url"
omxplayer -o hdmi $(youtube-dl -f mp4 -g "$url")
done
Обратите внимание, что в последнем примере я уменьшил фактор случайности до двухсимвольной строки, потому что будет сложно найти совпадение для пятисимвольной строки в относительно небольшом подмножестве всех видео на YouTube, содержащих поисковый запрос «Deep Purple». ". Также здесь я ограничил количество возвращаемых результатов поиска Google до 10, чтобы они оставались релевантными. С 100 я также получил бы менее релевантные результаты, такие как видео любителей, пытающихся играть песни Deep Purple.
Следующий скрипт будет случайным образом воспроизводить только новые видео, которые были загружены в течение последних 12 часов:
#!/bin/sh
while [ true ];
do
searchresult=$(googler -C -n 100 --np -t h12 -x -w https://www.youtube.com "")
urls=$(echo "$searchresult" | grep -o "https://www.youtube.com/watch?v=...........")
url=$(shuf -e -n 1 $urls)
echo "$url"
omxplayer -o hdmi $(youtube-dl -f mp4 -g "$url")
done
Вы можете установить различные временные ограничения. См. документацию googler для более подробной информации.
person
Deyan Yosifov
schedule
18.10.2017