[PYTHON] Ich habe versucht, Videos mit der Youtube Data API (Anfänger) zu suchen.

Einführung

Input ist wichtig für das Studium der Datenanalyse, aber Übung ist die beste, deshalb dachte ich, dass es gute Daten zum Üben geben würde. Um ehrlich zu sein, kann ich nicht beurteilen, ob die Youtube-Daten gut sind. Ich schaue jedoch oft Youtube und da es ein Bereich von Interesse ist, möchte ich zusammenfassen, wie man es verwendet, um Daten für die Analyse mit ** "Youtube Data API" ** extrahieren zu können. Ich habe die folgende Seite (API-Referenz) verwendet, um die API zu lernen. https://developers.google.com/youtube/v3/docs?hl=ja

Suchvorgang

Dieses Mal suchen wir zunächst unter den folgenden Bedingungen nach Videos und geben die Ergebnisse in eine CSV-Datei aus.

Außerdem wird das Video des Suchergebnisses frequenzverteilt, zu welchem Kanal es gehört, und in eine CSV-Datei ausgegeben.

Quellcode

Die Quelle ist wie folgt. Geben Sie für die Variable "DEVELOPER_KEY" im Programm Ihren eigenen API-Schlüssel ein. Die Methode zur Ausgabe des API-Schlüssels wird hier weggelassen.

searchKeyword.py


# import library
from apiclient.discovery import build
from apiclient.errors import HttpError
import argparse
import numpy as np
import pandas as pd

# Set Yotube Data API key
DEVELOPER_KEY = "YOUR API KEY!!!"
YOUTUBE_API_SERVICE_NAME = "youtube"
YOUTUBE_API_VERSION = "v3"

def searchKeyword(options):
    #Schlüsselwortsuchprozess
    youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION, 
                    developerKey=DEVELOPER_KEY)
    searchResults = youtube.search().list(q=options.sw,
                                        type="video",
                                        part="id,snippet",
                                        maxResults=options.max_results,
                                        order="viewCount"
                                        ).execute()
    
    #Verarbeitung der Suchergebnisklassifizierung
    videos = []
    others = []
    for searchResult in searchResults["items"]:
        if (searchResult["id"]["kind"] == "youtube#video"):
            videos.append(searchResult)
        else :
            others.append(searchResult)

    #Video, Formatierung von Kanalinformationen, Ausgabe von CSV-Dateien
    videoTitles = []
    viewCounts = []
    likeCounts = []
    dislikeCounts = []
    favoriteCounts = []
    commentCounts =[]
    videoChannelTitles = []
    stat_list = [viewCounts, likeCounts, dislikeCounts, favoriteCounts, commentCounts]
    stat_keywords = ['viewCount', 'likeCount', 'dislikeCount', 'favoriteCount', 'commentCount']
    for video in videos:
        videoDetail = youtube.videos().list( part="statistics, snippet",
                                            id = video["id"]["videoId"]
                                            ).execute()
        channelDetail = youtube.channels().list(part="snippet", 
                                                id=videoDetail["items"][0]["snippet"]["channelId"]
                                                ).execute()
        
        videoTitles.append(videoDetail["items"][0]["snippet"]["title"])
        for stat, stat_keyword in zip(stat_list, stat_keywords):
            try:
                stat.append(videoDetail["items"][0]["statistics"][stat_keyword])
            except KeyError:
                stat.append(0)
        videoChannelTitles.append(channelDetail["items"][0]["snippet"]["title"])

    df_videos = pd.DataFrame({"title":videoTitles, "ViewCount":viewCounts, 
                            "channelTitle":videoChannelTitles,"likeCount":likeCounts,
                            "dislikeCount":dislikeCounts, "favoriteCount":favoriteCounts,
                            "commentCount":commentCounts})
    df_videos.to_csv("Search_result_{}.csv".format(options.sw),encoding="utf-8_sig")
    df_videos_countbyChannel = df_videos["channelTitle"].value_counts()
    df_videos_countbyChannel.to_csv("ChannelTitle_{}.csv".format(options.sw),encoding="utf-8_sig")

    return df_videos, df_videos_countbyChannel
    


if __name__ == "__main__":
    # parse Argument
    parser = argparse.ArgumentParser("search Youtube Program...")
    parser.add_argument("sw", help="search Keyword in Youtube")
    parser.add_argument("--max_results", type=int, help="max of search results",
                        default=50)
    options = parser.parse_args()

    searchKeywordResults = searchKeyword(options)

Ich habe versucht zu rennen

Ich habe es tatsächlich bewegt. Geben Sie dieses Mal "Quantencomputer" als Suchschlüsselwort an und führen Sie es aus.

$ python searchKeyword.py "Quantencomputer"

"Search_result_quantum computer.csv" und "ChannelTitle_quantum computer.csv" werden in dem Verzeichnis erstellt, in dem "searchKeyword.py" abgelegt ist. Lassen Sie uns den Inhalt dieser beiden Dateien überprüfen.

--Search_result_ Quantum computer.csv (nur der Anfangsteil wird beschrieben)

No title ViewCount channelTitle likeCount dislikeCount favoriteCount commentCount
0 Quantum Computers Explained – Limits of Human Technology 12915763 Kurzgesagt – In a Nutshell 310808 3405 0 16871
1 [Minecraft]Pseudo-Quantenbit-Computer[Theoretisch der schnellste der Welt?] 4483432 Miki Tanabe 60153 2057 0 9898
2 Was ist der Unterschied zwischen einem Quantencomputer und einem normalen Computer? [Japanische Wissenschaftsinformation] [Wissenschaft und Technologie] 622469 Japanische wissenschaftliche Informationen 8019 435 0 647
3 Was ist ein "Quantencomputer", der die Welt verändert? Horiemon erklärt![NewsPicks-Zusammenarbeit] 232913 Takafumi Horie Horiemon 1443 121 0 275
4 Diese Welt ist eine Simulation. Wenn der Quantencomputer fertig ist...【Urbane Legende】 211623 Ich möchte Milchtee trinken 2722 142 0 411
5 [Erstaunlich] Auswirkungen des Quantencomputers "Unvorstellbares Missverständnis" 144126 Ichizero-System 1898 121 0 199
6 Spacon bei weitem übertrifft! Inländische Quantencomputer-Ankündigung(17/11/20) 121514 ANNnewsCH 1085 47 0 0
7 [Quantenmechanik] Lerne "Quantencomputer" und "Stern Gerlachs Experiment" 117389 Ikehaya Universität 1311 214 0 95
8 [Herausforderung] "Quantencomputer", der in 10 Minuten verstanden werden kann 110234 NEX-Industrie 1579 178 0 187
9 [Quantencomputer] Teil 1 "Überlagerung mit Quantenbits" (10 Minuten) 105738 Quantenmünze 0 0 0 58
10 Wird Bitcoin zusammenbrechen?⁉ Was wird Google mit der Entwicklung von Quantencomputern tun? Erklärung der Blockchain-Sicherheit usw. 99405 Mofumofu Immobilien 1675 121 0 192

Es scheint, dass ich die Videoinformationen gut bekommen konnte.

--ChannelTitle_Quantum Computer.csv (nur der Anfangsteil wird aufgelistet)

Kanal Name Count
Quantenmünze 7
Keio Universität Keio Universität 5
DENSO Official Channel 2
Shino TV 2
Drücken Sie SAMURAI 2
Mofumofu Immobilien 2
jstsciencechannel 1
EE Times Japan 1
Ich möchte Milchtee trinken 1
Angenehme Seite Bright Side Japan

Es scheint, dass ich die Informationen hier gut bekommen konnte.

Schließlich

Wenn Sie dies anwenden, können Sie verschiedene interessante Dinge tun. Ich werde die Funktionen nach und nach erweitern, damit ich etwas mehr tun kann.

Recommended Posts

Ich habe versucht, Videos mit der Youtube Data API (Anfänger) zu suchen.
Ich habe versucht, YOUTUBE Data API V3 zu verwenden
[Python] Ich habe versucht, mithilfe der YouTube-Daten-API verschiedene Informationen abzurufen!
Laden Sie Videos mit der YouTube-API hoch
Ich habe versucht, die API von Sakenowa Data Project zu verwenden
Ich habe versucht, eine Quip-API zu erstellen
Ich habe Teslas API berührt
[Python] Ich habe versucht, Daten mit der API von Wikipedia zu sammeln
Ich habe versucht, scRNA-seq-Daten mithilfe der topologischen Datenanalyse (TDA) zu analysieren.
Ich habe versucht, die checkio-API zu verwenden
Ich habe versucht, mit pypyodbc schnell Daten von AS / 400 abzurufen
Ich habe versucht, meinen Lieblingssänger (SHISHAMO) mit der Spotify-API zu analysieren
Ich habe versucht, BigQuery-Daten mit Jupyter Lab mit GCP zu visualisieren
Ich habe versucht, mit pypyodbc Preparation 1 schnell Daten von AS / 400 abzurufen
Ich habe versucht, Azure Speech to Text zu verwenden.
Ich habe versucht, Text mit TensorFlow zu klassifizieren
Ich habe versucht, die selektive Suche als R-CNN zu verwenden
Holen Sie sich Youtube-Daten in Python mithilfe der Youtube-Daten-API
Ich habe versucht, die UnityCloudBuild-API von Python zu verwenden
Ich habe versucht, die COTOHA-API zu berühren
Ich habe eine Web-API erstellt
So laden Sie YouTube-Videos mit pytube3 herunter
Ich habe versucht, die BigQuery-Speicher-API zu verwenden
Ich habe versucht, verschiedene Sätze mit der automatischen Zusammenfassungs-API "summpy" zusammenzufassen.
Ich habe versucht, eine Clusteranalyse von Kunden anhand von Kaufdaten durchzuführen
Ich habe versucht, die Detect Labels-API von AWS Rekognition zu verwenden
Ich habe versucht, Remote API mit GAE / J zu verwenden
[Python] Holen Sie sich alle Kommentare mit Youtube Data Api
Ich habe versucht, die Daten mit Zwietracht zu speichern
Ich habe versucht, WAV-Dateien mit Pydub zu synthetisieren.
Ich habe versucht, die Google Cloud Vision-API zu verwenden
Ich habe versucht, CloudWatch-Daten mit Python abzurufen
So erhalten Sie Artikeldaten mithilfe der Qiita-API
So suchen Sie HTML-Daten mit Beautiful Soup
Ich habe DBM mit Pylearn 2 unter Verwendung künstlicher Daten ausprobiert
Ich habe ein ○ ✕ Spiel mit TensorFlow gemacht
Ich habe eine Burgsuch-API mit Elasticsearch + Sudachi + Go + Echo erstellt
Ich habe versucht, eine verdächtige Person mithilfe von Geolonia-Adressdaten schnell zu einem MAP zu machen
Ich habe versucht, parametrisiert zu verwenden
Ich habe versucht, Argparse zu verwenden
Ich habe versucht, Mimesis zu verwenden
Ich habe versucht, aiomysql zu verwenden
Ich habe versucht, Summpy zu verwenden
Ich habe versucht, Coturn zu verwenden
Ich habe versucht, Pipenv zu verwenden
Ich habe versucht, Matplotlib zu verwenden
Ich habe versucht, "Anvil" zu verwenden.
Ich habe versucht, Hubot zu verwenden
Ich habe versucht, ESPCN zu verwenden
Ich habe versucht, openpyxl zu verwenden
Ich habe versucht, Ipython zu verwenden
Ich habe versucht zu debuggen.
Ich habe versucht, PyCaret zu verwenden
Ich habe versucht, Cron zu verwenden
Ich habe versucht, ngrok zu verwenden
Ich habe versucht, face_recognition zu verwenden