]> jfr.im git - erebus.git/blob - modules/youtube.py
mv COPYING LICENSE and fix youtube module
[erebus.git] / modules / youtube.py
1 # Erebus IRC bot - Author: Erebus Team
2 # Youtube URL Checker
3 # This file is released into the public domain; see http://unlicense.org/
4
5 # module info
6 modinfo = {
7 'author': 'Erebus Team',
8 'license': 'public domain',
9 'compatible': [1], # compatible module API versions
10 'depends': [], # other modules required to work properly?
11 }
12
13 # preamble
14 import modlib
15 lib = modlib.modlib(__name__)
16 modstart = lib.modstart
17 modstop = lib.modstop
18
19 # module code
20 import re
21 import json
22 import urllib2
23 import urlparse
24 import HTMLParser
25 from BeautifulSoup import BeautifulSoup
26
27 checkfor = "youtube"
28 yturl_regex = re.compile(r'https?://(?:www\.)?youtube\.com/watch\?[a-zA-Z0-9=&]+')
29
30 @lib.hooknum("PRIVMSG")
31 def privmsg_hook(bot, line):
32 try:
33 linetx = line.split(None, 3)[3][1:]
34 except IndexError:
35 linetx = ''
36
37 if checkfor not in line:
38 return # doesn't concern us
39
40 for url in yturl_regex.findall(linetx):
41 url_data = urlparse.urlparse(url)
42 query = urlparse.parse_qs(url_data.query)
43 video = query["v"][0]
44 api_url = 'http://gdata.youtube.com/feeds/api/videos/%s?alt=json&v=2' % video
45 try:
46 respdata = urllib2.urlopen(api_url).read()
47 video_info = json.loads(respdata)
48
49 title = video_info['entry']['title']["$t"]
50 author = video_info['entry']['author'][0]['name']['$t']
51
52 bot.msg(line.split()[2], "Youtube: %s (%s)" % (title, author))
53 except:
54 pass