Kürzlich untersuche ich, ob verschiedene Daten mithilfe der API erfasst werden können. Ich habe nachgeforscht und geübt, wie man mithilfe der Youtube-Daten-API Informationen wie die Anzahl der Aufrufe und Likes von Videos erhält, und habe sie daher als Memorandum geschrieben.
Bei der Verwendung der Youtube-Daten-API habe ich Folgendes erwähnt.
Um die Youtube Data API zu erhalten, benötigen Sie zunächst ein Google-Konto. Führen Sie die folgenden Schritte aus, um die Yotube-Daten-API zu registrieren und einen API-Schlüssel zu erhalten.
Holen Sie sich die Bibliothek für hier. Es kann mit Pip wie unten gezeigt installiert werden.
pip install google-api-python-client
Sie können jetzt die Youtube-API verwenden.
Im Folgenden verwenden wir die Youtube-Daten-API, um Videoinformationen abzurufen. Weitere Informationen finden Sie unter Youtube Data API-Referenz.
Vor kurzem bin ich süchtig nach Brettspielen, daher möchte ich Videoinformationen zu Brettspielen in absteigender Reihenfolge der Anzahl der Aufrufe erhalten.
from apiclient.discovery import build
YOUTUBE_API_KEY = 'Geben Sie Ihren API-Schlüssel ein'
youtube = build('youtube', 'v3', developerKey=YOUTUBE_API_KEY)
search_response = youtube.search().list(
part='snippet',
#Geben Sie die Zeichenfolge an, nach der Sie suchen möchten
q='Brettspiel',
#Erhalten in absteigender Reihenfolge der Ansichten
order='viewCount',
type='video',
).execute()
Mit dem obigen Skript können Videoinformationen im JSON-Format abgerufen werden. Werfen wir einen Blick auf die Informationen des meistgespielten Videos des Brettspiels.
search_response['items'][0]
{'kind': 'youtube#searchResult',
'etag': '"p4VTdlkQv3HQeTEaXgvLePAydmU/0dlj0cjWp5akSv64R8VxJM--3Ok"',
'id': {'kind': 'youtube#video', 'videoId': 'ASusE5qjoAg'},
'snippet': {'publishedAt': '2019-05-31T11:58:15.000Z',
'channelId': 'UCutJqz56653xV2wwSvut_hQ',
'title': '[Ziel der Kommerzialisierung] Gegenliteratur! Gachinko Brettspiel macht Showdown!',
'description': 'Tokai On Air Ich sage nicht mehr "Bitte abonnieren Sie den Kanal" oder "Danke für Ihre hohe Bewertung", aber ich sagte immerhin...',
'thumbnails': {'default': {'url': 'https://i.ytimg.com/vi/ASusE5qjoAg/default.jpg',
'width': 120,
'height': 90},
'medium': {'url': 'https://i.ytimg.com/vi/ASusE5qjoAg/mqdefault.jpg',
'width': 320,
'height': 180},
'high': {'url': 'https://i.ytimg.com/vi/ASusE5qjoAg/hqdefault.jpg',
'width': 480,
'height': 360}},
'channelTitle': 'Tokai auf Sendung',
'liveBroadcastContent': 'none'}}
Das Video von Tokai On Air war die Nummer eins. Immerhin ist es sehr beliebt ... Das obige Skript kann jedoch nur 5 Informationen gleichzeitig abrufen, nicht die bestimmte Anzahl von Videoansichten.
Ich habe eine Funktion erstellt, die eine große Anzahl von Videos gleichzeitig erfasst, nur die erforderlichen Informationen aus dem Rückgabewert extrahiert und in einem Datenrahmen ablegt. Das ist hier
#Informieren Sie sich über 5 Zahlen in num
#Andere Parameter sind dieselben wie die Parameter zum Abrufen von Informationen von der API
def get_video_info(part, q, order, type, num):
dic_list = []
search_response = youtube.search().list(part=part,q=q,order=order,type=type)
output = youtube.search().list(part=part,q=q,order=order,type=type).execute()
#Da jeweils nur 5 Objekte erfasst werden können, wird es immer wieder ausgeführt.
for i in range(num):
dic_list = dic_list + output['items']
search_response = youtube.search().list_next(search_response, output)
output = search_response.execute()
df = pd.DataFrame(dic_list)
#Holen Sie sich für jedes Video eine eindeutige Video-ID
df1 = pd.DataFrame(list(df['id']))['videoId']
#Holen Sie sich eine eindeutige Video-ID für jedes Video. Holen Sie sich nur die Videoinformationen, die Sie benötigen
df2 = pd.DataFrame(list(df['snippet']))[['channelTitle','publishedAt','channelId','title','description']]
ddf = pd.concat([df1,df2], axis = 1)
return ddf
Lassen Sie uns die obige Funktion ausführen. Dieses Mal werde ich versuchen, 100 Videos zu Brettspielen in absteigender Reihenfolge der Anzahl der Aufrufe zu erhalten.
get_video_info(part='snippet',q='Brettspiel',order='viewCount',type='video',num = 20)
Auf diese Weise konnten wir 100 Videoinformationen in einen Datenrahmen einfügen.
Ermitteln Sie dann, wie oft das Video abgespielt wurde. Sie müssen eine andere Methode als die zuvor verwendete verwenden. Ermitteln Sie, wie oft das Video abgespielt wurde, und hängen Sie es an den gerade erstellten Datenrahmen an.
#Erstellen Sie eine Funktion, um die spezifische Anzahl von Ansichten und Likes des Videos durch Eingabe der Video-ID abzurufen
def get_statistics(id):
statistics = youtube.videos().list(part = 'statistics', id = id).execute()['items'][0]['statistics']
return statistics
df_static = pd.DataFrame(list(df['videoId'].apply(lambda x : get_statistics(x))))
df_output = pd.concat([df,df_static], axis = 1)
df_output
Mit diesem Gefühl konnte ich die Anzahl der Aufrufe, Likes, Kommentare usw. des Videos ermitteln.
Lassen Sie es uns einfach visualisieren. Ich habe versucht, die kumulierte Anzahl von Ansichten für jeden Kanal in den Videos in den Top-100-Ansichten grafisch darzustellen. Klicken Sie hier für die Ergebnisse.
df_output.groupby('channelTitle').sum().sort_values(by = 'viewCount', ascending = False).plot( kind='bar', y = 'viewCount', figsize = (25,10), fontsize = 20)
Immerhin hat ein beliebtes Youtuber-Video eine hervorragende Anzahl von Ansichten, sodass oben eine Reihe bekannter Kanäle zu sehen sind. Wenn Sie die Anzahl der geposteten Videos für jeden Kanal in den Top 100 der meistgesehenen Videos grafisch darstellen, sehen Sie unterschiedliche Landschaften.
Ein unbekannter Kanal namens "Gorgeous Video" kam zuerst herein. "Gorgeous Video" ist wie der wunderschöne Youtube-Kanal dieses Entertainers. Es scheint, dass er energisch Videos von Brettspielen gibt.
Next Sie können verschiedene interessante Daten wie diese erhalten. Ich würde gerne mit der Youtube Data API damit herumspielen.
Recommended Posts