]>
jfr.im git - erebus.git/blob - modules/youtube.py
1 # Erebus IRC bot - Author: Conny Sjoblom
3 # This file is released into the public domain; see http://unlicense.org/
7 'author': 'Conny Sjoblom',
8 'license': 'public domain',
9 'compatible': [1], # compatible module API versions
10 'depends': [], # other modules required to work properly?
15 lib
= modlib
.modlib(__name__
)
16 modstart
= lib
.modstart
25 from BeautifulSoup
import BeautifulSoup
28 url_regex
= re
.compile('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+')
29 yturl_regex
= re
.compile('(http|ftp|https):\/\/([\w\-_]+(?:(?:\.[\w\-_]+)+))([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?')
31 @lib.hooknum("PRIVMSG")
32 def privmsg_hook(bot
, line
):
34 linetx
= line
.split(None, 3)[3][1:]
38 if checkfor
not in line
:
39 return # doesn't concern us
41 for url
in url_regex
.findall(linetx
):
43 url_data
= urlparse
.urlparse(url
)
44 query
= urlparse
.parse_qs(url_data
.query
)
46 api_url
= 'http://gdata.youtube.com/feeds/api/videos/%s?alt=json&v=2' % video
48 respdata
= urllib2
.urlopen(api_url
).read()
49 video_info
= json
.loads(respdata
)
51 title
= video_info
['entry']['title']["$t"]
52 author
= video_info
['entry']['author'][0]['name']['$t']
54 bot
.msg(line
.split()[2], "Youtube: %s (%s)" % (title
, author
))