Ich mag die Videos der "Singing with XX-Serie", deshalb wollte ich plötzlich Informationen zu den beliebten Videos der "Singing with XX-Serie" auf YouTube sammeln. Ich habe keine spezifische Verwendung dafür, aber ich dachte, es würde Spaß machen, verschiedene Dinge zu analysieren, beispielsweise welche Art von Parodie für viele Menschen interessant ist.
Also habe ich dieses Mal versucht, die Videoinformationen von "Singing in XX series" mit Python und YouTube Data API (v3) abzurufen. Um ehrlich zu sein, gibt es in Bezug auf das Sammeln von Videoinformationen nichts Neues an der Website, auf die ich verwiesen habe (höchstens den Unterschied in den letzten Ausgabeinformationen), aber seit ich zum ersten Mal versucht habe, die YouTube-Daten-API zu verwenden, ist dies der Fall Ich werde es als Memorandum schreiben.
Bestätigt für die Zusammenarbeit mit Google Colaboratory (Stand: 23. Februar 2020)
Holen Sie sich den API-Schlüssel für die YouTube Data API (v3). Das Verfahren ist auch auf Referenzseiten verfügbar, daher werde ich es hier weglassen. Es gibt keine Einschränkungen für API-Schlüssel.
Die von der angegebenen Abfrage in den Suchergebnissen enthaltenen Videoinformationen werden standardmäßig erfasst und ausgegeben. Der Code sammelt als Beispiel Informationen über Baseballspieler.
from apiclient.discovery import build # pip install google-api-python-client
import datetime
YOUTUBE_API_KEY = '<Geben Sie den API-Schlüssel ein>'
query = 'Ich habe versucht, mit dem Namen des Baseballspielers zu singen'
max_pages = 16 #Anzahl der zu erhaltenden Seiten
maxResults = 50 #Die Anzahl der Suchergebnisse, die pro Seite enthalten sein sollen. max ist 50
#Funktion zum Abrufen von Videoinformationen
def search_videos(query, max_pages=10,maxResults=50):
youtube = build('youtube', 'v3', developerKey = YOUTUBE_API_KEY)
search_request = youtube.search().list(
part='id',
q=query,
type='video',
maxResults=maxResults,
)
i = 0
while search_request and i < max_pages:
search_response = search_request.execute()
video_ids = [item['id']['videoId'] for item in search_response['items']]
videos_response = youtube.videos().list(
part='snippet,statistics',
id=','.join(video_ids)
).execute()
yield videos_response['items']
search_request = youtube.search().list_next(search_request, search_response)
i += 1
#Extrahieren Sie die gewünschten Informationen aus den erfassten Videoinformationen und fügen Sie sie in die Liste ein
#Dieses Mal werden ID, URL, Veröffentlichungsdatum und -zeit, Kanal-ID des Posters, Videotitel, Anzahl der Aufrufe, hohe Bewertung, niedrige Bewertung, Favoritenanzahl erfasst und die Programmausführungszeit wird ebenfalls hinzugefügt.
for items_per_page in search_videos(query, max_pages, maxResults):
for item in items_per_page:
obj = {}
obj['id'] = item['id']
obj['url'] = 'http://youtube.com/watch?v='+obj['id']
snippet = item['snippet']
for key in ['publishedAt','channelId','title']:
obj[key] = snippet[key]
statistics = item['statistics']
for key in ['viewCount','likeCount','dislikeCount','favoriteCount','commentCount']:
obj[key] = statistics[key] if key in statistics else "NA"
obj['timestamp'] = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
print(",".join(['"'+obj[v]+'"' for v in obj]))
Dieses Mal erhielten wir ID, URL, Veröffentlichungsdatum und -zeit, Kanal-ID des Posters, Videotitel, Anzahl der Aufrufe, hohe Bewertung, niedrige Bewertung, Anzahl der Favoriten und Anzahl der Kommentare. Ich bin mir nicht sicher, was die "Lieblingszählung" ist. Ich habe es nur für den Fall bekommen, weil es in den Daten enthalten war, aber es war alles 0.
Die endgültige Ausgabe war die Standardausgabe (Druck) und ich habe sie so wie sie war in Google SpreadSheet kopiert. Es sieht so aus, als wäre Folgendes eingefügt
Als ich die Ergebnisse visuell überprüfte, schien es Geräusche wie ein Video einer Baseball-Sendung oder eine Serie zu geben, die ich ohne Bezug zu singen versuchte, daher muss ich sie manuell entfernen. Wenn Sie umfassender erfassen möchten, ist es außerdem besser, das Programm mit einem anderen Suchwort wie "Yakyuta" auszuführen und nur diejenigen hinzuzufügen, deren Video-ID sich bisher nicht mit den Erfassungsergebnissen überschneidet.
Das war's zum Codieren. Ich denke, es wäre in Zukunft interessant, die in den Texten der Melodien verwendeten Wörter zu transkribieren und zu analysieren, welche Art von Melodien wahrscheinlich populär werden. Es scheint nicht zu sein)
Recommended Posts