私の目標はYoutube APIに接続して特定の音楽プロデューサのURLをダウンロードすることです。次のリンクから使用した次のスクリプトが見つかりました:https://www.youtube.com/watch?v=_M_wle0Iq9Mビデオではコードが美しく機能します。しかし、私はPython 2.7でそれを試してみると、私はKeyError: 'items'を返します。YouTube APIに接続してURLをダウンロードする - KeyErrorを取得する
私が知っている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')
応答変数を印刷していることを確認することができますそこにあるものを見るために 'videos'を印刷しようとしましたか?例えば'print json.dumps(ビデオ、インデント= 2)'。おそらくAPIがあなたに何らかのエラー応答を与えているかもしれません。(無許可または何か) – mgilson
副疑問:なぜAPIキーをRTFファイルに保存していますか? –
@ cricket_007それは実際には副次的な問題ではないかもしれません。 RTF形式には、ファイルの先頭に書式を設定するためのジャンクが含まれる傾向があります。おそらくそのジャンクがAPIキーの一部としてYouTubeに送信されている可能性があります(401(またはそのilkのその他のエラー)が発生する可能性があります)。 – pzp