Внимательный поиск на гите и вот он - способ
как извлечь ссылки из плейлиста Youtube. Чтобы пользоваться, даже не нужно мучаться с получением ключа в гугле... Правда, за чрезмерный аппетит может случиться бан айпишника. Работает быстро, мне удалось высосать 1327 ссылок за считанные секунды.
Всё удовольствие - 66 строк кода. :beach:
#!/bin/bash
if [ -z "$1" ];
then
echo "Please, specify the playlist code as argument" 1>&2
exit 1
fi
URL="https://www.youtube.com/playlist?list=$1"
withnames=false
if [[ "$2" = "withnames" ]];
then
withnames=true
fi
TMPFILE=$(mktemp "/tmp/$0.tmp.XXXXXX") || {
echo "Temporary file creation failed" 1>&2
exit 1
}
COMMAND=""
if [[ -n $(type -p wget) ]];
then
COMMAND="wget -o /dev/null -O '$TMPFILE' '$URL'"
fi
if [ -z "$COMMAND" ] && [[ -n $(type -p curl) ]];
then
COMMAND="curl -s -o '$TMPFILE' '$URL'"
fi
if [ -z "$COMMAND" ];
then
echo "Please, install wget or curl to use this script" 1>&2
exit 1
fi
eval "$COMMAND"
if $withnames;
then
grep -e "^<tr.*<a href=\"/watch?v=.*$1" "$TMPFILE" | sed 's/.*data-title=\"/\'$'\n''/g' | sed 's/\"/\'$'\n''/' | sed 's/.*watch/https:\/\/www.youtube.com\/watch/g' | sed 's/&amp.*//g' | grep -v '^$' > "playlist_$1.txt"
else
grep -e "^<tr.*<a href=\"/watch?v=.*$1" "$TMPFILE" | sed 's/.*watch/https:\/\/www.youtube.com\/watch/g' | sed 's/&amp.*//g' > "playlist_$1.txt"
fi
CONTINUATION=$(grep 'continuation=' $TMPFILE | head -n1 | cut -d ';' -f2-3 | cut -d '"' -f 1 | cut -d '\' -f1)
while [[ "$CONTINUATION" =~ ^continuation.* ]]
do
URL='https://www.youtube.com/browse_ajax?action_continuation=1&'$CONTINUATION
if [[ -n $(type -p wget) ]];
then
wget -o /dev/null -O "$TMPFILE" "$URL"
else
curl -s -o "$TMPFILE" "$URL"
fi
if $withnames;
then
sed 's/\\n/\'$'\n''/g' "$TMPFILE" | grep -e "data-title=" | sed 's/.*data-title=\\"/\'$'\n''/g'| sed 's/\\"/\'$'\n''/'| sed 's/.*watch/https:\/\/www.youtube.com\//g'| sed 's/\\u0026amp.*//g' | grep -v '^$' >> "playlist_$1.txt"
else
tr -s '\\|/' '\n' < "$TMPFILE" | grep "^watch" | sed 's/\\u0026amp;\(.*\)//g' | sed 's/watch/https:\/\/www.youtube.com\/watch/g' | sort -u >> "playlist_$1.txt"
fi
CONTINUATION=$(sed 's/action_continuation=1\\u0026amp;/\'$'\n''/g' $TMPFILE | tail -n1 | cut -d '\' -f1)
done
rm -f $TMPFILE
Пользоваться очень просто:
1.) Сохраняем код в файл
playlist2links.sh2.) Делаем файл исполняемым
chmod 777 playlist2links.sh
Запускать так, чтобы получить список ссылок на все видео из плейлиста
./playlist2links.sh айдиПлейлиста
Или так, чтобы получить список названий видео
./playlist2links.sh айдиПлейлиста withnames
По завершению, рядышком появится TXT-файл со списком ссылок.
Промышленно скачивать поможет пакет youtube-dl, для заливки через API тоже есть решение, ставить лайки можно плагином (см. пост в топике
Плюсомет перегрелся ). :D
Пилить видосы для ютуба не выгодно. Приходится масштабироваться... 13 каналов, по 100 видосов на каждом (упёрся в ограничения API, нельзя добавлять более 100 видосов в день).
Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
|