如何附加' null'或' n/a'从YouTube API提取数据时的价值

发布于 2025-02-10 13:32:43 字数 1183 浏览 3 评论 0原文

我的代码允许从YouTube API调用数据,并将其列入列表以形成数据FRAM。 但是,当API无法访问“项目”时,它会返回错误。为了避免错误,我需要附加“ n/a”或“ null”,并在API无法访问某些项目时通过。

def get_channel_stats(youtube, channel_ids):
all_data = []
for i in range(0, len(channel_ids), 50):
    request = youtube.channels().list(
                part='snippet,contentDetails,statistics',
                id = ','.join(channel_ids[i:i+50]))
    response = request.execute()

    for i in range(len(response['items'])):
        data = dict(channel_name = response['items'][i]['snippet']['title'],
                    published_date = response['items'][i]['snippet']['publishedAt'],
                    subscribers = response['items'][i]['statistics']['subscriberCount'],
                    views = response['items'][i]['statistics']['viewCount'],
                    total_videos = response['items'][i]['statistics']['videoCount'],
                    playlist_id = response['items'][i]['contentDetails']['relatedPlaylists']['uploads'],
                    retrieved_date = date.today().strftime('%Y/%m/%d')              
                    )
        
        all_data.append(data)
return all_data

任何指示或建议都会非常有帮助。

谢谢您。

My code allows to call data from Youtube API and put them into list to form a datafram.
However, when the API cannot access the 'items' it returns error. In order to avoid errors, I need to append 'n/a' or 'null' and pass when the API cannot access certain items.

def get_channel_stats(youtube, channel_ids):
all_data = []
for i in range(0, len(channel_ids), 50):
    request = youtube.channels().list(
                part='snippet,contentDetails,statistics',
                id = ','.join(channel_ids[i:i+50]))
    response = request.execute()

    for i in range(len(response['items'])):
        data = dict(channel_name = response['items'][i]['snippet']['title'],
                    published_date = response['items'][i]['snippet']['publishedAt'],
                    subscribers = response['items'][i]['statistics']['subscriberCount'],
                    views = response['items'][i]['statistics']['viewCount'],
                    total_videos = response['items'][i]['statistics']['videoCount'],
                    playlist_id = response['items'][i]['contentDetails']['relatedPlaylists']['uploads'],
                    retrieved_date = date.today().strftime('%Y/%m/%d')              
                    )
        
        all_data.append(data)
return all_data

Any directions or advice would be very helpful.

Thank you in advanced.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

这样的小城市 2025-02-17 13:32:43

请让我知道这是否有效:

def get_channel_stats(youtube, channel_ids):
    all_data = []
    for i in range(0, len(channel_ids), 50):
        request = youtube.channels().list(
                part='snippet,contentDetails,statistics',
                id = ','.join(channel_ids[i:i+50]))
        response = request.execute()
        
    if resp.items:
        for i in range(len(response['items'])):
            data = dict(channel_name = response['items'][i]['snippet']['title'],
                        published_date = response['items'][i]['snippet']['publishedAt'],
                        subscribers = response['items'][i]['statistics']['subscriberCount'],
                        views = response['items'][i]['statistics']['viewCount'],
                        total_videos = response['items'][i]['statistics']['videoCount'],
                        playlist_id = response['items'][i]['contentDetails']['relatedPlaylists']['loads'],
                        retrieved_date = date.today().strftime('%Y/%m/%d')              
                        )
            
            all_data.append(data)
    else:
        all_data.append('n/a')
    
    return all_data

我要做的就是检查request.execute()的JSON是否具有称为items的东西;如果确实如此,我继续进行您的循环,如果没有,我将'n/a'附加到all_data list。

Please let me know if this works:

def get_channel_stats(youtube, channel_ids):
    all_data = []
    for i in range(0, len(channel_ids), 50):
        request = youtube.channels().list(
                part='snippet,contentDetails,statistics',
                id = ','.join(channel_ids[i:i+50]))
        response = request.execute()
        
    if resp.items:
        for i in range(len(response['items'])):
            data = dict(channel_name = response['items'][i]['snippet']['title'],
                        published_date = response['items'][i]['snippet']['publishedAt'],
                        subscribers = response['items'][i]['statistics']['subscriberCount'],
                        views = response['items'][i]['statistics']['viewCount'],
                        total_videos = response['items'][i]['statistics']['videoCount'],
                        playlist_id = response['items'][i]['contentDetails']['relatedPlaylists']['loads'],
                        retrieved_date = date.today().strftime('%Y/%m/%d')              
                        )
            
            all_data.append(data)
    else:
        all_data.append('n/a')
    
    return all_data

All I am doing is checking if the JSON returned by request.execute() has something called items; if it does, I proceed with your for loop, and if it doesn't, I append 'n/a' to the all_data list.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文