0

次の URL を呼び出して、Python を使用して返された JSON を取得しようとしています。

http://gdata.youtube.com/feeds/api/users/pbsnewshour/uploads?v=2&alt=jsonc&prettyprint=true

しかし、私が得たのは次のとおりです。

 File "/base/data/home/runtimes/python27/python27_dist/lib/python2.7/urllib2.py", line 531, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 403: Forbidden

gae アプリ用の YouTube Analytics API と YouTube Data API v3 サービスをオンにしたことを付け加える必要があります。

これは私がPython側で使用するコードです:

req = urllib2.Request(url, headers={'User-Agent' : "Magic Browser"})
response = urllib2.urlopen( req )
dump = response.read()
d = json.loads(dump)

ローカルではすべて正常に動作します。

これを解決する方法について何か考えはありますか?

4

3 に答える 3

0

ここでいくつかの問題が発生しています。まず、YouTube Data API v3 サービスをオンにしたため、API の v3 を使用する必要があります。ただし、例で要求している URL は API の v2 用です。これに対応する v3 に使用するエンドポイントは次のとおりです。

https://www.googleapis.com/youtube/v3/playlistItems?part=snippet%2CcontentDetails&playlistId=UU6ZFN9Tx6xh-skXCuRHCDpQ&key={YOUR_API_KEY}

次に、別の投稿で言及されているように、リクエストで API キーを使用する必要があります。API の v3 では、Google API コンソール(または新しいCloud Console ) でこれを行うことができ、アプリの「ブラウザ キー」と呼ばれるものを生成します。それをエンドポイントの関連する場所に追加すると、目的の JSON が返されます。

最後に、上記のリクエスト URL でプレイリスト ID のパラメーターとして使用されている長い文字列がどこから来たのか疑問に思われるかもしれません。API の v3 では、次のようにユーザーの「チャネル」エンドポイントにリクエストを送信できます。

https://www.googleapis.com/youtube/v3/channels?part=snippet%2CcontentDetails&forUsername=pbsnewshour&key={YOUR_API_KEY}

そして、そのユーザーに関連するさまざまなフィードが返されます。そこから抽出した文字列は「アップロード」フィードなので、元の投稿で探していたものに対応しています。

于 2013-10-11T05:11:22.103 に答える