[PYTHON] Bulk-Download TOP10-Aufrufe von einem Youtube-Kanal

Dies ist der erste Beitrag zu Qiita. Grundsätzlich habe ich vor, es als Memorandum zu verwenden. Ich lerne immer noch Python. Bitte weisen Sie auf Probleme im Zusammenhang mit dem Code hin.

Auch in Bezug auf das Urheberrecht usw. erkennen wir an, dass dies im Rahmen der privaten Nutzung möglich ist. Bitte weisen Sie jedoch darauf hin, wenn ein Problem vorliegt.

Vorbereitung

Greifen Sie zunächst auf https://console.cloud.google.com/ zu, um ein Projekt zu erstellen, die Youtube-Daten-API aus der Bibliothek zu aktivieren und Anmeldeinformationen hinzuzufügen (API-Schlüssel).

Installieren Sie als Nächstes die Bibliothek, die für die Verwendung der Youtube-Daten-API erforderlich ist, und installieren Sie Youtube_DL, die zum Speichern des Videos erforderlich ist.

pip install google-api-python-client
pip install youtube-dl

Code

Importieren Sie nach der Installation zuerst die Bibliothek und weisen Sie sie jeder Variablen zu.

from apiclient import discovery
import youtube_dl

DEVELOPER_KEY = "" #API-Schlüssel hier
YOUTUBE_API_SERVICE_NAME = "youtube"
YOUTUBE_API_VERSION = "v3"
ydl_opts = {
   'format': 'bestaudio/best',
   'postprocessors': [
       {'key': 'FFmpegExtractAudio',
       'preferredcodec': 'mp3',
        'preferredquality': '192'},
       {'key': 'FFmpegMetadata'},
   ],
} # youtube-Konvertieren Sie mit dl heruntergeladene Videos in Musik

Wenn Sie Videos anstelle von Musik herunterladen möchten, können Sie ytdl_opts leeren.

Als nächstes erhalten Sie die URL des am meisten abgespielten Videos auf dem Kanal von 0 bis 10.

def youtube_search(channelId):
 videos = [] #Liste zum Einfügen der URL
 youtube = discovery.build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION,
   developerKey=DEVELOPER_KEY)

 search_response = youtube.search().list(
   part="snippet",
   channelId= channelId,
   maxResults=10,
   order="viewCount",
 ).execute() #Durchsuchen Sie 10 Videos in der Reihenfolge der Anzahl der Aufrufe, nachdem Sie den Kanal mit der API angegeben haben
 
 for search_result in search_response.get("items", []):
   if search_result["id"]["kind"] == "youtube#video":
     print("https://www.youtube.com/watch?v=" + search_result['id']['videoId'])
     videos.append(search_result["id"]["videoId"]) #URL zu Videos hinzufügen

 return videos

Übrigens kann die Anzahl der Suchvorgänge beliebig bis maxResults = 0-50 festgelegt werden.

Laden Sie alle Videos mit der zuletzt aufgeführten URL herunter

def download_video(video_list):
 for i, videoId in enumerate(video_list): #Indexnummer und Element gleichzeitig drehen
   # ydl_opts['outtmpl'] = "music{}".format(str(i)) + '.%(ext)s' #Wenn Sie das Verständnis der Reihenfolge der Anzahl der Ansichten erleichtern möchten, klicken Sie hier#Wenn Sie music0 entfernen-10.mp3(mp4)Kann als heruntergeladen werden
   ydl = youtube_dl.YoutubeDL(ydl_opts)
   ydl.extract_info("https://www.youtube.com/watch?v={}".format(videoId), download=True)

# ytdl_opts=...Der Teil gibt das Format des Dateinamens an.

#Wenn Sie Musik löschen[0-10].mp3(mp4)Sie können es im Format herunterladen.

letzte

Ein Formular, das verwendet werden kann, indem der Code so ausgeführt wird, wie er ist

from apiclient import discovery
import youtube_dl

DEVELOPER_KEY = "YOUR_API_KEY" #Bitte geben Sie hier den API-Schlüssel ein
YOUTUBE_API_SERVICE_NAME = "youtube"
YOUTUBE_API_VERSION = "v3"
ydl_opts = {
   'format': 'bestaudio/best',
   'postprocessors': [
       {'key': 'FFmpegExtractAudio',
       'preferredcodec': 'mp3',
        'preferredquality': '192'},
       {'key': 'FFmpegMetadata'},
   ],
} # youtube-Konvertieren Sie mit dl heruntergeladene Videos in Musik

def youtube_search(channelId):
 videos = [] #Liste zum Einfügen der URL
 youtube = discovery.build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION,
   developerKey=DEVELOPER_KEY)

 search_response = youtube.search().list(
   part="snippet",
   channelId= channelId,
   maxResults=10,
   order="viewCount",
 ).execute() #Durchsuchen Sie 10 Videos in der Reihenfolge der Anzahl der Aufrufe, nachdem Sie den Kanal mit der API angegeben haben
 
 for search_result in search_response.get("items", []):
   if search_result["id"]["kind"] == "youtube#video":
     print("https://www.youtube.com/watch?v=" + search_result['id']['videoId'])
     videos.append(search_result["id"]["videoId"]) #URL zu Videos hinzufügen

 return videos

def download_video(video_list):
 for i, videoId in enumerate(video_list): #Indexnummer und Element gleichzeitig drehen
   # ydl_opts['outtmpl'] = "music{}".format(str(i)) + '.%(ext)s' #Wenn Sie die Reihenfolge der Aufrufe jedes Videos besser verstehen möchten, klicken Sie hier#Wenn Sie music0 entfernen-10.Kann als MP3 heruntergeladen werden
   ydl = youtube_dl.YoutubeDL(ydl_opts)
   ydl.extract_info("https://www.youtube.com/watch?v={}".format(videoId), download=True)

if __name__ == '__main__':
 channel = input("Bitte geben Sie die Kanal-ID ein:")
 videos = youtube_search(channel)
 download_video(videos)
 print('Der Download ist abgeschlossen.')

Dieser Artikel endet hier. Vielen Dank.

Recommended Posts

Bulk-Download TOP10-Aufrufe von einem Youtube-Kanal
Laden Sie Videos von YouTube herunter (youtube-dl)
Identifizieren Sie den YouTube-Kanal des Hikakin-Videos anhand von Miniaturbildern mithilfe von CNN
Laden Sie die Top-n-Google-Bildsuche herunter
Verwenden Sie boto, um die Datei von S3 herunterzuladen.