diff options
| author | 2020-03-08 23:34:54 +0000 | |
|---|---|---|
| committer | 2020-03-08 23:34:54 +0000 | |
| commit | 843d9fb77f10ae0d0a6d7368479379656d2f39b2 (patch) | |
| tree | d515182ce86e3c2e2b3a9d2347fd45117ae1e411 /modules/yourls.py | |
| parent | support extended url shorteners that take server and optional `context` (chan... (diff) | |
| signature | ||
add (as yet untested) Your Own URL Shortener support in yourls.py
Diffstat (limited to 'modules/yourls.py')
| -rw-r--r-- | modules/yourls.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/modules/yourls.py b/modules/yourls.py new file mode 100644 index 00000000..9543c4e2 --- /dev/null +++ b/modules/yourls.py @@ -0,0 +1,36 @@ +from src import ModuleManager, utils + +def _parse(s): + parsed = urllib.parse.urlpare(s) + return urllib.parse.urljoin(s, parsed.path), parsed.query + +SETTING = utils.FunctionSetting(_parse, "yourls", + "Set YOURLS server (and token) to use for URL shortening", + example="https://bitbot.dev/yourls-api.php?1002a612b4", + format=utils.sensitive_format) + +@utils.export("botset", SETTING) +@utils.export("serverset", SETTING) +@utils.export("channelset", SETTING) +class Module(ModuleManager.BaseModule): + @utils.export("shorturl-x-yourls") + def _shorturl(self, server, context, url): + if len(url) < 20: + return None + + setting = server.get_setting("yourls", + self.bot.get_setting("yourls", None)) + if context: + setting = context.get_setting("yourls", setting) + + if not setting == None: + url, token = setting + + page = utils.http.request(URL, post_data={ + "signature": token, + "action": "shorturl", + "url": url, + "format": "json"}).json() + if page: + return page["shorturl"] + return None |
