我是Python的新手,我一直在寻找这个,但基本上我正在制作的是一个IRC机器人。现在,给我一个问题的是我添加的YouTube提取命令。 这是来源:
if text.find(':'+prefix+'yt') != -1:
idb = text.split(':'+prefix+'yt')
videoid = idb[1].strip()
if len(videoid) == 11:
try:
url = 'http://gdata.youtube.com/feeds/api/videos/'+videoid+'?alt=json&v=2'
json = json.load(urllib2.urlopen(url))
title = json['entry']['title']['$t']
author = json['entry']['author'][0]['name']['$t']
irc.send('PRIVMSG '+home+' :'+str(title)+' | by '+str(author)+' | http://www.youtube.com/watch?v='+str(videoid)+' \r\n')
except Exception, e:
irc.send('PRIVMSG '+home+' :Could not look up video, check your ID. \r\n')
print "Error",e
pass
else:
irc.send('PRIVMSG '+home+' :Could not look up video, video ID must be at least 11 characters. \r\n');
发生的事情是,第一次尝试它正常工作:
[14:57:23] <@Snowstormer> @yt Kwwl9jiJ1A4
[14:57:24] <GotBot> "Take Back the Night" - A Minecraft Original Music Video | by CaptainSparklez | http://www.youtube.com/watch?v=Kwwl9jiJ1A4
然而下一次是:
[14:57:27] <@Snowstormer> @yt Kwwl9jiJ1A4
[14:57:27] <GotBot> Could not look up video, check your ID.
这只是为了显示ID是否合适,但是不存在带有它的视频。
在我添加Exception之前,机器人直接断开连接。在CMD行中显示:
Error 'dict' object has no attribute 'load'
我尝试使用谷歌搜索没有结果。我正在运行Windows,因此不会应用任何Unix技巧(如果有的话,但我认为我应该把它放在那里)。
我意识到这可能是一个本地化的问题,但我确实需要帮助。
答案 0 :(得分:10)
您将json.load
的结果存储在名为json
的变量中,有效地覆盖了模块json
。这很可能不是你想要达到的目标。尝试重命名。