Как получить информацию о видео, не скачивая его, с помощью youtube-dl - PullRequest
0 голосов
/ 13 июля 2020

Я сделал свой собственный сценарий, используя python и библиотеку youtube-dl, чтобы легко загружать песни с онлайн-радио. Он работает путем копирования списка воспроизведения, сохранения его в файл .txt, а затем запуска сценария, который просматривает список воспроизведения и отбрасывает время для каждой строки, а затем выполняет поиск на YouTube по названию песни и загружает первую найденную. Поскольку многие песни повторяются, программа снова загружает песню и обрабатывает ее (конвертирует в mp3 и изолирует только звук) и перезаписывает старую. Меня интересует, как получить только название видео без загрузки и проверить, была ли эта песня уже загружена, чтобы не тратить время и ресурсы без необходимости. Я знаю, что у команды "" уже есть песни, и не уверен, можно ли их использовать по-другому. Ниже представлен скрипт .py и пример списка песен (список обычно состоит из 500 строк, поэтому много повторений).

<main.py>

import os
radio = "BBCRadio1"
lista = []
with open ("./list.txt" ,"r", encoding="utf8") as f:
    lines = f.readlines()
    for line in lines:
        lista.append(line.split("\t")[1].strip())
lista = list(dict.fromkeys(lista))
for song in lista:
    print("------------------------------------------Downloading " + str(lista.index(song) + 1) + ". song of " + str(len(lista)) + " songs------------------------------------------")
    os.system("youtube-dl  -o \"D:\Projects\YT-DL/songs/" + radio + "/%(title)s.%(ext)s\"  --extract-audio --audio-format mp3 \"ytsearch:" + song + "\"")
<BBCRadio1.txt>

14:32   Harry Styles - Watermelon Sugar
14:27   Drake - Passionfruit
14:24   Phoebe Bridgers - I See You
14:20   Avicii - Lonely Together (feat. Rita Ora)
14:17   Jawsh 685 & Jason Derulo - Savage Love (Laxed - Siren Beat)
14:13   Clipz, Ms. Dynamite, Ms Banks & JayKae - Again
14:09   Katy Perry - Chained To The Rhythm (feat. Skip Marley)
14:06   Dave - Funky Friday (Glastonbury 2019)
14:02   Dave - Location (Glastonbury 2019) (feat. Burna Boy)
13:58   Topic - Breaking Me (feat. A7S)
13:54   Lily Allen - The Fear
13:49   The Weeknd - I Feel It Coming (feat. Daft Punk)
13:46   Sports Team - Going Soft
13:42   Megan Thee Stallion & Beyoncé - Savage (Remix)
13:38   Jonas Brothers - Sucker

Ответы [ 2 ]

1 голос
/ 13 июля 2020

Вы должны попробовать подход, который уже есть в ytdl, для пропуска уже загруженных файлов из списка воспроизведения. Кратковременное использование, --download-archive функция, источник . Пример ниже:

youtube-dl --download-archive archive.txt "https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re"

Здесь файл archive.txt будет содержать все видео, уже загруженные из списка воспроизведения.

0 голосов
/ 13 июля 2020

Я не уверен, почему вы используете youtube-dl для получения метаданных видео. Вы можете использовать os.path.isfile(fname), чтобы проверить, существует ли файл в каталоге, прежде чем пытаться его загрузить. Таким образом вы избежите дубликатов { ссылка }

Или вы можете использовать библиотеку youtube-dl python и установить download=False { ссылка }

...