minetestbot-modules/title.py

48 lines
1.0 KiB
Python
Raw Normal View History

2013-05-09 12:52:55 -07:00
#!/usr/bin/env python
"""
title.py - Phenny URL Title Module
2014-07-20 07:13:59 -07:00
Copyright 2014, sfan5
2013-05-09 12:52:55 -07:00
"""
2014-07-20 07:13:59 -07:00
import re
import web
r_title = re.compile(r'(?ims)<\s*title[^>]*>(.*?)<\s*/\s*title\s*>')
def title(phenny, input):
uri = input.group(2)
if uri:
pass
elif hasattr(phenny.bot, 'last_seen_uri'):
uri = phenny.bot.last_seen_uri
else:
return phenny.reply("Give me an URI..")
uri = uri.strip()
data, sc = web.get(uri, 4096)
if sc != 200:
return phenny.say("HTTP error %d" % sc)
try:
data = str(data, 'utf-8')
except UnicodeDecodeError:
return phenny.say("Doesn't seem to be HTML..")
m = re.search(r_title, data)
if not m:
return phenny.say("No title found.")
title = m.group(1).strip()
if len(title) > 100:
title = title[:100] + "[...]"
phenny.reply(title)
2014-07-20 07:13:59 -07:00
title.commands = ['title']
2013-05-09 12:52:55 -07:00
def noteuri(phenny, input):
uri = input.group(1)
phenny.bot.last_seen_uri = uri
2013-05-09 12:52:55 -07:00
2014-07-20 07:13:59 -07:00
noteuri.rule = r'(https?://[^<> "\x01]+)'
2013-05-09 12:52:55 -07:00
noteuri.priority = 'low'
2014-07-19 12:43:47 -07:00
noteuri.nohook = True
2013-05-09 12:52:55 -07:00
if __name__ == '__main__':
print(__doc__.strip())