Youtube api YouTube API v2/feed/API/videos/VIDEOID在200+;请求:400个错误请求

Youtube api YouTube API v2/feed/API/videos/VIDEOID在200+;请求:400个错误请求,youtube-api,feed,bad-request,Youtube Api,Feed,Bad Request,我已经发布了大约7000个视频,需要制作大约500个“未上市”。首先,我想浏览这些视频的列表,并查看它们当前的“访问”“操作”“已列出”状态 我使用YouTube V2 API,对我的内容进行OAUTH身份验证。然后,我使用以下查询循环查看视频ID列表: url = 'http://gdata.youtube.com/feeds/api/videos/' + youtube_id + '?alt=json' 在大约214次请求之后,所有后续请求都失败了: <HTML>

我已经发布了大约7000个视频,需要制作大约500个“未上市”。首先,我想浏览这些视频的列表,并查看它们当前的“访问”“操作”“已列出”状态

我使用YouTube V2 API,对我的内容进行OAUTH身份验证。然后,我使用以下查询循环查看视频ID列表:

    url = 'http://gdata.youtube.com/feeds/api/videos/' + youtube_id + '?alt=json'
在大约214次请求之后,所有后续请求都失败了:

<HTML>
  <HEAD>
    <TITLE>Bad Request</TITLE>
  </HEAD>
  <BODY BGCOLOR="#FFFFFF" TEXT="#000000">
    <H1>Bad Request</H1>
    <H2>Error 400</H2>
  </BODY>
</HTML>

headers={'status': '400', 'content-length': '145', 'x-xss-protection': '1; mode=block', 'x-content-type-options': 'nosniff', 'expires': 'Fri, 21 Jun 2013 20:08:28 GMT', 'server': 'GSE', 'cache-control': 'private, max-age=0', 'date': 'Fri, 21 Jun 2013 20:08:28 GMT', 'x-frame-options': 'SAMEORIGIN', 'content-type': 'text/html; charset=UTF-8'} 

错误的请求
错误的请求
错误400
headers={'status':'400','content length':'145','x-xss-protection':'1;mode=block','x-content-type-options':'nosniff','expires':'Fri,2013年6月21日20:08:28 GMT','server':'GSE','cache control':'private,max age=0','date:'Fri,2013年6月21日20:08:28 GMT','x-frame-options':'SAMEORIGIN','content-type':'text/html;charset=UTF-8'}
目前还没有关于这一点以及剩余的~300失败原因的详细信息

这是可重复的,如果我在214次之后一次又一次地重新运行它就会消失。如果我在序列的中途开始,跳过前212段,它会在第426段视频中消失——因此,单独出现问题的不是视频215

这听起来像是我达到了一个配额,但是我们的配额增加了,API控制台显示我们远远没有达到极限

有什么想法吗

我甚至还没有开始写修改,所以这令人担忧。
谢谢。

在对API运行查询之前,我使用OAUTH登录并创建了一个HTTP请求对象。我的修复方法是定期重新调用登录,现在我每10次查询一次——这似乎就足够了

FWIW、我的身份验证例程(基于Posnick的示例)和调用如下所示:

class YouTubeV2(object):
    """Authenticate to APIv2 and do stuff we can't do with v3, like captions
    """
    OAUTH_SCOPE = "https://gdata.youtube.com"

    def __init__(self, client_id, client_secret, developer_key):
        """OAuth authenticates, creates 'http' attribute to make a .request().

        Get client_id, client secret from: http://code.google.com/apis/console
        Get developer_key from: http://code.google.com/apis/youtube/dashboard
        """
        # This auth code is generic and should be used for any APIv2 calls.
        self.client_id = client_id
        self.client_secret = client_secret
        self.developer_key = developer_key
        self.headers = {'GData-Version': '2',
                        'X-GData-Key': 'key=%s' % self.developer_key}
        storage = Storage("%s-oauth" % sys.argv[0])
        self.credentials = storage.get()
        if self.credentials is None or self.credentials.invalid:
            # If there are no valid cached credentials, take the user through the
            # OAuth2 login flow, and rely on the client library to cache the
            # credentials once that's complete.
            flow = OAuth2WebServerFlow(
                client_id=self.client_id,
                client_secret=self.client_secret,
                scope=self.OAUTH_SCOPE,
                user_agent=sys.argv[0])
            self.credentials = run(flow, storage)
        self.http = self.credentials.authorize(httplib2.Http())

yt2 = YouTubeV2(client_id, client_secret, developer_key)

请不要在问题标题中添加
solved
。相反,发布一个答案并接受它。