]> jfr.im git - erebus.git/commitdiff
Merge branch 'master' of localhost:erebus
authorzonidjan <redacted>
Wed, 5 Feb 2014 20:39:28 +0000 (14:39 -0600)
committerzonidjan <redacted>
Wed, 5 Feb 2014 20:39:28 +0000 (14:39 -0600)
1  2 
modules/youtube.py

diff --combined modules/youtube.py
index 98145b5b94e92c37cde688cbdb629cccf9050c85,639e32fbb23ec96cc7599f1d42a0cd72653d60f6..c40bf177a6ee32b8e6f6ac92db307c321b202cff
@@@ -1,10 -1,10 +1,10 @@@
 -# Erebus IRC bot - Author: Conny Sjoblom
 +# Erebus IRC bot - Author: Erebus Team
  # Youtube URL Checker
  # This file is released into the public domain; see http://unlicense.org/
  
  # module info
  modinfo = {
 -      'author': 'Conny Sjoblom',
 +      'author': 'Erebus Team',
        'license': 'public domain',
        'compatible': [1], # compatible module API versions
        'depends': [], # other modules required to work properly?
@@@ -18,12 -18,15 +18,15 @@@ modstop = lib.modsto
  
  # 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):
  
        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
+                       try:
+                               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))
+                       except:
+                               pass