summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSean B. Palmer <sbp@aldebaran.local>2012-07-21 13:04:31 +0100
committerSean B. Palmer <sbp@aldebaran.local>2012-07-21 13:04:31 +0100
commit9505eae02ec38624c0e2a58247f59b65f87ddb3d (patch)
treea392daa064c08a66c5d18066f8d03092794acb34
parentbac52dfb11ff9709eac08e1dc7231dc8055b8f63 (diff)
downloadbot-9505eae02ec38624c0e2a58247f59b65f87ddb3d.tar.gz
bot-9505eae02ec38624c0e2a58247f59b65f87ddb3d.tar.bz2
bot-9505eae02ec38624c0e2a58247f59b65f87ddb3d.zip
Twitter module, gc augmentation, and various small fixes
-rwxr-xr-xmodules/admin.py4
-rwxr-xr-xmodules/etymology.py8
-rwxr-xr-xmodules/search.py53
-rwxr-xr-xmodules/seen.py25
-rwxr-xr-xmodules/translate.py5
-rwxr-xr-xmodules/twitter.py4
6 files changed, 72 insertions, 27 deletions
diff --git a/modules/admin.py b/modules/admin.py
index 249f117..b42822a 100755
--- a/modules/admin.py
+++ b/modules/admin.py
@@ -55,8 +55,8 @@ def me(phenny, input):
if input.sender.startswith('#'): return
if input.admin:
msg = '\x01ACTION %s\x01' % input.group(3)
- phenny.msg(input.group(2), msg)
-me.rule = (['me'], r'(#?\S+) (.*)')
+ phenny.msg(input.group(2) or input.sender, msg)
+me.rule = (['me'], r'(#?\S+) (.+)')
me.priority = 'low'
if __name__ == '__main__':
diff --git a/modules/etymology.py b/modules/etymology.py
index 37d1316..4caea12 100755
--- a/modules/etymology.py
+++ b/modules/etymology.py
@@ -70,10 +70,10 @@ def etymology(word):
return None
sentence = m.group(0)
- try:
- sentence = unicode(sentence, 'iso-8859-1')
- sentence = sentence.encode('utf-8')
- except: pass
+ # try:
+ # sentence = unicode(sentence, 'iso-8859-1')
+ # sentence = sentence.encode('utf-8')
+ # except: pass
sentence = web.decode(sentence)
maxlength = 275
diff --git a/modules/search.py b/modules/search.py
index b884d1c..89e57b2 100755
--- a/modules/search.py
+++ b/modules/search.py
@@ -53,6 +53,9 @@ def formatnumber(n):
parts.insert(i, ',')
return ''.join(parts)
+def old_gc(query):
+ return formatnumber(google_count(query))
+
def g(phenny, input):
"""Queries Google for the specified input."""
query = input.group(2)
@@ -71,7 +74,7 @@ g.commands = ['g']
g.priority = 'high'
g.example = '.g swhack'
-def gc(phenny, input):
+def oldgc(phenny, input):
"""Returns the number of Google results for the specified input."""
query = input.group(2)
if not query:
@@ -79,9 +82,8 @@ def gc(phenny, input):
query = query.encode('utf-8')
num = formatnumber(google_count(query))
phenny.say(query + ': ' + num)
-gc.commands = ['gc']
-gc.priority = 'high'
-gc.example = '.gc extrapolate'
+oldgc.commands = ['ogc', 'oldgc']
+oldgc.example = '.oldgc extrapolate'
r_query = re.compile(
r'\+?"[^"\\]*(?:\\.[^"\\]*)*"|\[[^]\\]*(?:\\.[^]\\]*)*\]|\S+'
@@ -114,13 +116,12 @@ def bing_search(query, lang='en-GB'):
query = web.urllib.quote(query)
base = 'http://www.bing.com/search?mkt=%s&q=' % lang
bytes = web.get(base + query)
- m = r_bing.search(bytes)
- if m: return m.group(1)
+ for result in r_bing.findall(bytes):
+ if "r.msn.com/" in result: continue
+ return result
def bing(phenny, input):
"""Queries Bing for the specified input."""
- return phenny.reply("Sorry, .bing is disabled pending a QA review.")
-
query = input.group(2)
if query.startswith(':'):
lang, query = query.split(' ', 1)
@@ -200,5 +201,41 @@ def suggest(phenny, input):
else: phenny.reply('Sorry, no result.')
suggest.commands = ['suggest']
+def new_gc(query):
+ uri = 'https://www.google.com/search?hl=en&q='
+ uri = uri + web.urllib.quote(query).replace('+', '%2B')
+ if '"' in query: uri += '&tbs=li:1'
+ bytes = web.get(uri)
+ if "did not match any documents" in bytes:
+ return "0"
+ for result in re.compile(r'(?ims)([0-9,]+) results?').findall(bytes):
+ return result
+ return None
+
+def ngc(phenny, input):
+ if not input.group(2):
+ return phenny.reply("No query term.")
+ query = input.group(2).encode('utf-8')
+ result = new_gc(query)
+ if result:
+ phenny.say(query + ": " + result)
+ else: phenny.reply("Sorry, couldn't get a result.")
+
+ngc.commands = ['ngc']
+ngc.priority = 'high'
+ngc.example = '.ngc extrapolate'
+
+def gc(phenny, input):
+ if not input.group(2):
+ return phenny.reply("No query term.")
+ query = input.group(2).encode('utf-8')
+ old = old_gc(query) or "?"
+ new = new_gc(query) or "?"
+ phenny.say(query + ": " + old + " / " + new)
+
+gc.commands = ['gc']
+gc.priority = 'high'
+gc.example = '.gc extrapolate'
+
if __name__ == '__main__':
print __doc__.strip()
diff --git a/modules/seen.py b/modules/seen.py
index 26dc05f..f04d9c9 100755
--- a/modules/seen.py
+++ b/modules/seen.py
@@ -10,21 +10,24 @@ http://inamidst.com/phenny/
import time
from tools import deprecated
-@deprecated
-def f_seen(self, origin, match, args):
+def seen(phenny, input):
""".seen <nick> - Reports when <nick> was last seen."""
- if origin.sender == '#talis': return
- nick = match.group(2).lower()
- if not hasattr(self, 'seen'):
- return self.msg(origin.sender, '?')
- if self.seen.has_key(nick):
- channel, t = self.seen[nick]
+ nick = input.group(2)
+ if not nick:
+ return phenny.reply("Need a nickname to search for...")
+ nick = nick.lower()
+
+ if not hasattr(phenny, 'seen'):
+ return phenny.reply("?")
+
+ if phenny.seen.has_key(nick):
+ channel, t = phenny.seen[nick]
t = time.strftime('%Y-%m-%d %H:%M:%S UTC', time.gmtime(t))
msg = "I last saw %s at %s on %s" % (nick, t, channel)
- self.msg(origin.sender, str(origin.nick) + ': ' + msg)
- else: self.msg(origin.sender, "Sorry, I haven't seen %s around." % nick)
-f_seen.rule = (['seen'], r'(\S+)')
+ phenny.reply(msg)
+ else: phenny.reply("Sorry, I haven't seen %s around." % nick)
+seen.rule = (['seen'], r'(\S+)')'
@deprecated
def f_note(self, origin, match, args):
diff --git a/modules/translate.py b/modules/translate.py
index 94e5f64..927bcb9 100755
--- a/modules/translate.py
+++ b/modules/translate.py
@@ -75,7 +75,10 @@ tr.priority = 'low'
def tr2(phenny, input):
"""Translates a phrase, with an optional language hint."""
- command = input.group(2).encode('utf-8')
+ command = input.group(2)
+ if not command:
+ return phenny.reply("Need something to translate!")
+ command = command.encode('utf-8')
def langcode(p):
return p.startswith(':') and (2 < len(p) < 10) and p[1:].isalpha()
diff --git a/modules/twitter.py b/modules/twitter.py
index 132d5cb..4e7c134 100755
--- a/modules/twitter.py
+++ b/modules/twitter.py
@@ -75,7 +75,9 @@ def twitter(phenny, input):
elif r_username.match(arg):
phenny.say(user_tweet(arg))
elif r_link.match(arg):
- phenny.say(read_tweet(arg))
+ username = arg.split('/')[3]
+ tweet = read_tweet(arg)
+ phenny.say(format(tweet, username))
else: phenny.reply("Give me a link, a username, or a tweet id")
twitter.commands = ['tw', 'twitter']