From 7603bb7b6a17714a8a50da758568ca1148dc660f Mon Sep 17 00:00:00 2001 From: blha303 Date: Tue, 18 Jun 2013 08:26:17 +0000 Subject: [PATCH] Twitch.tv url parser --- plugins/twitch.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 plugins/twitch.py diff --git a/plugins/twitch.py b/plugins/twitch.py new file mode 100644 index 0000000..136a30e --- /dev/null +++ b/plugins/twitch.py @@ -0,0 +1,29 @@ +import re +from util import hook, http + +twitch_re = (r'(.*:)//(twitch.tv|www.twitch.tv)(:[0-9]+)?(.*)', re.I) +valid = set('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_/') + +def test(s): + return set(s) <= valid + +@hook.regex(*twitch_re) +def twitch_url(match): + location = "/".join(match.group(4).split("/")[1:]) + if not test(match.group(4).split("/")[1]): + return "Not a valid username" + soup = http.get_soup("http://twitch.tv/" + location) + title = soup.findAll('span', {'class': 'real_title js-title'})[0].text + try: + name = soup.findAll('a', {'class': 'channel_name'})[0].text + except IndexError: + name = soup.findAll('a', {'class': 'channelname'})[0].text + playing = soup.findAll('a', {'class': 'game js-game'})[0].text + if playing == "/directory/game/": + np = False + else: + np = True + if np: + return "%s: %s playing %s" % (title, name, playing) + else: + return "%s: %s" % (title, name)