[GO] Sammle Videoinformationen zu "Singen mit XX Personen" [Python] [Youtube Data API]

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.

Referenzseite

Umgebung

Bestätigt für die Zusammenarbeit mit Google Colaboratory (Stand: 23. Februar 2020)

Vorbereitung

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.

Code

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 スクリーンショット 2020-02-23 15.15.42.png

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

Sammle Videoinformationen zu "Singen mit XX Personen" [Python] [Youtube Data API]
Holen Sie sich Youtube-Daten mit Python
YouTube-Videoverwaltung mit Python 3
Spielen Sie mit der YouTube Data API v3 mit dem Google API Python Client
Sammeln Sie Produktinformationen und Prozessdaten mit der Rakuten-Produktsuch-API [Python].
[Python] Ich habe versucht, mithilfe der YouTube-Daten-API verschiedene Informationen abzurufen!
Sammeln von Informationen von Twitter mit Python (Twitter API)
Holen Sie sich Lebensmitteldaten mit Amazon API (Python)
Holen Sie sich Youtube-Daten in Python mithilfe der Youtube-Daten-API
Empfehlung von Altair! Datenvisualisierung mit Python
[Python] Python-Paketinformationen mit der PyPI-API abrufen
Ich habe versucht, die Filminformationen der TMDb-API mit Python abzurufen
[Python] Holen Sie sich alle Kommentare mit Youtube Data Api
Holen Sie sich Aktienkursdaten mit Quandl API [Python]
Holen Sie sich CPU-Informationen von Raspberry Pi mit Python
[Python] Erwähnen Sie mit der Slack-API mehrere Personen
Fordern Sie die Hauptkomponentenanalyse von Textdaten mit Python heraus
Erhalten Sie Kommentare und Abonnenten mit der YouTube-Daten-API
[Python] Mit der API von Qiita erhalten Sie Benutzer- und Artikelinformationen
[Grundlagen der Datenwissenschaft] Sammeln von Daten aus RSS mit Python
Datenanalyse mit Python 2
Datenanalyse mit Python
Versuchen Sie, COVID-19 Tokyo-Daten mit Python zu kratzen
Hinweise zum Umgang mit großen Datenmengen mit Python + Pandas
Berühren wir die API der Netatmo Weather Station mit Python. #Python #Netatmo
Befreien Sie sich mit Python und regulären Ausdrücken von schmutzigen Daten
Die Geschichte eines Rubinisten, der mit Python :: Dict-Daten mit Pycall kämpft
[Homologie] Zählen Sie mit Python die Anzahl der Löcher in den Daten
Abrufen von Daten aus der Analyse-API mit Google API Client für Python
Implementieren Sie die Normalisierung der Vorverarbeitung von Python-Trainingsdaten mit scicit-learn [fit_transform].
[Python] Ich habe versucht, Daten mit der API von Wikipedia zu sammeln
Grundlegende Zusammenfassung der Datenoperationen mit Python Pandas - Erste Hälfte: Datenerstellung und -operationen
Mit Python erstellte Beispieldaten
Verwenden Sie die Trello-API mit Python
Verwenden Sie die Twitter-API mit Python
Informationen erhalten Sie mit zabbix api
Web-API mit Python + Falcon
Rufen Sie die API mit python3 auf.
Verwenden Sie die Unterschall-API mit Python3
Holen Sie sich Alembic-Informationen mit Python
Lesen von JSON-Daten mit Python
Sammeln wir automatisch Unternehmensinformationen (XBRL-Daten) mithilfe der EDINET-API (4/10).
Implementierung von CRUD mithilfe der REST-API mit Python + Django Rest Framework + igGrid
Praktische Übung zur Datenanalyse mit Python ~ 2016 New Coder Survey Edition ~
Beispiel zur Verwendung nach OAuth-Authentifizierung der BOX-API mit Python
Basiskarteninformationen mithilfe der Python-Geotiff-Konvertierung numerischer Höhendaten
Crawlen mit Python und Twitter API 2-Implementierung der Benutzersuchfunktion
Links zu Personen, die gerade mit der Datenanalyse mit Python beginnen
Ich habe versucht, automatisch Bilder von Kanna Hashimoto mit Python zu sammeln! !!
PhytoMine-I hat versucht, mit Python die genetischen Informationen der Pflanze zu erhalten