add .o/.oblique command running, see http://github.com/nslater/oblique for more information
This commit is contained in:
parent
49ba4c5753
commit
fdf685161e
|
@ -0,0 +1,57 @@
|
|||
import time
|
||||
|
||||
from util import hook, http
|
||||
|
||||
|
||||
commands_modtime = 0
|
||||
commands = {}
|
||||
|
||||
|
||||
def update_commands(force=False):
|
||||
global commands_modtime, commands
|
||||
|
||||
if force or time.time() - commands_modtime > 60 * 60: # update hourly
|
||||
h = http.get_html('http://wiki.github.com/nslater/oblique/')
|
||||
|
||||
lines = h.xpath('//li/text()')
|
||||
commands = {}
|
||||
for line in lines:
|
||||
if not line.strip():
|
||||
continue
|
||||
|
||||
name, url = line.strip().split(None, 1)
|
||||
commands[name] = url
|
||||
|
||||
commands_modtime = time.time()
|
||||
|
||||
|
||||
@hook.command('o')
|
||||
@hook.command
|
||||
def oblique(inp, nick='', chan=''):
|
||||
'.o/.oblique <command> <args> -- runs <command> using oblique web'
|
||||
' services. see http://wiki.github.com/nslater/oblique/'
|
||||
|
||||
update_commands()
|
||||
|
||||
if ' ' in inp:
|
||||
command, args = inp.split(None, 1)
|
||||
else:
|
||||
command = inp
|
||||
args = ''
|
||||
|
||||
command = command.lower()
|
||||
|
||||
if command == 'refresh':
|
||||
update_commands(True)
|
||||
return '%d commands loaded.' % len(commands)
|
||||
if command in commands:
|
||||
url = commands[command]
|
||||
url = url.replace('${nick}', nick)
|
||||
url = url.replace('${sender}', chan)
|
||||
url = url.replace('${args}', http.quote(args.encode('utf8')))
|
||||
try:
|
||||
return http.get(url)
|
||||
except http.HTTPError, e:
|
||||
return "http error %d" % e.code
|
||||
else:
|
||||
return 'no such service'
|
Loading…
Reference in New Issue