Getting Youtube data using Python

旧时模样 提交于 2019-12-10 15:16:12

问题


I'm trying to learn how to analyze social media data available on the web and I'm starting with Youtube.

from apiclient.errors import HttpError
from outh2client.tools import argparser
from apiclient.discovery import build
import pandas as pd
DEVELOPER_KEY = "AIzaSyB_F1mCrDydEbGUosnZES-NW-mg1CaOyjI"
YOUTUBE_API_SERVICE_NAME = "youtube"
YOUTUBE_API_VERSION = "v3"
argparser.add_argument("--q", help="Search term", default="apple product")
argparser.add_argument("--max-results", help="Max results", default=50)
args = argparser.parse_args()
options = args

And I get this error.

ArgumentError                             Traceback (most recent call last)
<ipython-input-37-ebbf58549b73> in <module>()
----> 1 argparser.add_argument("--q", help="Search term", default="apple product")
  2 argparser.add_argument("--max-results", help="Max results", default=50)
  3 args = argparser.parse_args()
  4 options = args

/usr/lib/python2.7/argparse.py 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):

/usr/lib/python2.7/argparse.py 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)

/usr/lib/python2.7/argparse.py 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
/usr/lib/python2.7/argparse.py 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

/usr/lib/python2.7/argparse.py 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):

/usr/lib/python2.7/argparse.py 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

I'm using a tutorial for this but I get an error.


回答1:


It looks like the parser that you import

from outh2client.tools import argparser

already has defined a -q argument. You can check that by looking at its code, or by doing a argparser.print_help() (before adding anything yourself).

So the simplest solution is to choose another name for your argument.

The relevant docs are

https://docs.python.org/3.4/library/argparse.html#conflict-handler

found by looking up 'conflict' on that page.

The parser defined on https://github.com/google/oauth2client/blob/master/oauth2client/tools.py does not have a -q argument. Is this your source? I assume the missing a is a spelling error.



来源:https://stackoverflow.com/questions/30818753/getting-youtube-data-using-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!