[PYTHON] J'ai essayé de rechercher des vidéos à l'aide de l'API de données Youtube (débutant)

introduction

L'entrée est importante pour étudier l'analyse des données, mais la pratique est la meilleure, alors j'ai pensé qu'il y aurait de bonnes données à pratiquer. Pour être honnête, je ne peux pas juger si les données Youtube sont bonnes. Cependant, je regarde souvent Youtube, et comme c'est un domaine d'intérêt, je voudrais résumer comment l'utiliser dans le but de pouvoir extraire des données pour analyse en utilisant ** "Youtube Data API" **. J'ai utilisé la page suivante (référence API) pour apprendre l'API. https://developers.google.com/youtube/v3/docs?hl=ja

Processus de recherche

Cette fois, nous rechercherons des vidéos dans les conditions suivantes et afficherons les résultats dans un fichier csv.

De plus, la vidéo du résultat de la recherche est répartie en fréquence sur le canal auquel elle appartient et est sortie dans un fichier csv.

Code source

La source est la suivante. Pour la variable "DEVELOPER_KEY" dans le programme, entrez votre propre clé API. La méthode d'émission de la clé API est omise ici.

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):
    #Processus de recherche par mot-clé
    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()
    
    #Traitement de la classification des résultats de recherche
    videos = []
    others = []
    for searchResult in searchResults["items"]:
        if (searchResult["id"]["kind"] == "youtube#video"):
            videos.append(searchResult)
        else :
            others.append(searchResult)

    #Vidéo, formatage des informations de canal, sortie de fichier csv
    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)

J'ai essayé de courir

Je l'ai en fait déplacé. Cette fois, spécifiez «ordinateur quantique» comme mot-clé de recherche et exécutez.

$ python searchKeyword.py "Ordinateur quantique"

"Search_result_quantum computer.csv" et "ChannelTitle_quantum computer.csv" sont créés dans le répertoire où "searchKeyword.py" est placé. Vérifions le contenu de ces deux fichiers.

--Search_result_ Quantum computer.csv (seule la partie de début est décrite)

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]Ordinateur pseudo-bit quantique[Le plus rapide du monde en théorie?] 4483432 Miki Tanabe 60153 2057 0 9898
2 Quelle est la différence entre un ordinateur quantique et un ordinateur normal? [Information scientifique japonaise] [Science et technologie] 622469 Informations scientifiques japonaises 8019 435 0 647
3 Qu'est-ce qu'un "ordinateur quantique" qui change le monde? Horiemon explique![Collaboration NewsPicks] 232913 Takafumi Horie Horiemon 1443 121 0 275
4 Ce monde est une simulation⁉ Si l'ordinateur quantique est terminé...【légende urbaine】 211623 Je veux boire du thé au lait 2722 142 0 411
5 [Incroyable] Impact de l'ordinateur quantique "Incompréhension inimaginable" 144126 Système Ichizero 1898 121 0 199
6 Surpasse de loin Spacon! Annonce de l'ordinateur quantique domestique(17/11/20) 121514 ANNnewsCH 1085 47 0 0
7 [Mécanique quantique] Apprenez "l'ordinateur quantique" et "l'expérience de Stern Gerlach" 117389 Université d'Ikehaya 1311 214 0 95
8 [Challenge] «Ordinateur quantique» compréhensible en 10 minutes 110234 Industrie NEX 1579 178 0 187
9 [Ordinateur quantique] Partie 1 "Superposition de bits quantiques" (10 minutes) 105738 Pièce quantique 0 0 0 58
10 Bitcoin s'effondrera-t-il?⁉ Que fera Google du développement informatique quantique? Explication de la sécurité de la blockchain, etc. 99405 Immobilier Mofumofu 1675 121 0 192

Il semble que j'ai pu bien obtenir les informations vidéo.

--ChannelTitle_Quantum Computer.csv (seule la partie de début est répertoriée)

Nom du canal Count
Pièce quantique 7
Université Keio Université Keio 5
DENSO Official Channel 2
Shino TV 2
Appuyez sur SAMURAI 2
Immobilier Mofumofu 2
jstsciencechannel 1
EE Times Japan 1
Je veux boire du thé au lait 1
Le bon côté Bright Side Japan

Il semble que j'ai pu bien obtenir les informations ici.

finalement

Si vous appliquez cela, vous pouvez faire diverses choses intéressantes. Je vais étendre les fonctions petit à petit pour pouvoir en faire un peu plus.

Recommended Posts

J'ai essayé de rechercher des vidéos à l'aide de l'API de données Youtube (débutant)
J'ai essayé d'utiliser l'API de données YOUTUBE V3
[Python] J'ai essayé d'obtenir diverses informations en utilisant l'API de données YouTube!
Mettre en ligne des vidéos à l'aide de l'API YouTube
J'ai essayé d'utiliser l'API de Sakenowa Data Project
J'ai essayé de créer l'API Quip
J'ai touché l'API de Tesla
[Python] J'ai essayé de collecter des données en utilisant l'API de wikipedia
J'ai essayé d'analyser les données scRNA-seq en utilisant l'analyse des données topologiques (TDA)
J'ai essayé d'utiliser l'API checkio
J'ai essayé d'obtenir rapidement des données d'AS / 400 en utilisant pypyodbc
J'ai essayé d'analyser mon chanteur préféré (SHISHAMO) en utilisant l'API Spotify
J'ai essayé de visualiser les données BigQuery à l'aide de Jupyter Lab avec GCP
J'ai essayé d'obtenir rapidement des données d'AS / 400 en utilisant pypyodbc Préparation 1
J'ai essayé d'utiliser Azure Speech to Text.
J'ai essayé de classer le texte en utilisant TensorFlow
J'ai essayé d'utiliser la recherche sélective comme R-CNN
Obtenez des données Youtube en Python à l'aide de l'API Youtube Data
J'ai essayé d'utiliser l'API UnityCloudBuild de Python
J'ai essayé de toucher l'API COTOHA
J'ai créé une API Web
Comment télécharger des vidéos YouTube à l'aide de pytube3
J'ai essayé d'utiliser l'API BigQuery Storage
J'ai essayé de résumer diverses phrases à l'aide de l'API de synthèse automatique "summpy"
J'ai essayé d'effectuer une analyse de cluster de clients à l'aide des données d'achat
J'ai essayé d'utiliser l'API Detect Labels d'AWS Rekognition
J'ai essayé d'utiliser l'API à distance avec GAE / J
[Python] Obtenez tous les commentaires à l'aide de Youtube Data Api
J'ai essayé de sauvegarder les données avec discorde
J'ai essayé de synthétiser des fichiers WAV en utilisant Pydub.
J'ai essayé d'utiliser l'API Google Cloud Vision
J'ai essayé d'obtenir des données CloudWatch avec Python
Comment obtenir des données d'article à l'aide de l'API Qiita
Comment rechercher des données HTML à l'aide de Beautiful Soup
J'ai essayé DBM avec Pylearn 2 en utilisant des données artificielles
J'ai créé un jeu ○ ✕ avec TensorFlow
J'ai créé une API de recherche de château avec Elasticsearch + Sudachi + Go + echo
J'ai essayé de faire MAP rapidement une personne suspecte en utilisant les données d'adresse Geolonia
J'ai essayé d'utiliser paramétré
J'ai essayé d'utiliser argparse
J'ai essayé d'utiliser la mimesis
J'ai essayé d'utiliser aiomysql
J'ai essayé d'utiliser Summpy
J'ai essayé d'utiliser coturn
J'ai essayé d'utiliser Pipenv
J'ai essayé d'utiliser matplotlib
J'ai essayé d'utiliser "Anvil".
J'ai essayé d'utiliser Hubot
J'ai essayé d'utiliser ESPCN
J'ai essayé d'utiliser openpyxl
J'ai essayé d'utiliser Ipython
J'ai essayé de déboguer.
J'ai essayé d'utiliser PyCaret
J'ai essayé d'utiliser cron
J'ai essayé d'utiliser ngrok
J'ai essayé d'utiliser face_recognition