Metadata-Version: 2.1
Name: dagdshort
Version: 0.1.2
Summary: Multithreaded concurrent da.gd URL shortener with in-memory cache
Home-page: https://github.com/impredicative/dagdshort/
Author: Ouroboros Chrysopoeia
Author-email: impredicative@users.nomail.github.com
Keywords: da.gd url shortener
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE

# dagdshort
**dagdshort** is a Python based multithreaded URL shortener with a memory-cache. It uses the [da.gd](https://da.gd/) service.

As a disclaimer, this is an unofficial package and it has no association with da.gd. If you use this package extensively, making a financial donation to da.gd is encouraged.

Other operations are outside the scope of this package.

[![cicd badge](https://github.com/impredicative/dagdshort/workflows/cicd/badge.svg?branch=master)](https://github.com/impredicative/dagdshort/actions?query=workflow%3Acicd+branch%3Amaster)

## Links
| Caption   | Link                                                |
|-----------|-----------------------------------------------------|
| Repo      | https://github.com/impredicative/dagdshort/         |
| Changelog | https://github.com/impredicative/dagdshort/releases |
| Package   | https://pypi.org/project/dagdshort/                 |

## Requirements

### Python
Python ≥3.9 is required. An older version of Python will not work.

## Usage
To install the package, run:

    $ pip install dagdshort

Usage example:
```python
>>> import dagdshort

# Setup
>>> shortener = dagdshort.Shortener(user_agent_suffix='<YourGitUsername>/<YourGitRepoName>', max_cache_size=256)

# Shorten
>>> long_urls = ['https://github.com/impredicative/dagdshort/', 'https://pypi.org/project/dagdshort/']
>>> shortener.shorten_urls(long_urls)
{'https://github.com/impredicative/dagdshort/': 'https://da.gd/W9s06',
 'https://pypi.org/project/dagdshort/': 'https://da.gd/KtGTB'}

# Show cache info
>>> shortener.cache_info
{'Shortener._shorten_url': CacheInfo(hits=0, misses=2, maxsize=256, currsize=2)}
```

To obtain the fastest response, URLs must be shortened together in a batch as in the examples above.
Up to 8 concurrent workers are automatically used. The max limit can, if really necessary, be changed by setting `config.MAX_WORKERS` before initializing the shortener.
