ArgumentError:参数--q:冲突的选项字符串:YouTube Data API中的--q

时间:2017-05-28 04:36:22

标签: python youtube google-api youtube-data-api

我正在尝试使用python代码中的YouTube Data API搜索YouTube视频。我收到Argument Error并且无法解决此问题。已经很少有类似的问题了。但到目前为止,还没有解决这个问题的方法。我怎样才能达到效果?我尝试使用youtube data API' github中提供的相同代码。我在以下代码中收到上述错误。

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 = "API KEY" # added perfectly
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="funny videos")
  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)

错误的堆栈跟踪是

ArgumentErrorTraceback (most recent call last)
<ipython-input-6-d78ab4f2931f> in <module>()
     47 
     48 if __name__ == "__main__":
---> 49   argparser.add_argument("--q", help="Search term", default="funny videos")
     50   argparser.add_argument("--max-results", help="Max results", default=25)
     51   args = argparser.parse_args()

C:\Anaconda\lib\argparse.pyc in add_argument(self, *args, **kwargs)
   1306                 raise ValueError("length of metavar tuple does not match nargs")
   1307 
-> 1308         return self._add_action(action)
   1309 
   1310     def add_argument_group(self, *args, **kwargs):

C:\Anaconda\lib\argparse.pyc in _add_action(self, action)
   1680     def _add_action(self, action):
   1681         if action.option_strings:
-> 1682             self._optionals._add_action(action)
   1683         else:
   1684             self._positionals._add_action(action)

C:\Anaconda\lib\argparse.pyc in _add_action(self, action)
   1507 
   1508     def _add_action(self, action):
-> 1509         action = super(_ArgumentGroup, self)._add_action(action)
   1510         self._group_actions.append(action)
   1511         return action

C:\Anaconda\lib\argparse.pyc in _add_action(self, action)
   1320     def _add_action(self, action):
   1321         # resolve any conflicts
-> 1322         self._check_conflict(action)
   1323 
   1324         # add to actions list

C:\Anaconda\lib\argparse.pyc in _check_conflict(self, action)
   1458         if confl_optionals:
   1459             conflict_handler = self._get_handler()
-> 1460             conflict_handler(action, confl_optionals)
   1461 
   1462     def _handle_conflict_error(self, action, conflicting_actions):

C:\Anaconda\lib\argparse.pyc in _handle_conflict_error(self, action, conflicting_actions)
   1465                                      for option_string, action
   1466                                      in conflicting_actions])
-> 1467         raise ArgumentError(action, message % conflict_string)
   1468 
   1469     def _handle_conflict_resolve(self, action, conflicting_actions):

ArgumentError: argument --q: conflicting option string(s): --q

0 个答案:

没有答案