Browse Source

implement custom shorter url support (#28)

Usage: set "--short-api" to "custom", provide url with "--short-url" to shorter
service which returns short link in text form. For paste url mask "{{url}}" must
be used. Link queried with GET request.

Example for Shlink service:
https://doma.in/rest/v2/short-urls/shorten?apiKey=YOURKEY&longUrl={{url}}&format=txt

Signed-off-by: R4SAS <r4sas@i2pmail.org>
pull/34/head
R4SAS 3 years ago
parent
commit
82ca95f01a
Signed by: r4sas
GPG Key ID: 66F6C87B98EBCFE2
  1. 2
      pbincli/__init__.py
  2. 17
      pbincli/api.py
  3. 2
      pbincli/cli.py

2
pbincli/__init__.py

@ -2,6 +2,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
__author__ = "R4SAS <r4sas@i2pmail.org>" __author__ = "R4SAS <r4sas@i2pmail.org>"
__version__ = "0.3.1" __version__ = "0.3.2b1"
__copyright__ = "Copyright (c) R4SAS" __copyright__ = "Copyright (c) R4SAS"
__license__ = "MIT" __license__ = "MIT"

17
pbincli/api.py

@ -95,6 +95,8 @@ class Shortener:
self._yourls_init(settings) self._yourls_init(settings)
elif self.api == 'isgd' or self.api == 'vgd': elif self.api == 'isgd' or self.api == 'vgd':
self._gd_init() self._gd_init()
elif self.api == 'custom':
self.apiurl == settings['short_url']
self.session, self.proxy = _config_requests(settings) self.session, self.proxy = _config_requests(settings)
@ -142,6 +144,7 @@ class Shortener:
'isgd': self._gd, 'isgd': self._gd,
'vgd': self._gd, 'vgd': self._gd,
'cuttly': self._cuttly 'cuttly': self._cuttly
'custom': self._custom
} }
# run function selected by choosen API # run function selected by choosen API
servicesList[self.api](url) servicesList[self.api](url)
@ -250,3 +253,17 @@ class Shortener:
print("Short Link:\t{}".format(result.text)) print("Short Link:\t{}".format(result.text))
except Exception as ex: except Exception as ex:
PBinCLIError("cutt.ly: unexcepted behavior: {}".format(ex)) PBinCLIError("cutt.ly: unexcepted behavior: {}".format(ex))
def _custom(self, url):
from urllib.parse import quote
qUrl = quote(url, safe="") # urlencoded paste url
rUrl = self.apiurl.replace("{{url}}", qUrl)
try:
result = self.session.get(
url = rUrl,
proxies = self.proxy)
print("Short Link:\t{}".format(result.text))
except Exception as ex:
PBinCLIError("Shorter: unexcepted behavior: {}".format(ex))

2
pbincli/cli.py

@ -47,7 +47,7 @@ def main():
## URL shortener ## URL shortener
send_parser.add_argument("-S", "--short", default=False, action="store_true", help="use URL shortener") send_parser.add_argument("-S", "--short", default=False, action="store_true", help="use URL shortener")
send_parser.add_argument("--short-api", default=argparse.SUPPRESS, action="store", send_parser.add_argument("--short-api", default=argparse.SUPPRESS, action="store",
choices=["tinyurl", "clckru", "isgd", "vgd", "cuttly", "yourls"], help="API used by shortener service") choices=["tinyurl", "clckru", "isgd", "vgd", "cuttly", "yourls", "custom"], help="API used by shortener service")
send_parser.add_argument("--short-url", default=argparse.SUPPRESS, help="URL of shortener service API") send_parser.add_argument("--short-url", default=argparse.SUPPRESS, help="URL of shortener service API")
send_parser.add_argument("--short-user", default=argparse.SUPPRESS, help="Shortener username") send_parser.add_argument("--short-user", default=argparse.SUPPRESS, help="Shortener username")
send_parser.add_argument("--short-pass", default=argparse.SUPPRESS, help="Shortener password") send_parser.add_argument("--short-pass", default=argparse.SUPPRESS, help="Shortener password")

Loading…
Cancel
Save