Holen Sie sich Youtube-Daten in Python mithilfe der Youtube-Daten-API

Einführung

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.

Referenz

Bei der Verwendung der Youtube-Daten-API habe ich Folgendes erwähnt.

Gebrauchsfertige API

Registrierung der Youtube Data API

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.

Rufen Sie die Bibliothek ab, um Informationen von der API in Python abzurufen

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.

Holen Sie sich Videoinformationen mit der Youtube Data API

Im Folgenden verwenden wir die Youtube-Daten-API, um Videoinformationen abzurufen. Weitere Informationen finden Sie unter Youtube Data API-Referenz.

Holen Sie sich Videos mit Titeln, die bestimmte Schlüsselwörter enthalten, in der Reihenfolge der Anzahl der Aufrufe

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.

Erhalten Sie Informationen zu vielen Videos gleichzeitig

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.

スクリーンショット 2019-12-16 20.00.14.png

Holen Sie sich die Anzahl der Aufrufe eines Videos

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.

スクリーンショット 2019-12-16 20.06.04.png

Versuchen Sie zu visualisieren

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)

スクリーンショット 2019-12-16 20.30.14.png

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.

スクリーンショット 2019-12-16 20.30.37.png

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

Holen Sie sich Youtube-Daten in Python mithilfe der Youtube-Daten-API
[Python] Holen Sie sich alle Kommentare mit Youtube Data Api
Holen Sie sich LEAD-Daten mit der REST-API von Marketo in Python
Holen Sie sich Google Fit API-Daten in Python
Holen Sie sich YouTube-Kommentare in Python
Holen Sie sich Youtube-Daten mit Python
Holen Sie sich die Bild-URL mithilfe der Flickr-API in Python
[Python] Ich habe versucht, mithilfe der YouTube-Daten-API verschiedene Informationen abzurufen!
[Python] Abrufen von Insight-Daten mithilfe der Google My Business-API
Holen Sie sich LeapMotion-Daten in Python.
Abrufen von Salesforce-Daten mithilfe der REST-API
Datenerfassung mit Python Googlemap API
Abrufen von Amazon-Daten mit Keep API # 1 Abrufen von Daten
Spielen Sie mit der YouTube Data API v3 mit dem Google API Python Client
Holen Sie sich mit Python zusätzliche Daten zu LDAP
Mausbedienung mit Windows-API in Python
Versuchen Sie, die Kraken-API mit Python zu verwenden
Ich habe versucht, YOUTUBE Data API V3 zu verwenden
Erhalten Sie E-Mails mithilfe der Google Mail-API in Java
Tweet mit der Twitter-API in Python
Erstellen einer Google-Tabelle mit der Python / Google Data-API
Datenbereinigung mit Python
Holen Sie sich Datum in Python
C-API in Python 3
Holen Sie sich mit Python Zeitreihendaten von k-db.com
Versuchen Sie es mit der BitFlyer Ligntning API in Python
Holen Sie sich Aktienkursdaten mit Quandl API [Python]
Lassen Sie uns Emotionen mithilfe der Emotions-API in Python beurteilen
So erhalten Sie Artikeldaten mithilfe der Qiita-API
Versuchen Sie, die ChatWork-API und die Qiita-API in Python zu verwenden
Versuchen Sie, die DropBox Core-API mit Python zu verwenden
Hit Mastodons API in Python
Behandeln Sie Umgebungsdaten in Python
Erstellen Sie mit Selenium einen Datenerfassungsbot in Python
Holen Sie sich letzten Monat in Python
Laden Sie eine JPG-Datei mit der Google Drive-API in Python hoch
Zeigen Sie UTM-30LX-Daten in Python an
Registrieren Sie gemeinsam Daten im Firestore mithilfe der CSV-Datei in Python
Grundeinstellungen bei Verwendung der foursquare-API mit Python
Holen Sie sich mit Python Daten vom GPS-Modul mit 10 Hz
Holen Sie sich die Terminalgröße in Python
Holen Sie sich explizit EOF in Python
OpenVINO verwendet die Inference Engine Python API in einer PC-Umgebung
Erhalten Sie Kommentare und Abonnenten mit der YouTube-Daten-API
Rufen Sie Daten über die Salesforce-API (Bulk-API) in Python ab und laden Sie sie in BigQuery
Blender Python API in Houdini (Python 3)
Verwenden Sie die Such-API der National Parliament Library in Python
Holen Sie sich Evernote-Notizen in Python
Datenanalyse mit Python-Pandas
Übersetzt mit Googletrans in Python
Verwenden des Python-Modus in der Verarbeitung
Holen Sie sich japanische Synonyme mit Python
Als offene Daten mithilfe der CKAN-API in Python hochladen und automatisch mit Github-Aktionen verknüpfen
Ich habe versucht, Videos mit der Youtube Data API (Anfänger) zu suchen.
Erhalten Sie Daten mithilfe der API des Ministeriums für innere Angelegenheiten und Kommunikation
Aufblasen von Textdaten durch erneute Übersetzung mithilfe der Google-Übersetzung in Python
Geben Sie Excel-Daten mit Python3 + xlrd + mecab separat aus
Drücken Sie in Python auf REST, um Daten von New Relic abzurufen