High-volume Bitly V4 URL shortener with memory-cache
Project description
bitlyshortener
bitlyshortener is an experimental Python 3.7 based high-volume Bitly V4 URL shortener with a memory-cache. It requires and uses one or more generic access tokens provided by Bitly which it uses semi-randomly. It is nevertheless limited by per-IP rate limits. As a disclaimer, this is an unofficial package and it has no association with Bitly.
Expanding a shortened URL and other Bitly operations are outside the scope of this package.
The following are the known rate limits per token:
- Per minute: 100 (presumably for status 200 or 201) [ref]
- Per hour: 1000 (presumably for status 200 or 201) [ref]
- Per month: 10000 (presumably for status 201 only) [ref] (requires login)
Links
- Code: https://github.com/impredicative/bitlyshortener/
- Release: https://pypi.org/project/bitlyshortener/
Usage
This package doesn't include any access token. To obtain one:
- Sign up for a new Bitly account.
An email address such as
YourGmailUsername+RandomSuffix@gmail.com
should work. - Verify the email address by clicking the link in the confirmation email. It can sometimes be necessary to have the confirmation email resent.
- In the account profile, navigate to Generic Access Token.
- Enter password and click Generate Token.
Python 3.7+ is required.
Any older version of Python will not work due to the use of
ThreadPoolExecutor
with an initializer.
To install the package, run:
pip install bitlyshortener
Usage examples:
from bitlyshortener import Shortener
tokens_pool = ['9fbe2864bb8872f5027c103321ff91be90aea687', '0cbe3864bc8872f5027c103321ff91be30aea787']
shortener = Shortener(tokens=tokens_pool, max_cache_size=8192)
urls = ['https://paperswithcode.com/sota', 'https://arxiv.org/', 'https://arxiv.org/list/cs.LG/recent']
shortener.shorten_urls(urls)
['https://j.mp/2TuIwfz', 'https://j.mp/2t8R7cu', 'https://j.mp/2GohbIt']
To obtain the fastest response, URLs must be shortened in a batch as in the example above.
A thread pool of up to 32 concurrent requesters can be used, but no more than up to five per randomized token.
For example, if two tokens are supplied, up to 2 * 5 = 10 concurrent workers are used.
If eight tokens are supplied, then not 8 * 5 = 40, but a max of 32 concurrent workers are used.
The max limit can, if really necessary, be increased by setting config.MAX_WORKERS
before initializing the shortener.
Returned short links use the j.mp
domain with HTTPS.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for bitlyshortener-0.0.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f361d5d802a9321db7529f4ea04d9c798857ebedff72156195716440c0b07558 |
|
MD5 | 8b45e597abfa5ea7c445c4d38e424122 |
|
BLAKE2b-256 | 710f8b5232aece5e1a29bae38d68dbb71e75c9e7f66c33efb8c470dcd5fee96c |