J'aime les vidéos de la série «Singing with XX», alors j'ai soudainement voulu collecter des informations sur les vidéos populaires de la série «Singing with XX» sur YouTube. Je n'ai pas d'utilisation spécifique, mais j'ai pensé que ce serait amusant d'analyser diverses choses telles que le type de parodie qui intéresse beaucoup de gens.
Donc, cette fois, j'ai essayé d'obtenir les informations vidéo de "Singing in XX series" en utilisant Python et YouTube Data API (v3). Pour être honnête, en termes de collecte d'informations vidéo, il n'y a rien de nouveau sur le site auquel j'ai fait référence (tout au plus, la différence dans les dernières informations de sortie), mais depuis que j'ai essayé d'utiliser l'API de données YouTube pour la première fois, cela Je vais l'écrire sous forme de mémorandum.
Confirmé pour travailler avec Google Colaboratory (à compter du 23 février 2020)
Obtenez la clé API pour l'API de données YouTube (v3). La procédure est également disponible sur les sites de référence, je vais donc l'omettre ici. Il n'y a aucune restriction sur les clés API.
Les informations vidéo incluses dans les résultats de la recherche par la requête spécifiée sont acquises et émises en standard. Le code recueille des informations sur les joueurs de baseball à titre d'exemple.
from apiclient.discovery import build # pip install google-api-python-client
import datetime
YOUTUBE_API_KEY = '<Remplissez la clé API>'
query = 'J'ai essayé de chanter avec le nom du joueur de baseball'
max_pages = 16 #Nombre de pages à obtenir
maxResults = 50 #Le nombre de résultats de recherche à inclure par page. max est de 50
#Fonction pour obtenir des informations vidéo
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
#Extraire les informations souhaitées des informations vidéo acquises et les mettre dans la liste
#Cette heure, l'ID, l'URL, la date et l'heure de publication, l'ID de chaîne de l'affiche, le titre de la vidéo, le nombre de vues, la note élevée, la note faible, le nombre de favoris sont acquis et le temps d'exécution du programme est également ajouté.
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]))
Cette fois, nous avons obtenu l'identifiant, l'URL, la date et l'heure de publication, l'identifiant de la chaîne de l'affiche, le titre de la vidéo, le nombre de vues, la note élevée, la note faible, le nombre de favoris et le nombre de commentaires. Je ne sais pas quel est le «compte préféré». Je l'ai eu au cas où car il était inclus dans les données, mais tout était à 0.
La sortie finale était la sortie standard (impression) et je l'ai copiée dans Google SpreadSheet telle quelle. Il semble que ce qui suit est collé
Quand j'ai vérifié visuellement les résultats, il semblait qu'il y avait du bruit comme une vidéo d'une émission de baseball ou une série que j'ai essayé de chanter sans rapport, donc je dois le supprimer manuellement. De plus, si vous souhaitez acquérir de manière plus complète, il semble préférable d'exécuter le programme avec un autre mot de recherche tel que "Yakyuta" et d'ajouter uniquement ceux dont l'ID vidéo ne chevauche pas les résultats d'acquisition jusqu'à présent.
C'est tout pour le codage. À l'avenir, je pense qu'il serait intéressant de retranscrire les mots utilisés dans les paroles des airs et d'analyser les types d'airs susceptibles de devenir populaires. Cela ne semble pas être)
Recommended Posts