This commit is contained in:
Luke Rogers 2014-02-14 17:03:08 +13:00
parent 004ceb79fc
commit d6683b32f4
24 changed files with 64 additions and 58 deletions

View File

@ -3,7 +3,6 @@ import time
from util import hook
# CTCP responses
@hook.regex(r'^\x01VERSION\x01$')
def ctcp_version(inp, notice=None):

View File

@ -17,7 +17,7 @@ exchanges = {
data['return']['buy']['display'],
data['return']['vol']['display'])
},
"coinbase":{
"coinbase": {
"api_url": "https://coinbase.com/api/v1/prices/spot_rate",
"func": lambda data: u"Coinbase // Current: \x0307${:,.2f}\x0f".format(float(data['amount']))
},

View File

@ -13,6 +13,6 @@ def domainr(inp):
domains = ""
for domain in data['results']:
domains += ("\x034" if domain['availability'] == "taken" else (
"\x033" if domain['availability'] == "available" else "\x031")) + domain['domain'] + "\x0f" + domain[
'path'] + ", "
"\x033" if domain['availability'] == "available" else "\x031")) + domain['domain'] + "\x0f" + domain[
'path'] + ", "
return "Domains: " + domains

View File

@ -96,7 +96,7 @@ def decrypt(inp, bot=None, db=None, notice=None):
# get the encoded IV from the database and decode it
iv_encoded = db.execute("select iv from encryption where"
" encrypted=?", (text,)).fetchone()[0]
" encrypted=?", (text,)).fetchone()[0]
iv = base64.b64decode(iv_encoded)
# create AES cipher, decode text, decrypt text, and unpad it

View File

@ -132,8 +132,8 @@ def factoid(inp, message=None, db=None, bot=None, action=None, conn=None, input=
if data.startswith("<py>"):
code = data[4:].strip()
variables = 'input="""{}"""; nick="{}"; chan="{}"; bot_nick="{}";'.format(arguments.replace('"', '\\"'),
input.nick, input.chan,
input.conn.nick)
input.nick, input.chan,
input.conn.nick)
result = pyexec.eval_py(variables + code)
else:
result = data

View File

@ -8,7 +8,6 @@ import pygeoip
from util import hook, http
# load region database
with open("./plugins/data/geoip_regions.json", "rb") as f:
regions = json.loads(f.read())

View File

@ -3,8 +3,8 @@ import re
from util import hook
@hook.command(autohelp=False)
def help(inp, notice=None, conn=None, bot=None):
@hook.command("help", autohelp=False)
def help_command(inp, notice=None, conn=None, bot=None):
"""help -- Gives a list of commands/help for a command."""
funcs = {}

View File

@ -50,7 +50,7 @@ def horoscope(inp, db=None, notice=None, nick=None):
if inp and not dontsave:
db.execute("insert or replace into horoscope(nick, sign) values (?,?)",
(nick.lower(), sign))
(nick.lower(), sign))
db.commit()
return result

View File

@ -39,10 +39,10 @@ def imdb(inp):
@hook.regex(*imdb_re)
def imdb_url(match):
id = match.group(4).split('/')[-1]
if id == "":
id = match.group(4).split('/')[-2]
content = http.get_json("http://www.omdbapi.com/", i=id)
imdb_id = match.group(4).split('/')[-1]
if imdb_id == "":
imdb_id = match.group(4).split('/')[-2]
content = http.get_json("http://www.omdbapi.com/", i=imdb_id)
if content.get('Error', None) == 'Movie not found!':
return 'Movie not found!'
elif content['Response'] == 'True':

View File

@ -19,7 +19,8 @@ def is_valid(data):
@hook.command(autohelp=False)
def imgur(inp):
"""imgur [subreddit] -- Gets the first page of imgur images from [subreddit] and returns a link to them. If [subreddit] is undefined, return any imgur images"""
"""imgur [subreddit] -- Gets the first page of imgur images from [subreddit] and returns a link to them.
If [subreddit] is undefined, return any imgur images"""
if inp:
# see if the input ends with "nsfw"
show_nsfw = inp.endswith(" nsfw")
@ -50,7 +51,7 @@ def imgur(inp):
items = []
headers = {
"Authorization": "Client-ID b5d127e6941b07a"
"Authorization": "Client-ID b5d127e6941b07a"
}
# loop over the list of posts

View File

@ -77,7 +77,7 @@ def lastfm(inp, nick='', db=None, bot=None, notice=None):
if inp and not dontsave:
db.execute("insert or replace into lastfm(nick, acc) values (?,?)",
(nick.lower(), user))
(nick.lower(), user))
db.commit()
return out

View File

@ -38,6 +38,6 @@ def lyrics(inp):
else:
lyricsum = " / ".join(lyricsum.strip().split("\n")[0:4]) # truncate, format
return "\x02{}\x02 by \x02{}\x02 {}{} - {}".format(title, artist, web.try_isgd(link), pasteurl,
lyricsum[:-3])
lyricsum[:-3])
else:
return "No song results. " + url + inp.replace(" ", "+")

View File

@ -132,7 +132,6 @@ def bukget(inp, reply=None, message=None):
message(line_b)
@hook.command(autohelp=None)
def randomplugin(inp, reply=None, message=None):
"""randomplugin - Gets a random plugin from dev.bukkit.org"""

View File

@ -15,9 +15,9 @@ except ImportError:
mccolors = [u"\x0300,\xa7f", u"\x0301,\xa70", u"\x0302,\xa71", u"\x0303,\xa72", u"\x0304,\xa7c", u"\x0305,\xa74",
u"\x0306,\xa75", u"\x0307,\xa76", u"\x0308,\xa7e", u"\x0309,\xa7a", u"\x0310,\xa73", u"\x0311,\xa7b",
u"\x0312,\xa71", u"\x0313,\xa7d", u"\x0314,\xa78", u"\x0315,\xa77", u"\x02,\xa7l", u"\x0310,\xa79",
u"\x09,\xa7o", u"\x13,\xa7m", u"\x0f,\xa7r", u"\x15,\xa7n"]
u"\x0306,\xa75", u"\x0307,\xa76", u"\x0308,\xa7e", u"\x0309,\xa7a", u"\x0310,\xa73", u"\x0311,\xa7b",
u"\x0312,\xa71", u"\x0313,\xa7d", u"\x0314,\xa78", u"\x0315,\xa77", u"\x02,\xa7l", u"\x0310,\xa79",
u"\x09,\xa7o", u"\x13,\xa7m", u"\x0f,\xa7r", u"\x15,\xa7n"]
def mc_color_format(motd):
@ -77,11 +77,12 @@ def mcping_modern(host, port):
try:
version = data["version"]["name"]
desc = data["description"]
max = data["players"]["max"]
max_players = data["players"]["max"]
online = data["players"]["online"]
except Exception as e:
return "Invalid data: {}; error: {}".format(data, e)
return mc_color_format(u"{}\x0f - {}\x0f - {}/{} players *".format(desc, version, online, max)).replace("\n", u"\x0f - ")
return mc_color_format(u"{}\x0f - {}\x0f - {}/{} players *".format(desc, version, online,
max_players)).replace("\n", u"\x0f - ")
def mcping_legacy(host, port):
@ -102,7 +103,8 @@ def mcping_legacy(host, port):
message = u"{} - {}/{} players".format(mc_color_format(data[0]), data[1], data[2])
else:
# decoded data, server is using new format
message = u"{} \x0f- {} - {}/{} players".format(mc_color_format(data[3]), mc_color_format(data[2]), data[4], data[5])
message = u"{} \x0f- {} - {}/{} players".format(mc_color_format(data[3]),
mc_color_format(data[2]), data[4], data[5])
sock.close()
return message
@ -174,7 +176,6 @@ def mcping(inp):
# return e.args[0]
#
try:
return mcping_modern(host, port)
except:

View File

@ -46,14 +46,14 @@ def db_getall(db, nick, limit=-1):
""", (nick, limit))
def db_get(db, nick, id):
def db_get(db, nick, note_id):
return db.execute("""
select added, text from todos
where lower(user) = lower(?)
order by added desc
limit 1
offset ?
""", (nick, id)).fetchone()
""", (nick, note_id)).fetchone()
def db_del(db, nick, limit='all'):

View File

@ -39,7 +39,7 @@ potatoes = ['AC Belmont', 'AC Blue Pride', 'AC Brador', 'AC Chaleur', 'AC Domino
@hook.command
def potato(inp, action=None, input=None):
def potato(inp, action=None):
"""potato <user> - Makes <user> a tasty little potato."""
inp = inp.strip()

View File

@ -9,7 +9,7 @@ def format_quote(q, num, n_quotes):
"""Returns a formatted string of a quote"""
ctime, nick, msg = q
return "[{}/{}] <{}> {}".format(num, n_quotes,
nick, msg)
nick, msg)
def create_table_if_not_exists(db):

View File

@ -21,7 +21,7 @@ def rottentomatoes(inp, bot=None):
movie = results['movies'][0]
title = movie['title']
id = movie['id']
movie_id = movie['id']
critics_score = movie['ratings']['critics_score']
audience_score = movie['ratings']['audience_score']
url = movie['links']['alternate']
@ -29,7 +29,7 @@ def rottentomatoes(inp, bot=None):
if critics_score == -1:
return
reviews = http.get_json(movie_reviews_url % id, apikey=api_key, review_type='all')
reviews = http.get_json(movie_reviews_url % movie_id, apikey=api_key, review_type='all')
review_count = reviews['total']
fresh = critics_score * review_count / 100

View File

@ -30,11 +30,11 @@ def get_steam_info(url):
break
# find the next element directly after the <b></b> tag
next = b.nextSibling
if next:
next_element = b.nextSibling
if next_element:
# if the element is some text
if isinstance(next, NavigableString):
text = next.string.strip()
if isinstance(next_element, NavigableString):
text = next_element.string.strip()
if text:
# we found valid text, save it and continue the loop
data[title] = text
@ -44,11 +44,11 @@ def get_steam_info(url):
# useless spaces or tabs between the <b> and <a> tags.
# so we find the next <a> tag and carry on to the next
# bit of code below
next = next.find_next('a', href=True)
next_element = next_element.find_next('a', href=True)
# if the element is an <a></a> tag
if isinstance(next, Tag) and next.name == 'a':
text = next.string.strip()
if isinstance(next_element, Tag) and next_element.name == 'a':
text = next_element.string.strip()
if text:
# we found valid text (in the <a></a> tag),
# save it and continue the loop

View File

@ -99,8 +99,8 @@ def steamcalc(inp, reply=None):
data["size"] = "{0:.1f}".format(total_size)
reply("{name} ({state}) has {games} games with a total value of ${value}"
" and a total size of {size}GB! The average metascore for these"
" games is {average_metascore}.".format(**data))
" and a total size of {size}GB! The average metascore for these"
" games is {average_metascore}.".format(**data))
if do_refresh:
refresh_data(name)

View File

@ -38,7 +38,7 @@ def tellinput(paraml, input=None, notice=None, db=None, bot=None, nick=None, con
reltime = timesince.timesince(time)
reply = "{} sent you a message {} ago from {}: {}".format(user_from, reltime, chan,
message)
message)
if len(tells) > 1:
reply += " (+{} more, {}showtells to view)".format(len(tells) - 1, conn.conf["command_prefix"])

View File

@ -44,7 +44,7 @@ def get_episodes_for_series(series_name, api_key):
try:
series = get_zipped_xml(base_url + '%s/series/%s/all/en.zip' %
(api_key, series_id), path="en.xml")
(api_key, series_id), path="en.xml")
except URLError:
res["error"] = "Error contacting thetvdb.com."
return res

View File

@ -8,17 +8,17 @@ from util import hook, text
# variables
colors = collections.OrderedDict([
('red', '\x0304'),
('orange', '\x0307'),
('yellow', '\x0308'),
('green', '\x0309'),
('cyan', '\x0303'),
('ltblue', '\x0310'),
('rylblue', '\x0312'),
('blue', '\x0302'),
('magenta', '\x0306'),
('pink', '\x0313'),
('maroon', '\x0305')
('red', '\x0304'),
('orange', '\x0307'),
('yellow', '\x0308'),
('green', '\x0309'),
('cyan', '\x0303'),
('ltblue', '\x0310'),
('rylblue', '\x0312'),
('blue', '\x0302'),
('magenta', '\x0306'),
('pink', '\x0313'),
('maroon', '\x0305')
])
# helper functions
@ -29,6 +29,7 @@ strip_re = re.compile("(\x03|\x02|\x1f)(?:,?\d{1,2}(?:,\d{1,2})?)?", re.UNICODE)
def strip(string):
return strip_re.sub('', string)
# basic text tools
@ -63,6 +64,7 @@ def swapcase(inp):
"""swapcase <string> -- Swaps the capitalization of <string>."""
return inp.swapcase()
# encoding
@ -116,6 +118,7 @@ def escape(inp):
except Exception as e:
return "Error: {}".format(e)
# length
@ -124,6 +127,7 @@ def length(inp):
"""length <string> -- gets the length of <string>"""
return "The length of that string is {} characters.".format(len(inp))
# reverse
@ -132,15 +136,17 @@ def reverse(inp):
"""reverse <string> -- reverses <string>."""
return inp[::-1]
# hashing
@hook.command
def hash(inp):
@hook.command("hash")
def hash_command(inp):
"""hash <string> -- Returns hashes of <string>."""
return ', '.join(x + ": " + getattr(hashlib, x)(inp).hexdigest()
for x in ['md5', 'sha1', 'sha256'])
# novelty
@ -149,6 +155,7 @@ def munge(inp):
"""munge <text> -- Munges up <text>."""
return text.munge(inp)
# colors - based on code by Reece Selwood - <https://github.com/hitzler/homero>

View File

@ -30,7 +30,7 @@ def wiki(inp):
def extract(item):
return [item.find(ns + x).text for x in
('Text', 'Description', 'Url')]
('Text', 'Description', 'Url')]
title, desc, url = extract(items[0])