2016-06-14 7 views
0

YouTube APIを使用して、YouTubeがリリースする次のコードでデータを取得しようとしています。個人用のAPIキーと括弧もprintに追加しましたが、コードは機能しません。私がPyCharmでそれを実行しようとすると、私は得る:Python 3.5キーワードによるYoutube APIの検索:ブロックを除くSyntaxError

except HttpError, e: 
        ^
SyntaxError: invalid syntax 

私はなぜそれを理解していない。 ここでは、コードは次のとおり

#!/usr/bin/python 

from apiclient.discovery import build 
from apiclient.errors import HttpError 
from oauth2client.tools import argparser 


# Set DEVELOPER_KEY to the API key value from the APIs & auth > Registered apps 
# tab of 
# https://cloud.google.com/console 
# Please ensure that you have enabled the YouTube Data API for your project. 
DEVELOPER_KEY = "MY_API_KEY" 
YOUTUBE_API_SERVICE_NAME = "youtube" 
YOUTUBE_API_VERSION = "v3" 

def youtube_search(options): 
    youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION, 
    developerKey=DEVELOPER_KEY) 

    # Call the search.list method to retrieve results matching the specified 
    # query term. 
    search_response = youtube.search().list(
    q=options.q, 
    part="id,snippet", 
    maxResults=options.max_results 
).execute() 

    videos = [] 
    channels = [] 
    playlists = [] 

    # Add each result to the appropriate list, and then display the lists of 
    # matching videos, channels, and playlists. 
    for search_result in search_response.get("items", []): 
    if search_result["id"]["kind"] == "youtube#video": 
     videos.append("%s (%s)" % (search_result["snippet"]["title"], 
           search_result["id"]["videoId"])) 
    elif search_result["id"]["kind"] == "youtube#channel": 
     channels.append("%s (%s)" % (search_result["snippet"]["title"], 
            search_result["id"]["channelId"])) 
    elif search_result["id"]["kind"] == "youtube#playlist": 
     playlists.append("%s (%s)" % (search_result["snippet"]["title"], 
            search_result["id"]["playlistId"])) 

    print ("Videos:\n", "\n".join(videos), "\n") 
    print ("Channels:\n", "\n".join(channels), "\n") 
    print ("Playlists:\n", "\n".join(playlists), "\n") 


if __name__ == "__main__": 
    argparser.add_argument("--q", help="Search term", default="Rome") 
    argparser.add_argument("--max-results", help="Max results", default=25) 
    args = argparser.parse_args() 

    try: 
    youtube_search(args) 
    except HttpError, e: 
    print ("An HTTP error %d occurred:\n%s" % (e.resp.status, e.content)) 

答えて

1

元のコードはPython 2のために書かれ、あなたは(Pythonの3のために必要である)関数にprint変換中にexceptブロックを変換するのを忘れた。

except HttpError as e:であるがPythonの3つの方法の例外を実行するが、すべての例外を除いてはexcept e:を使用することもできます(あなたが望むものではないかもしれません)。

また、Python 2と3の変更点については、hereを参照してください。いくつかあなたを驚かせるかもしれません!

+1

Python3の構文はPython2でも有効なので、Python2のコードでもそれが望ましいはずです。 – zondo

関連する問題