我的目标是连接到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')
答案 0 :(得分:1)
问题很可能是使用RTF文件而不是纯文本文件作为API密钥的组合,您似乎很困惑,因为您导入了两者都是使用urllib或urllib2。
就个人而言,我会推荐requests,但我认为您需要读取()请求的内容以获取字符串
response = urllib.urlopen(url).read()
您可以通过打印响应变量
来检查