连接到YouTube API并下载网址 - 获取KeyError

时间:2016-07-17 03:34:13

标签: python

我的目标是连接到Youtube API并下载特定音乐制作人的网址。我从以下链接找到了以下脚本:https://www.youtube.com/watch?v=_M_wle0Iq9M。在视频中,代码工作得很漂亮。但是当我在python 2.7上尝试它时,它给了我KeyError:'items'。

我知道在错误使用字典或密钥不存在时可能会发生KeyErrors。

我已尝试访问youtube的google开发者网站,以确保“商品”存在且确实存在。

我也知道使用get()可能对我的问题有帮助,但我不确定。有关使用以下代码修复我的KeyError的任何建议或有关如何改进我的代码以达到我下载URL的主要目标的任何建议(我有一个Youtube API)?

以下是代码:

#these modules help with HTTP request from Youtube
import urllib 
import urllib2 
import json 


API_KEY = open("/Users/ereyes/Desktop/APIKey.rtf","r") 
API_KEY = API_KEY.read() 

searchTerm = raw_input('Search for a video:')

searchTerm = urllib.quote_plus(searchTerm) 

url = 'https://www.googleapis.com/youtube/v3/search?part=snippet&q='+searchTerm+'&key='+API_KEY  

response = urllib.urlopen(url) 

videos = json.load(response) 

videoMetadata = [] #declaring our list

for video in videos['items']: #"for loop" cycle through json response and searches in items 

    if video['id']['kind'] == 'youtube#video': #makes sure that item we are looking at is only videos
        videoMetadata.append(video['snippet']['title']+ # getting title of video and putting into list
        "\nhttp://youtube.com/watch?v="+video['id']['videoId'])                       

videoMetadata.sort(); # sorts our list alphaetically

print ("\nSearch Results:\n")  #print out search results

for metadata in videoMetadata:
    print (metadata)+"\n"

raw_input('Press Enter to Exit')

1 个答案:

答案 0 :(得分:1)

问题很可能是使用RTF文件而不是纯文本文件作为API密钥的组合,您似乎很困惑,因为您导入了两者都是使用urllib或urllib2。

就个人而言,我会推荐requests,但我认为您需要读取()请求的内容以获取字符串

response = urllib.urlopen(url).read() 

您可以通过打印响应变量

来检查