我正在尝试使用youtube api更新条目。这是我正在努力的错误:
Traceback(最近一次调用最后一次):文件“”,第1行,in updated_entry = gdata.youtube.service.YouTubeService.UpdateVideoEntry(YTVentry.id) TypeError:未绑定方法必须使用调用UpdateVideoEntry() YouTubeService实例作为第一个参数(获得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方法。这个 method将包含更新的YouTubeVideoEntry作为参数 元数据。
提前感谢。
答案 0 :(得分:1)
updated_entry = gdata.youtube.service.YouTubeService.UpdateVideoEntry(YTVentry.id)
应该是
updated_entry = client.UpdateVideoEntry(YTVentry.id)
gdata.youtube.service.YouTubeService.UpdateVideoEntry(YTVentry.id) TypeError:未绑定方法必须使用调用UpdateVideoEntry() YouTubeService实例作为第一个参数(获得NoneType实例 代替)
错误是抱怨,因为您尝试从类中调用UpdateVideoEntry而不是您创建的客户端对象。您已经创建了一个YouTubeService对象client
,您需要使用该对象,而不是直接调用类的方法。
答案 1 :(得分:1)
您正在调用YouTubeService
类上的方法,而不是该类的实例。换句话说,您应该像调用API的其他调用一样调用client.UpdateVideoEntry(...)
而不是YouTubeService.UpdateVideoEntry(...)
。
文档甚至说你应该在YouTubeService
对象上调用该方法,而不是在类上。
错误消息表明可以直接调用类方法,但必须将类的实例作为第一个参数传递。当您在实例上调用方法时,这是隐式完成的,但必须在调用类上的方法时显式完成。否则Python将不知道该方法应该在哪个实例上运行(即self
是什么)。