X-Git-Url: https://jfr.im/git/erebus.git/blobdiff_plain/f7e0fcf41c208d311f6f9074560975bac1181a39..e659feb5010053f05070be17ecfef36e9ee138ba:/modules/youtube.py diff --git a/modules/youtube.py b/modules/youtube.py index cd62f5f..c40bf17 100644 --- a/modules/youtube.py +++ b/modules/youtube.py @@ -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 @@ 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\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?') @lib.hooknum("PRIVMSG") def privmsg_hook(bot, line): @@ -37,7 +40,17 @@ 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