diff --git a/plugins/valvesounds.py b/plugins/valvesounds.py new file mode 100644 index 0000000..626cbed --- /dev/null +++ b/plugins/valvesounds.py @@ -0,0 +1,98 @@ +from util import hook, http, web +from urllib import urlencode + +portal2url = "http://www.portal2sounds.com/" +portal2dlc1url = portal2url.replace("www", "dlc") +portal2dlc2url = portal2url.replace("www", "dlc2") +portal2musicurl = portal2url.replace("www", "p2music") +portal1url = portal2url.replace("www", "p1") +portal1musicurl = portal2url.replace("www", "p1music") +tf2url = "http://www.tf2sounds.com/" +tf2musicurl = tf2url.replace("www", "music") + + +def getSoundInfo(url, inp, jsondata=False): + if "dostream" in inp: + inp = inp.replace("dostream", "").replace(" ", " ") + dostream = True + else: + dostream = False + if len(inp.split(" - ")) > 1: + who = inp.split(" - ")[0] + quote = inp.split(" - ")[1] + else: + who = None + quote = inp + data = http.get_json(url + "list.php?" + urlencode({"quote": quote, "who": who})) + if len(data) > 3: + numresults = data[2] + newdata = data[3:] + text = newdata[0]["text"] + if "music" in url: + textsplit = text.split('"') + text = "" + for i in xrange(len(textsplit)): + if i%2 != 0 and i < 6: + if text: + text += " / " + textsplit[i] + else: + text = textsplit[i] + if not jsondata: + return "%s - %s %s" % (newdata[0]["who"], + text if len(text) < 325 else text[:325]+"...", + web.try_isgd(url + newdata[0]["id"] if not dostream else url+"sound.php?id="+newdata[0]["id"]+"&stream")) + else: + if not jsondata: + return "No results." + return data + + +@hook.command +def portal2(inp): + """portal2 [who - ] - Look up Portal 2 quote. Example: .portal2 cave johnson - demand to see life's manager , .portal2 i own the place | If - is not included, no 'who' data will be sent.""" + return getSoundInfo(portal2url, inp) + + +@hook.command +def portal2dlc(inp): + """portal2dlc [who - ] - Look up Portal 2 DLC quote. Example: .portal2dlc1 glados - I lie when i'm nervous , .portal2 these exhibits are interactive | If - is not included, no 'who' data will be sent.""" + return getSoundInfo(portal2dlc1url, inp) + + +@hook.command("portal2pti") +@hook.command +def portal2dlc2(inp): + """portal2dlc2 [who - ] - Look up Portal 2 Perpetual Testing Inititive quote. Example: .portal2 glados - I lie when i'm nervous , .portal2dlc2 these exhibits are interactive | If - is not included, no 'who' data will be sent.""" + return getSoundInfo(portal2dlc2url, inp) + + +@hook.command +def portal2music(inp): + """portal2music - Look up Portal 2 music. Example: .portal2 turret opera , .portal2music want you gone | If - is not included, no 'title' data will be sent.""" + return getSoundInfo(portal2musicurl, inp + " - ") + + +@hook.command('portal1') +@hook.command +def portal(inp): + """portal [who - ]<quote> - Look up Portal quote. Example: .portal glados - the last thing you want to do is hurt me , .portal this is your fault | If - is not included, no 'who' data will be sent.""" + return getSoundInfo(portal1url, inp) + + +@hook.command('portal1music') +@hook.command +def portalmusic(inp): + """portalmusic <title> - Look up Portal music. Example: .portalmusic still alive | If - is not included, no 'title' data will be sent.""" + return getSoundInfo(portal1musicurl, inp + " - ") + +@hook.command('tf2sound') +@hook.command +def tf2(inp): + """tf2 [who - ]<quote> - Look up TF2 quote. Example: .tf2 spy - may i borrow your earpiece , .tf2 nom nom nom | If - is not included, no 'who' data will be sent.""" + return getSoundInfo(tf2url, inp) + + +@hook.command +def tf2music(inp): + """tf2music title - Look up TF2 music lyrics. Example: .tf2music rocket jump waltz | If - is not included, no 'title' data will be sent.""" + return getSoundInfo(tf2musicurl, inp + " - ")