From f11423ba31414f41d04870c8092be6944d9163ea Mon Sep 17 00:00:00 2001 From: Ben Kurtovic Date: Sat, 12 May 2012 18:55:28 -0400 Subject: [PATCH] Ported !langcode command (#6) --- earwigbot/commands/_old.py | 18 --------------- earwigbot/commands/langcode.py | 52 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 18 deletions(-) create mode 100644 earwigbot/commands/langcode.py diff --git a/earwigbot/commands/_old.py b/earwigbot/commands/_old.py index 6cbb7c5..b49577e 100644 --- a/earwigbot/commands/_old.py +++ b/earwigbot/commands/_old.py @@ -367,24 +367,6 @@ def parse(command, line, line2, nick, chan, host, auth, notice, say, reply, s): reply("NotImplementedError", chan, nick) elif action == "report": reply("NotImplementedError", chan, nick) - if command == "langcode" or command == "lang" or command == "language": - try: - lang = line2[4] - except Exception: - reply("Please specify an ISO code.", chan, nick) - return - data = urllib.urlopen("http://toolserver.org/~earwig/cgi-bin/swmt.py?action=iso").read() - data = string.split(data, "\n") - result = False - for datum in data: - if datum.startswith(lang): - result = re.findall(".*? (.*)", datum)[0] - break - if result: - reply(result, chan, nick) - return - reply("Not found.", chan, nick) - return if command == "lookup" or command == "ip": try: hexIP = line2[4] diff --git a/earwigbot/commands/langcode.py b/earwigbot/commands/langcode.py new file mode 100644 index 0000000..4630780 --- /dev/null +++ b/earwigbot/commands/langcode.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2009-2012 by Ben Kurtovic +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +from earwigbot.commands import BaseCommand + +class Command(BaseCommand): + """Convert a language code into its name and a list of WMF sites in that + language.""" + name = "langcode" + + def check(self, data): + commands = ["langcode", "lang", "language"] + return data.is_command and data.command in commands + + def process(self, data): + if not data.args: + self.reply(data, "please specify a language code.") + return + + code = data.args[0] + site = self.bot.wiki.get_site() + matrix = site.api_query(action="sitematrix")["sitematrix"] + del matrix["specials"] + + for site in matrix.itervalues(): + if site["code"] == code: + name = site["name"] + sites = ", ".join([s["url"] for s in site["site"]]) + msg = "\x0302{0}\x0302 is {1} ({2})".format(code, name, sites) + self.reply(data, msg) + return + + self.reply(data, "site \x0302{0}\x0301 not found.".format(code))