Remove ShrinkUrl

This commit is contained in:
oddluck 2020-02-04 04:30:05 +00:00
parent ddd1076b61
commit 304e10c8d0
10 changed files with 0 additions and 1287 deletions

View File

@ -1 +0,0 @@
This plugin features commands to shorten URLs through different services, like tinyurl.

View File

@ -1,64 +0,0 @@
###
# Copyright (c) 2005, Jeremiah Fincher
# Copyright (c) 2009, James McCoy
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions, and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions, and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the author of this software nor the name of
# contributors to this software may be used to endorse or promote products
# derived from this software without specific prior written consent.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
###
"""
Shrinks URLs using various URL shrinking services.
"""
import supybot
import supybot.world as world
__version__ = "%%VERSION%%"
__author__ = getattr(supybot.authors, 'jemfinch',
supybot.Author('jemfinch', '', ''))
__maintainer__ = getattr(supybot.authors, 'oddluck',
supybot.Author('oddluck', 'oddluck', 'oddluck@riseup.net'))
# This is a dictionary mapping supybot.Author instances to lists of
# contributions.
__contributors__ = {supybot.authors.jamessan: ['xrl.us support',
'x0.no support']}
from . import config
from . import plugin
from importlib import reload
reload(plugin) # In case we're being reloaded.
# Add more reloads here if you add third-party modules and want them to be
# reloaded when this plugin is reloaded. Don't forget to import them as well!
if world.testing:
from . import test
Class = plugin.Class
configure = config.configure
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:

View File

@ -1,103 +0,0 @@
###
# Copyright (c) 2005, Jeremiah Fincher
# Copyright (c) 2009-2010, James McCoy
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions, and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions, and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the author of this software nor the name of
# contributors to this software may be used to endorse or promote products
# derived from this software without specific prior written consent.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
###
import supybot.conf as conf
import supybot.registry as registry
from supybot.i18n import PluginInternationalization, internationalizeDocstring
_ = PluginInternationalization('ShrinkUrl')
def configure(advanced):
from supybot.questions import output, expect, anything, something, yn
conf.registerPlugin('ShrinkUrl', True)
if yn(_("""This plugin offers a snarfer that will go retrieve a shorter
version of long URLs that are sent to the channel. Would you
like this snarfer to be enabled?"""), default=False):
conf.supybot.plugins.ShrinkUrl.shrinkSnarfer.setValue(True)
class ShrinkService(registry.OnlySomeStrings):
"""Valid values include 'tiny', 'ur1', and 'x0'."""
validStrings = ('tiny', 'ur1', 'x0')
class ShrinkCycle(registry.SpaceSeparatedListOfStrings):
"""Valid values include 'ln', 'tiny', 'ur1', and 'x0'."""
Value = ShrinkService
def __init__(self, *args, **kwargs):
super(ShrinkCycle, self).__init__(*args, **kwargs)
self.lastIndex = -1
def setValue(self, v):
super(self.__class__, self).setValue(v)
self.lastIndex = -1
def getService(self):
L = self()
if L:
self.lastIndex = (self.lastIndex + 1) % len(L)
return L[self.lastIndex]
raise ValueError('No services have been configured for rotation. ' \
'See conf.supybot.plugins.ShrinkUrl.serviceRotation.')
ShrinkUrl = conf.registerPlugin('ShrinkUrl')
conf.registerChannelValue(ShrinkUrl, 'shrinkSnarfer',
registry.Boolean(False, _("""Determines whether the
shrink snarfer is enabled. This snarfer will watch for URLs in the
channel, and if they're sufficiently long (as determined by
supybot.plugins.ShrinkUrl.minimumLength) it will post a
smaller URL from the service as denoted in
supybot.plugins.ShrinkUrl.default.""")))
conf.registerChannelValue(ShrinkUrl.shrinkSnarfer, 'showDomain',
registry.Boolean(True, _("""Determines whether the snarfer will show the
domain of the URL being snarfed along with the shrunken URL.""")))
conf.registerChannelValue(ShrinkUrl, 'minimumLength',
registry.PositiveInteger(48, _("""The minimum length a URL must be before
the bot will shrink it.""")))
conf.registerChannelValue(ShrinkUrl, 'nonSnarfingRegexp',
registry.Regexp(None, _("""Determines what URLs are to be snarfed; URLs
matching the regexp given will not be snarfed. Give the empty string if
you have no URLs that you'd like to exclude from being snarfed.""")))
conf.registerChannelValue(ShrinkUrl, 'outFilter',
registry.Boolean(False, _("""Determines whether the bot will shrink the
URLs of outgoing messages if those URLs are longer than
supybot.plugins.ShrinkUrl.minimumLength.""")))
conf.registerChannelValue(ShrinkUrl, 'default',
ShrinkService('x0', _("""Determines what website the bot will use when
shrinking a URL.""")))
conf.registerGlobalValue(ShrinkUrl, 'bold',
registry.Boolean(True, _("""Determines whether this plugin will bold
certain portions of its replies.""")))
conf.registerChannelValue(ShrinkUrl, 'serviceRotation',
ShrinkCycle([], _("""If set to a non-empty value, specifies the list of
services to rotate through for the shrinkSnarfer and outFilter.""")))
conf.registerChannelValue(ShrinkUrl, 'fetchSpiffyTitle',
registry.Boolean(False, _("""Determines whether the bot will fetch URL
titles with the SpiffyTitles plugin.""")))
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:

View File

@ -1,205 +0,0 @@
# ShrinkUrl plugin in Limnoria.
# Copyright (C) 2011, 2012 Limnoria
# Mikaela Suomalainen <mkaysi@outlook.com>, 2011, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: Limnoria\n"
"POT-Creation-Date: 2015-01-24 19:31+CET\n"
"PO-Revision-Date: 2015-01-24 19:31+0100\n"
"Last-Translator: Mikaela Suomalainen <mikaela.suomalainen@outlook.com>\n"
"Language-Team: suomi <>\n"
"Language: fi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: pygettext.py 1.5\n"
"Plural-Forms: \n"
"X-Generator: Poedit 1.6.10\n"
#: config.py:39
msgid ""
"This plugin offers a snarfer that will go retrieve a shorter\n"
" version of long URLs that are sent to the channel. Would you\n"
" like this snarfer to be enabled?"
msgstr ""
"Tämä lisäosa tarjoaa kaappaajan,joka palauttaa lyhyemmän\n"
" version pitkistä URL-osoitteista, jotka lähetetään kanavalle. Haluaisitko\n"
" tämän kaappaajan olevan käytössä?"
#: config.py:45 config.py:49
msgid "Valid values include 'ln', 'tiny', 'goo', 'ur1', and 'x0'."
msgstr "Kelvolliset arvot ovat 'ln', 'tiny', 'goo', 'ur1' ja 'x0' ."
#: config.py:70
msgid ""
"Determines whether the\n"
" shrink snarfer is enabled. This snarfer will watch for URLs in the\n"
" channel, and if they're sufficiently long (as determined by\n"
" supybot.plugins.ShrinkUrl.minimumLength) it will post a\n"
" smaller URL from either ln-s.net or tinyurl.com, as denoted in\n"
" supybot.plugins.ShrinkUrl.default."
msgstr ""
"Määrittää onko kutistuskaappain käytössä.\n"
" Tämä kaappaaja vahtii URL-osoitteita kanavalla\n"
" ja jos ne ovat tarpeeksi pitkiä (määritetty asetusarvolla\n"
" supybot.plugins.ShrinkUrl.minimumLength), se lähettää lyhyemmän URL-"
"osoitteen\n"
" joko sivustolta ln-s.net tai tinyurl.com, riippuen, minkä asetuksen\n"
" supybot.plugins.ShrinkUrl.default määrittää."
#: config.py:77
msgid ""
"Determines whether the snarfer will show the\n"
" domain of the URL being snarfed along with the shrunken URL."
msgstr ""
"Määrittää näyttääkö kaappaaja kaapatun URL-osoitteen domainin lyhennetyn\n"
" URL-osoitteen kanssa."
#: config.py:80
msgid ""
"The minimum length a URL must be before\n"
" the bot will shrink it."
msgstr ""
"Vähimmäispituus joka URL-osoitteen täytyy olla, ennen kuin\n"
" botti kutistaa sen."
#: config.py:83
msgid ""
"Determines what URLs are to be snarfed; URLs\n"
" matching the regexp given will not be snarfed. Give the empty string "
"if\n"
" you have no URLs that you'd like to exclude from being snarfed."
msgstr ""
"Määrittää mitä URL-osoitteita ei kaapata; URL-osoitteet, jotka\n"
" täsmäävät annettuun säännölliseen lausekkeeseen jätetään kaappaamatta. "
"Anna tyhjä merkkiketju, jos\n"
" et halua estää mitään URL-osoitetta tulemasta kaapatuksi."
#: config.py:87
msgid ""
"Determines whether the bot will shrink the\n"
" URLs of outgoing messages if those URLs are longer than\n"
" supybot.plugins.ShrinkUrl.minimumLength."
msgstr ""
"Määrittää lyhentääkö botti ulosmenevien viestien\n"
" URL-osoitteet, jos ne ovat pidempiä kuin\n"
" supybot.plugins.ShrinkUrl.minimumLength."
#: config.py:91
msgid ""
"Determines what website the bot will use when\n"
" shrinking a URL."
msgstr ""
"Määrittää mitä verkkosivua botti käyttää lyhentäessään\n"
" URL-osoitetta."
#: config.py:94
msgid ""
"Determines whether this plugin will bold\n"
" certain portions of its replies."
msgstr ""
"Määrittää korostaako botti tietyt osat\n"
" vastauksissaan."
#: config.py:97
msgid ""
"If set to a non-empty value, specifies the list of\n"
" services to rotate through for the shrinkSnarfer and outFilter."
msgstr ""
"Jos tämä on asetettu muuksi, kuin tyhjäksi arvoksi, määrittää listan\n"
" palveluista, joita käytetään kutistuskaappaajalle ja ulostulon "
"suodattimelle."
#: plugin.py:90
msgid ""
"This plugin features commands to shorten URLs through different services,\n"
" like tinyurl."
msgstr ""
"Tämä plugin sisältää komennot URL-osoitteiden lyhentämiseen eri palveluilla, "
"kuten esimerkiksi\n"
" tinyurl:illa."
#: plugin.py:192
msgid ""
"<url>\n"
"\n"
" Returns an ln-s.net version of <url>.\n"
" "
msgstr ""
"<URL-osoite>\n"
"\n"
" Palauttaa ln-s.net version <URL-osoitteesta>.\n"
" "
#: plugin.py:219
msgid ""
"<url>\n"
"\n"
" Returns a TinyURL.com version of <url>\n"
" "
msgstr ""
"<URL-osoite>\n"
"\n"
" Palauttaa TinyURL.com palvelun lyhentämän version <URL-"
"osoitteesta>.\n"
" "
#: plugin.py:252
msgid ""
"<url>\n"
"\n"
" Returns an goo.gl version of <url>.\n"
" "
msgstr ""
"<url>\n"
"\n"
" Palauttaa goo.gl-palvelun lyhentämän version <URL-osoitteesta>."
#: plugin.py:282
msgid ""
"<url>\n"
"\n"
" Returns an ur1 version of <url>.\n"
" "
msgstr ""
"<url>\n"
" Palauttaa ur1-version <url:stä>.\n"
" "
#: plugin.py:309
msgid ""
"<url>\n"
"\n"
" Returns an x0.no version of <url>.\n"
" "
msgstr ""
"<url>\n"
"\n"
" Palauttaa x0.no palvelun lyhentämän version <URL-osoitteesta>.\n"
" "
#: plugin.py:336
msgid ""
"<url>\n"
"\n"
" Returns an expanded version of <url>.\n"
" "
msgstr ""
"<url>\n"
" Palauttaa laajennetun version <url-osoitteesta>.\n"
" "
#~ msgid ""
#~ "<url>\n"
#~ "\n"
#~ " Returns an xrl.us version of <url>.\n"
#~ " "
#~ msgstr ""
#~ "<URL-osoite>\n"
#~ "\n"
#~ " Palauttaa xrl.us palvelun lyhentämän version <URL-osoitteesta>.\n"
#~ " "
#~ msgid "Valid values include 'ln', 'tiny', 'xrl', 'goo', and 'x0'."
#~ msgstr "Kelvolliset arvot ovat 'ln', 'tiny', 'xrl', 'goo' ja 'x0' ."

View File

@ -1,183 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: Limnoria\n"
"POT-Creation-Date: 2015-01-24 19:31+CET\n"
"PO-Revision-Date: 2015-01-24 19:32+0100\n"
"Last-Translator: Valentin Lorentz <progval@gmail.com>\n"
"Language-Team: Limnoria <progval@gmail.com>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-SourceCharset: ASCII\n"
"X-Generator: Poedit 1.5.4\n"
#: config.py:39
msgid ""
"This plugin offers a snarfer that will go retrieve a shorter\n"
" version of long URLs that are sent to the channel. Would you\n"
" like this snarfer to be enabled?"
msgstr ""
"Ce plugin offre un snarfer qui récupère de longues URLs envoyées sur un "
"canal pour en envoyer une version plus courte. Voulez-vous activer ce "
"snarfer ?"
#: config.py:45 config.py:49
msgid "Valid values include 'ln', 'tiny', 'goo', 'ur1', and 'x0'."
msgstr ""
"Les valeurs valides incluent 'ln', 'tiny', 'goo', 'ur1', et 'x0'."
#: config.py:70
msgid ""
"Determines whether the\n"
" shrink snarfer is enabled. This snarfer will watch for URLs in the\n"
" channel, and if they're sufficiently long (as determined by\n"
" supybot.plugins.ShrinkUrl.minimumLength) it will post a\n"
" smaller URL from either ln-s.net or tinyurl.com, as denoted in\n"
" supybot.plugins.ShrinkUrl.default."
msgstr ""
"Détermine si le snarfer d'URL est activé. Ce remplaceur sera à l'écoute de "
"toutes les URLs sur lle canal, et, si elle sont suffisamment longues "
"(déterminé par supybot.plugins.ShrinkUrl.minimumLength) le bot postera une "
"URL raccourcie avec ln-s.net ou tinyurl.com, comme défini par supybot."
"plugins.ShrinkUrl.default."
#: config.py:77
msgid ""
"Determines whether the snarfer will show the\n"
" domain of the URL being snarfed along with the shrunken URL."
msgstr ""
"Détermine si le snarfer affichera le domaine de l'URL snarfée avec l'URL "
"raccourcie."
#: config.py:80
msgid ""
"The minimum length a URL must be before\n"
" the bot will shrink it."
msgstr "La taille minimum d'une URL pour que le bot la raccourcice."
#: config.py:83
msgid ""
"Determines what URLs are to be snarfed; URLs\n"
" matching the regexp given will not be snarfed. Give the empty string "
"if\n"
" you have no URLs that you'd like to exclude from being snarfed."
msgstr ""
"Détermine quelles URLs seront snarfées ; les URLs correspondant à "
"l'expression régulière ne seront par snarfées. Donnez une chaîne vide si il "
"n'y a pas d'URL que vous voulez exclure."
#: config.py:87
msgid ""
"Determines whether the bot will shrink the\n"
" URLs of outgoing messages if those URLs are longer than\n"
" supybot.plugins.ShrinkUrl.minimumLength."
msgstr ""
"Détermine si le bot raccourcira les URLs des messages sortant si ces URLs "
"sont plus longues que supybot.plugins.ShrinkUrl.minimumLength."
#: config.py:91
msgid ""
"Determines what website the bot will use when\n"
" shrinking a URL."
msgstr "Détermine quel site web le bot utilisera pour raccourcir une URL"
#: config.py:94
msgid ""
"Determines whether this plugin will bold\n"
" certain portions of its replies."
msgstr ""
"Détermine si ce plugin mettra en gras certaines portions de ses réponses."
#: config.py:97
msgid ""
"If set to a non-empty value, specifies the list of\n"
" services to rotate through for the shrinkSnarfer and outFilter."
msgstr ""
"Si définit à une valeur non vide, définit la liste des services à faire "
"tourner pour shrinkSnarfer et outFilter."
#: plugin.py:90
msgid ""
"This plugin features commands to shorten URLs through different services,\n"
" like tinyurl."
msgstr ""
#: plugin.py:192
msgid ""
"<url>\n"
"\n"
" Returns an ln-s.net version of <url>.\n"
" "
msgstr ""
"<url>\n"
"\n"
"Retourne une version de ln-s.net de l'<url>."
#: plugin.py:219
msgid ""
"<url>\n"
"\n"
" Returns a TinyURL.com version of <url>\n"
" "
msgstr ""
"<url>\n"
"\n"
"Retourne une version de TinyURL.com de l'<url>."
#: plugin.py:252
msgid ""
"<url>\n"
"\n"
" Returns an goo.gl version of <url>.\n"
" "
msgstr ""
"<url>\n"
"\n"
"Retourne une version de goo.gl de l'<url>."
#: plugin.py:282
msgid ""
"<url>\n"
"\n"
" Returns an ur1 version of <url>.\n"
" "
msgstr ""
"<url>\n"
"\n"
"Retourne une version de ur1 de l'<url>."
#: plugin.py:309
msgid ""
"<url>\n"
"\n"
" Returns an x0.no version of <url>.\n"
" "
msgstr ""
"<url>\n"
"\n"
"Retourne une version de x0.no de l'<url>."
#: plugin.py:336
msgid ""
"<url>\n"
"\n"
" Returns an expanded version of <url>.\n"
" "
msgstr ""
"<url>\n"
"\n"
"Retourne la version large de l'<url>."
#~ msgid ""
#~ "<url>\n"
#~ "\n"
#~ " Returns an xrl.us version of <url>.\n"
#~ " "
#~ msgstr ""
#~ "<url>\n"
#~ "\n"
#~ "Retourne une version de xrl.us de l'<url>."
#~ msgid "Valid values include 'ln', 'tiny', 'xrl', 'goo', and 'x0'."
#~ msgstr "Les valeurs valides incluent 'ln', 'tiny', 'xrl', 'goo', et 'x0'."

View File

@ -1,194 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: Limnoria\n"
"POT-Creation-Date: 2015-01-24 19:31+CET\n"
"PO-Revision-Date: 2015-01-24 11:45+0100\n"
"Last-Translator: skizzhg <skizzhg@gmx.com>\n"
"Language-Team: Italian <skizzhg@gmx.com>\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: config.py:39
msgid ""
"This plugin offers a snarfer that will go retrieve a shorter\n"
" version of long URLs that are sent to the channel. Would you\n"
" like this snarfer to be enabled?"
msgstr ""
"Questo plugin offre un cattura URL che riporterà una versione accorciata\n"
" di quelli lunghi inviati al canale. Lo si vuole abilitare?\n"
#: config.py:45 config.py:49
#, fuzzy
msgid "Valid values include 'ln', 'tiny', 'goo', 'ur1', and 'x0'."
msgstr ""
"I valori validi comprendono \"ln\", \"tiny\", \"goo\" e \"x0\"."
#: config.py:70
msgid ""
"Determines whether the\n"
" shrink snarfer is enabled. This snarfer will watch for URLs in the\n"
" channel, and if they're sufficiently long (as determined by\n"
" supybot.plugins.ShrinkUrl.minimumLength) it will post a\n"
" smaller URL from either ln-s.net or tinyurl.com, as denoted in\n"
" supybot.plugins.ShrinkUrl.default."
msgstr ""
"Determina se l'accorcia URL è abilitato. Questo controllerà gli URL che "
"passano\n"
" in canale e se sono sufficientemente lunghi (determinato da\n"
" supybot.plugins.ShrinkUrl.minimumLength) il bot ne invierà uno più "
"corto\n"
" tramite ln-s.net o tinyurl.com, come definito in supybot.plugins."
"ShrinkUrl.default."
#: config.py:77
msgid ""
"Determines whether the snarfer will show the\n"
" domain of the URL being snarfed along with the shrunken URL."
msgstr ""
"Determina se l'accorcia URL mostrerà il dominio dell'URL originale assieme a "
"quello accorciato."
#: config.py:80
msgid ""
"The minimum length a URL must be before\n"
" the bot will shrink it."
msgstr ""
"La lunghezza minima che un URL deve avere affinché il bot decida di "
"accorciarlo."
#: config.py:83
msgid ""
"Determines what URLs are to be snarfed; URLs\n"
" matching the regexp given will not be snarfed. Give the empty string "
"if\n"
" you have no URLs that you'd like to exclude from being snarfed."
msgstr ""
"Determina quali URL debbano essere intercettati; quelli che corrispondono "
"alla\n"
" regexp fornita non verranno coinvolti. Se non si vuole escludere alcun "
"URL,\n"
" aggiungere una stringa vuota."
#: config.py:87
msgid ""
"Determines whether the bot will shrink the\n"
" URLs of outgoing messages if those URLs are longer than\n"
" supybot.plugins.ShrinkUrl.minimumLength."
msgstr ""
"Determina se il bot accorcerà gli URL dei messaggi in uscita se questi sono "
"più\n"
" lunghi del valore di supybot.plugins.ShrinkUrl.minimumLength."
#: config.py:91
msgid ""
"Determines what website the bot will use when\n"
" shrinking a URL."
msgstr "Determina quale sito web il bot userà per accorciare un URL."
#: config.py:94
msgid ""
"Determines whether this plugin will bold\n"
" certain portions of its replies."
msgstr ""
"Determina se il plugin riporterà in grassetto alcune porzioni delle risposte."
#: config.py:97
msgid ""
"If set to a non-empty value, specifies the list of\n"
" services to rotate through for the shrinkSnarfer and outFilter."
msgstr ""
"Se impostato ad un valore non vuoto, specifica l'elenco dei servizi a cui\n"
" rivolgersi per le variabili shrinkSnarfer e outFilter."
#: plugin.py:90
msgid ""
"This plugin features commands to shorten URLs through different services,\n"
" like tinyurl."
msgstr ""
#: plugin.py:192
msgid ""
"<url>\n"
"\n"
" Returns an ln-s.net version of <url>.\n"
" "
msgstr ""
"<url>\n"
"\n"
" Restituisce una versione di ln-s.net di <url>.\n"
" "
#: plugin.py:219
msgid ""
"<url>\n"
"\n"
" Returns a TinyURL.com version of <url>\n"
" "
msgstr ""
"<url>\n"
"\n"
" Restituisce una versione di TinyURL.com di <url>\n"
" "
#: plugin.py:252
msgid ""
"<url>\n"
"\n"
" Returns an goo.gl version of <url>.\n"
" "
msgstr ""
"<url>\n"
"\n"
" Restituisce una versione di goo.gl di <url>.\n"
" "
#: plugin.py:282
#, fuzzy
msgid ""
"<url>\n"
"\n"
" Returns an ur1 version of <url>.\n"
" "
msgstr ""
"<url>\n"
"\n"
" Restituisce una versione di xrl.us di <url>.\n"
" "
#: plugin.py:309
msgid ""
"<url>\n"
"\n"
" Returns an x0.no version of <url>.\n"
" "
msgstr ""
"<url>\n"
"\n"
" Restituisce una versione di x0.no di <url>.\n"
" "
#: plugin.py:336
#, fuzzy
msgid ""
"<url>\n"
"\n"
" Returns an expanded version of <url>.\n"
" "
msgstr ""
"<url>\n"
"\n"
" Restituisce una versione di x0.no di <url>.\n"
" "
#~ msgid ""
#~ "<url>\n"
#~ "\n"
#~ " Returns an xrl.us version of <url>.\n"
#~ " "
#~ msgstr ""
#~ "<url>\n"
#~ "\n"
#~ " Restituisce una versione di xrl.us di <url>.\n"
#~ " "

View File

@ -1,144 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR ORGANIZATION
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2015-01-24 19:31+CET\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
#: config.py:39
msgid ""
"This plugin offers a snarfer that will go retrieve a shorter\n"
" version of long URLs that are sent to the channel. Would you\n"
" like this snarfer to be enabled?"
msgstr ""
#: config.py:45 config.py:49
#, docstring
msgid "Valid values include 'ln', 'tiny', 'goo', 'ur1', and 'x0'."
msgstr ""
#: config.py:70
msgid ""
"Determines whether the\n"
" shrink snarfer is enabled. This snarfer will watch for URLs in the\n"
" channel, and if they're sufficiently long (as determined by\n"
" supybot.plugins.ShrinkUrl.minimumLength) it will post a\n"
" smaller URL from either ln-s.net or tinyurl.com, as denoted in\n"
" supybot.plugins.ShrinkUrl.default."
msgstr ""
#: config.py:77
msgid ""
"Determines whether the snarfer will show the\n"
" domain of the URL being snarfed along with the shrunken URL."
msgstr ""
#: config.py:80
msgid ""
"The minimum length a URL must be before\n"
" the bot will shrink it."
msgstr ""
#: config.py:83
msgid ""
"Determines what URLs are to be snarfed; URLs\n"
" matching the regexp given will not be snarfed. Give the empty string if\n"
" you have no URLs that you'd like to exclude from being snarfed."
msgstr ""
#: config.py:87
msgid ""
"Determines whether the bot will shrink the\n"
" URLs of outgoing messages if those URLs are longer than\n"
" supybot.plugins.ShrinkUrl.minimumLength."
msgstr ""
#: config.py:91
msgid ""
"Determines what website the bot will use when\n"
" shrinking a URL."
msgstr ""
#: config.py:94
msgid ""
"Determines whether this plugin will bold\n"
" certain portions of its replies."
msgstr ""
#: config.py:97
msgid ""
"If set to a non-empty value, specifies the list of\n"
" services to rotate through for the shrinkSnarfer and outFilter."
msgstr ""
#: plugin.py:90
#, docstring
msgid ""
"This plugin features commands to shorten URLs through different services,\n"
" like tinyurl."
msgstr ""
#: plugin.py:192
#, docstring
msgid ""
"<url>\n"
"\n"
" Returns an ln-s.net version of <url>.\n"
" "
msgstr ""
#: plugin.py:219
#, docstring
msgid ""
"<url>\n"
"\n"
" Returns a TinyURL.com version of <url>\n"
" "
msgstr ""
#: plugin.py:252
#, docstring
msgid ""
"<url>\n"
"\n"
" Returns an goo.gl version of <url>.\n"
" "
msgstr ""
#: plugin.py:282
#, docstring
msgid ""
"<url>\n"
"\n"
" Returns an ur1 version of <url>.\n"
" "
msgstr ""
#: plugin.py:309
#, docstring
msgid ""
"<url>\n"
"\n"
" Returns an x0.no version of <url>.\n"
" "
msgstr ""
#: plugin.py:336
#, docstring
msgid ""
"<url>\n"
"\n"
" Returns an expanded version of <url>.\n"
" "
msgstr ""

View File

@ -1,275 +0,0 @@
###
# Copyright (c) 2002-2004, Jeremiah Fincher
# Copyright (c) 2009-2010, James McCoy
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions, and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions, and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the author of this software nor the name of
# contributors to this software may be used to endorse or promote products
# derived from this software without specific prior written consent.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
###
import re
import sys
import time
import json
import supybot.log as log
import supybot.conf as conf
import supybot.utils as utils
from supybot.commands import *
import supybot.ircmsgs as ircmsgs
import supybot.plugins as plugins
import supybot.ircutils as ircutils
import supybot.callbacks as callbacks
from supybot.i18n import PluginInternationalization, internationalizeDocstring
_ = PluginInternationalization('ShrinkUrl')
class CdbShrunkenUrlDB(object):
def __init__(self, filename):
self.dbs = {}
cdb = conf.supybot.databases.types.cdb
def register_service(service):
dbname = filename.replace('.db', service.capitalize() + '.db')
self.dbs[service] = cdb.connect(dbname)
for service in conf.supybot.plugins.ShrinkUrl.default.validStrings:
register_service(service)
register_service('Expand')
def get(self, service, url):
return self.dbs[service][url]
def set(self, service, url, shrunkurl):
self.dbs[service][url] = shrunkurl
def close(self):
for service in self.dbs:
self.dbs[service].close()
def flush(self):
for service in self.dbs:
self.dbs[service].flush()
ShrunkenUrlDB = plugins.DB('ShrinkUrl', {'cdb': CdbShrunkenUrlDB})
class ShrinkError(Exception):
pass
def retry(f):
def newf(*args, **kwargs):
for x in range(0, 3):
try:
return f(*args, **kwargs)
except Exception:
log.exception('Shrinking URL failed. Trying again.')
time.sleep(1)
return f(*args, **kwargs)
return newf
class ShrinkUrl(callbacks.PluginRegexp):
"""This plugin features commands to shorten URLs through different services,
like tinyurl."""
regexps = ['shrinkSnarfer']
def __init__(self, irc):
self.__parent = super(ShrinkUrl, self)
self.__parent.__init__(irc)
self.db = ShrunkenUrlDB()
def die(self):
self.db.close()
def callCommand(self, command, irc, msg, *args, **kwargs):
try:
self.__parent.callCommand(command, irc, msg, *args, **kwargs)
except utils.web.Error as e:
irc.error(str(e))
def _outFilterThread(self, irc, msg):
(channel, text) = msg.args
network = irc.network
for m in utils.web.httpUrlRe.finditer(text):
url = m.group(1)
if len(url) > self.registryValue('minimumLength', channel, network):
try:
cmd = self.registryValue('serviceRotation',
channel, network, value=False)
cmd = cmd.getService().capitalize()
except ValueError:
cmd = self.registryValue('default', channel, network) \
.capitalize()
try:
shortUrl = getattr(self, '_get%sUrl' % cmd)(url)
text = text.replace(url, shortUrl)
except (utils.web.Error, AttributeError, ShrinkError):
pass
newMsg = ircmsgs.privmsg(channel, text, msg=msg)
newMsg.tag('shrunken')
irc.queueMsg(newMsg)
def outFilter(self, irc, msg):
if msg.command != 'PRIVMSG':
return msg
if msg.channel:
if not msg.shrunken:
if self.registryValue('outFilter', msg.channel, irc.network):
if utils.web.httpUrlRe.search(msg.args[1]):
self._outFilterThread(irc, msg)
return None
return msg
def shrinkSnarfer(self, irc, msg, match):
channel = msg.channel
network = irc.network
if not channel:
return
if self.registryValue('shrinkSnarfer', channel, network):
url = match.group(0)
r = self.registryValue('nonSnarfingRegexp', channel, network)
if r and r.search(url) is not None:
self.log.debug('Matched nonSnarfingRegexp: %u', url)
return
minlen = self.registryValue('minimumLength', channel, network)
try:
cmd = self.registryValue('serviceRotation',
channel, network, value=False)
cmd = cmd.getService().capitalize()
except ValueError:
cmd = self.registryValue('default', channel, network) \
.capitalize()
if len(url) >= minlen:
try:
shorturl = getattr(self, '_get%sUrl' % cmd)(url)
except (utils.web.Error, AttributeError, ShrinkError):
self.log.info('Couldn\'t get shorturl for %u', url)
return
if self.registryValue('shrinkSnarfer.showDomain',
channel, network):
domain = ' (at %s)' % utils.web.getDomain(url)
else:
domain = ''
if self.registryValue('bold'):
s = format('%u%s', ircutils.bold(shorturl), domain)
else:
s = format('%u%s', shorturl, domain)
m = irc.reply(s, prefixNick=False)
if m is not None:
m.tag('shrunken')
if self.registryValue("fetchSpiffyTitle", channel):
spiffy = irc.getCallback("SpiffyTitles")
if spiffy:
try:
result = spiffy.get_title_by_url(url, channel, msg.nick)
if result:
irc.reply(result, prefixNick=False)
except:
log.exception("ShrinkUrl/SpiffyTitles: failed to get title for url %s", url)
shrinkSnarfer = urlSnarfer(shrinkSnarfer)
shrinkSnarfer.__doc__ = utils.web._httpUrlRe
@retry
def _getTinyUrl(self, url):
try:
return self.db.get('tiny', url)
except KeyError:
text = utils.web.getUrl('http://tinyurl.com/api-create.php?url=' + url)
text = text.decode()
if text.startswith('Error'):
raise ShrinkError(text[5:])
self.db.set('tiny', url, text)
return text
@internationalizeDocstring
def tiny(self, irc, msg, args, url):
"""<url>
Returns a TinyURL.com version of <url>
"""
try:
tinyurl = self._getTinyUrl(url)
m = irc.reply(tinyurl)
if m is not None:
m.tag('shrunken')
except ShrinkError as e:
irc.errorPossibleBug(str(e))
tiny = thread(wrap(tiny, ['httpUrl']))
_ur1Api = 'http://ur1.ca/'
_ur1Regexp = re.compile(r'<a href="(?P<url>[^"]+)">')
@retry
def _getUr1Url(self, url):
try:
return self.db.get('ur1ca', utils.web.urlquote(url))
except KeyError:
parameters = utils.web.urlencode({'longurl': url})
response = utils.web.getUrl(self._ur1Api, data=parameters)
ur1ca = self._ur1Regexp.search(response.decode()).group('url')
if ur1ca:
self.db.set('ur1', url, ur1ca)
return ur1ca
else:
raise ShrinkError(response)
def ur1(self, irc, msg, args, url):
"""<url>
Returns an ur1 version of <url>.
"""
try:
ur1url = self._getUr1Url(url)
m = irc.reply(ur1url)
if m is not None:
m.tag('shrunken')
except ShrinkError as e:
irc.error(str(e))
ur1 = thread(wrap(ur1, ['httpUrl']))
_x0Api = 'https://x0.no/api/?%s'
@retry
def _getX0Url(self, url):
try:
return self.db.get('x0', url)
except KeyError:
text = utils.web.getUrl(self._x0Api % url).decode()
if text.startswith('ERROR:'):
raise ShrinkError(text[6:])
self.db.set('x0', url, text)
return text
@internationalizeDocstring
def x0(self, irc, msg, args, url):
"""<url>
Returns an x0.no version of <url>.
"""
try:
x0url = self._getX0Url(url)
m = irc.reply(x0url)
if m is not None:
m.tag('shrunken')
except ShrinkError as e:
irc.error(str(e))
x0 = thread(wrap(x0, ['httpUrl']))
Class = ShrinkUrl
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:

View File

@ -1,116 +0,0 @@
###
# Copyright (c) 2002-2004, Jeremiah Fincher
# Copyright (c) 2009-2010, James McCoy
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions, and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions, and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the author of this software nor the name of
# contributors to this software may be used to endorse or promote products
# derived from this software without specific prior written consent.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
###
from supybot.test import *
class ShrinkUrlTestCase(ChannelPluginTestCase):
plugins = ('ShrinkUrl',)
config = {'supybot.snarfThrottle': 0}
sfUrl ='http://sourceforge.net/p/supybot/bugs/?source=navbar'
udUrl = 'http://www.urbandictionary.com/define.php?' \
'term=all+your+base+are+belong+to+us'
tests = {'tiny': [(sfUrl, r'http://tinyurl.com/b7wyvfz'),
(udUrl, r'http://tinyurl.com/u479')],
'ur1': [(sfUrl, r'http://ur1.ca/ceqh8'),
(udUrl, r'http://ur1.ca/9xl9k')],
'x0': [(sfUrl, r'https://x0.no/a53s'),
(udUrl, r'https://x0.no/0l2k')]
}
if network:
def testShrink(self):
for (service, testdata) in self.tests.items():
for (url, shrunkurl) in testdata:
self.assertRegexp('shrinkurl %s %s' % (service, url),
shrunkurl)
def testShrinkCycle(self):
cycle = conf.supybot.plugins.ShrinkUrl.serviceRotation
snarfer = conf.supybot.plugins.ShrinkUrl.shrinkSnarfer
origcycle = cycle()
origsnarfer = snarfer()
try:
self.assertNotError(
'config plugins.ShrinkUrl.serviceRotation tiny x0')
self.assertError(
'config plugins.ShrinkUrl.serviceRotation tiny x1')
snarfer.setValue(True)
self.assertSnarfRegexp(self.udUrl, r'.*%s.* \(at' %
self.tests['tiny'][1][1])
self.assertSnarfRegexp(self.udUrl, r'.*%s.* \(at' %
self.tests['x0'][1][1])
finally:
cycle.setValue(origcycle)
snarfer.setValue(origsnarfer)
def _snarf(self, service):
shrink = conf.supybot.plugins.ShrinkUrl
origService = shrink.default()
origSnarf = shrink.shrinkSnarfer()
shrink.default.setValue(service)
shrink.shrinkSnarfer.setValue(True)
try:
for (url, shrunkurl) in self.tests[service]:
teststr = r'.*%s.* \(at' % shrunkurl
self.assertSnarfRegexp(url, teststr)
finally:
shrink.default.setValue(origService)
shrink.shrinkSnarfer.setValue(origSnarf)
def testTinysnarf(self):
self._snarf('tiny')
def testUr1snarf(self):
self._snarf('ur1')
def testX0snarf(self):
self._snarf('x0')
def testNonSnarfing(self):
shrink = conf.supybot.plugins.ShrinkUrl
origService = shrink.default()
origSnarf = shrink.shrinkSnarfer()
origLen = shrink.minimumLength()
origRegexp = shrink.nonSnarfingRegexp()
shrink.default.setValue('tiny')
shrink.shrinkSnarfer.setValue(True)
shrink.minimumLength.setValue(10)
shrink.nonSnarfingRegexp.set('m/sf/')
try:
self.assertSnarfNoResponse('http://sf.net/', 5)
self.assertSnarfRegexp('http://sourceforge.net/',
r'http://tinyurl.com/7vm7.*\(at ')
finally:
shrink.default.setValue(origService)
shrink.shrinkSnarfer.setValue(origSnarf)
shrink.minimumLength.setValue(origLen)
shrink.nonSnarfingRegexp.setValue(origRegexp)
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:

View File

@ -1602,8 +1602,6 @@ class SpiffyTitles(callbacks.Plugin):
self.get_source_by_url(url, retries + 1)
except requests.exceptions.MissingSchema as e:
if dynamic.irc.nick.lower() == dynamic.msg.nick.lower():
return
url_wschema = "http://%s" % (url)
log.error("SpiffyTitles missing schema. Retrying with %s" % (url_wschema))
info = urlparse(url_wschema)