]> jfr.im git - erebus.git/commitdiff
Fixed youtube module, now uses API
authorConny Sjöblom <redacted>
Wed, 5 Feb 2014 11:31:19 +0000 (13:31 +0200)
committerConny Sjöblom <redacted>
Wed, 5 Feb 2014 11:31:19 +0000 (13:31 +0200)
modules/youtube.py

index cd62f5fd031a4a2f440f7025f1253341356d14f7..38b4470f518f55429564127247847858ce7bf4ac 100644 (file)
@@ -18,12 +18,15 @@ modstop = lib.modstop
 
 # module code
 import re
+import json
 import urllib2
+import urlparse
 import HTMLParser
 from BeautifulSoup import BeautifulSoup
 
 checkfor = "youtube"
 url_regex = re.compile('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+')
+yturl_regex = re.compile('(http|ftp|https):\/\/([\w\-_]+(?:(?:\.[\w\-_]+)+))([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#])?')
 
 @lib.hooknum("PRIVMSG")
 def privmsg_hook(bot, line):
@@ -35,9 +38,17 @@ def privmsg_hook(bot, line):
        if checkfor not in line:
                return # doesn't concern us
 
+       print "Meow"
        for url in url_regex.findall(linetx):
                if checkfor in url:
-                       html_parser = HTMLParser.HTMLParser()
-                       respdata = urllib2.urlopen(url).read()
-                       soup = BeautifulSoup(respdata)
-                       bot.msg(line.split()[2], BeautifulSoup(soup.title.string, convertEntities=BeautifulSoup.HTML_ENTITIES))
+                       url_data = urlparse.urlparse(url)
+                       query = urlparse.parse_qs(url_data.query)
+                       video = query["v"][0]
+                       api_url = 'http://gdata.youtube.com/feeds/api/videos/%s?alt=json&v=2' % video
+                       respdata = urllib2.urlopen(api_url).read()
+                       video_info = json.loads(respdata)
+
+                       title = video_info['entry']['title']["$t"]
+                       author = video_info['entry']['author'][0]['name']['$t']
+
+                       bot.msg(line.split()[2], "Youtube: %s (%s)" % (title, author))