1

我正在尝试使用 youtube api 更新条目。这是我正在努力解决的错误:

Traceback(最近一次调用最后一次):文件“”,第 1 行,在 updated_entry = gdata.youtube.service.YouTubeService.UpdateVideoEntry(YTVentry.id) 类型错误:必须使用 YouTubeService 实例作为第一个参数调用未绑定的方法 UpdateVideoEntry()(得到NoneType 实例代替)

这是我的代码:

    import gdata.youtube
    import gdata.youtube.service
    import gdata.youtube.data
client = gdata.youtube.service.YouTubeService()    
...
videos_feed = client.GetYouTubeVideoFeed(uri)
    for entry in videos_feed.entry:
    print entry.title.text
        YTentry = entry._GDataEntry__GetId
        YTVentry = gdata.youtube.YouTubeVideoEntry(YTentry)
        YTVentry.media.title = '09.11.2012 Hold me close'
        YTVentry.media.description = '09.11.2012 : Hold me close section'
        updated_entry = gdata.youtube.service.YouTubeService.UpdateVideoEntry(YTVentry.id)

根据谷歌 gdata youtube 文档:

要更新视频元数据,只需更新 YouTubeVideoEntry 对象,然后使用 YouTubeService 对象的 UpdateVideoEntry 方法。此方法将包含更新的元数据的 YouTubeVideoEntry 作为参数。

提前致谢。

4

2 回答 2

1
    updated_entry = gdata.youtube.service.YouTubeService.UpdateVideoEntry(YTVentry.id)

应该

    updated_entry = client.UpdateVideoEntry(YTVentry.id)

gdata.youtube.service.YouTubeService.UpdateVideoEntry(YTVentry.id) TypeError: 必须使用 YouTubeService 实例作为第一个参数调用未绑定的方法 UpdateVideoEntry()(改为获取 NoneType 实例)

该错误正在抱怨,因为您试图从类而不是您创建的客户端对象中调用 UpdateVideoEntry。您已经创建了一个 YouTubeService 对象,client您需要使用它而不是直接调用类的方法。

于 2012-09-24T15:41:59.197 回答
1

您是在YouTubeService类上调用方法,而不是在该类的实例上。换句话说,您应该调用client.UpdateVideoEntry(...)而不是YouTubeService.UpdateVideoEntry(...)像其他对 API 的调用一样。

文档甚至说您应该在对象上调用该方法YouTubeService,而不是在类上。

错误信息表明可以直接调用类方法,但必须将类的实例作为第一个参数传递。当您在实例上调用方法时,这是隐式完成的,但在调用类上的方法时必须显式完成。否则 Python 将不知道该方法应该在哪个实例上运行(即,是什么self)。

于 2012-09-24T15:42:19.883 回答