首页 > 解决方案 > 通过循环 CSV python 的标题列在 YouTube API 上运行多个查询

问题描述

我正在使用 YouTubes API 从音乐视频列表中获取评论数据。我现在的工作方式是手动输入我的查询,然后将数据写入 csv 文件并像这样重复每首歌曲。

query = "song title"


query_results = service.search().list(
        part = 'snippet',
        q = query,
        order = 'relevance', # You can consider using viewCount
        maxResults = 20,
        type = 'video', # Channels might appear in search results
        relevanceLanguage = 'en',
        safeSearch = 'moderate',
        ).execute()

我想做的是使用 csv 文件中的标题和艺术家列,其中包含我试图收集数据的歌曲标题,这样我就可以运行程序一次,而不必每次都手动输入歌曲。

一位朋友建议使用这样的东西

import pandas as pd

data = pd.read_csv("metadata.csv")
def songtitle():
for i in data.index:
    title = data.loc[i,'title']
    title = '\"' + title + '\"'
    artist = data.loc[i,'artist']

return(artist, title)

但我不确定我将如何使这项工作,因为当我运行它时,它只返回最后一行数据,即使它运行正确,我将如何处理让整个程序为每个实例重复它自己的一首新歌。

标签: pythonyoutube-data-api

解决方案


您可以将歌曲名称和艺术家保存到列表中,循环遍历该列表以获取详细信息。

def get_songTitles():
    data = pd.read_csv("metadata.csv")
    return data['artist'].tolist(),data['title'].tolist()

artist, song_titles  = get_songTitles()
for song in song_titles:
    query_results = service.search().list(
                                            part = 'snippet',
                                            q = song,
                                            order = 'relevance', # You can consider using viewCount
                                            maxResults = 20,
                                            type = 'video', # Channels might appear in search results
                                            relevanceLanguage = 'en',
                                            safeSearch = 'moderate',
                                        ).execute()


推荐阅读