Pythonでpyshortenersを使用し短縮URLを生成する

Pythonでpyshortenersを使用し短縮URLを生成してみます。

なお、pyshortenersライブラリ・モジュールはPythonの標準ライブラリ・モジュールではありませんので、事前にインストールする必要があります。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■pyshortenersを使用し短縮URLを生成する

では、早速pyshortenersを使用し短縮URLを生成するスクリプトを書いていきます。

■コード

import pyshorteners

main_url = input("短縮URLにしたいURLを入力: ")

url_shortener = pyshorteners.Shortener()

short_url = url_shortener.tinyurl.short(main_url)

print(short_url)

インポートでpyshortenersモジュールを呼び出します。その後に、main_urlという変数を作成し、その中で、キーボードからの入力を取得し格納します。今回は短縮URLにしたいURLの情報を格納します。

次にurl_shortenerという変数を作成し、Shortenerを初期化し、格納します。

初期化後、short_urlという変数を作成し、main_url変数内の情報をAPIを利用し、短縮URLが生成されます。その後、格納します。

最後に、入力したURLを短縮URL化したものをprint関数で出力します。

■実行

このスクリプトを「generate_shortenedurl.py」という名前で保存し、コマンドプロンプトから実行してみます。

実行してみると、キーボードからの入力を取得するための表示があらわれます。今回は当サイト(https://laboratory.kazuuu.net/)のURLを入力し、Enterキーを押します。

Enterキーを押すと、短縮URLが生成され、出力されました。

なお、スクリプトを実行すると、稀に下記の「requests.exceptions.ReadTimeout: HTTPConnectionPool(host=’tinyurl.com’, port=80): Read timed out. (read timeout=2)」といったエラーが発生する場合がありますが、再度スクリプトを実行すると、短縮URLが生成されるようになります。

Traceback (most recent call last):
File “C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\urllib3\connectionpool.py”, line 384, in _make_request
six.raise_from(e, None)
File “<string>”, line 2, in raise_from
File “C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\urllib3\connectionpool.py”, line 380, in _make_request
httplib_response = conn.getresponse()
File “C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.2800.0_x64__qbz5n2kfra8p0\lib\http\client.py”, line 1344, in getresponse
response.begin()
File “C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.2800.0_x64__qbz5n2kfra8p0\lib\http\client.py”, line 307, in begin
version, status, reason = self._read_status()
File “C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.2800.0_x64__qbz5n2kfra8p0\lib\http\client.py”, line 268, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), “iso-8859-1”)
File “C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.2800.0_x64__qbz5n2kfra8p0\lib\socket.py”, line 669, in readinto
return self._sock.recv_into(b)
socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\requests\adapters.py”, line 439, in send
resp = conn.urlopen(
File “C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\urllib3\connectionpool.py”, line 637, in urlopen
retries = retries.increment(method, url, error=e, _pool=self,
File “C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\urllib3\util\retry.py”, line 368, in increment
raise six.reraise(type(error), error, _stacktrace)
File “C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\urllib3\packages\six.py”, line 686, in reraise
raise value
File “C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\urllib3\connectionpool.py”, line 597, in urlopen
httplib_response = self._make_request(conn, method, url,
File “C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\urllib3\connectionpool.py”, line 386, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File “C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\urllib3\connectionpool.py”, line 306, in _raise_timeout
raise ReadTimeoutError(self, url, “Read timed out. (read timeout=%s)” % timeout_value)
urllib3.exceptions.ReadTimeoutError: HTTPConnectionPool(host=’tinyurl.com’, port=80): Read timed out. (read timeout=2)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “C:\Users\user\generate_shortenedurl.py”, line 7, in <module>
short_url = url_shortener.tinyurl.short(main_url)
File “C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\pyshorteners\shorteners\tinyurl.py”, line 34, in short
response = self._get(self.api_url, params=dict(url=url))
File “C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\pyshorteners\base.py”, line 63, in _get
response = requests.get(
File “C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\requests\api.py”, line 75, in get
return request(‘get’, url, params=params, **kwargs)
File “C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\requests\api.py”, line 60, in request
return session.request(method=method, url=url, **kwargs)
File “C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\requests\sessions.py”, line 533, in request
resp = self.send(prep, **send_kwargs)
File “C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\requests\sessions.py”, line 646, in send
r = adapter.send(request, **kwargs)
File “C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\requests\adapters.py”, line 529, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPConnectionPool(host=’tinyurl.com’, port=80): Read timed out. (read timeout=2)

コメント

タイトルとURLをコピーしました