Skip to main content

A simple CLI URL shortener using s.lain.la API, with optional clipboard copy.

Project description

lain.la-link-shortener

A simple CLI URL shortener using s.lain.la API, with optional clipboard copy.

Installation

Via PyPI (Recommended)

You have the option to choose between the standard version (lain-shorten) or the desktop version (lain-shorten[clipboard]), which adds clipboard support for auto-copying links.

[!NOTE] For brevity, the examples below use the desktop version.

With pip (Basic)

pip install "lain-shorten[clipboard]"

With pipx (Isolated)

pipx install "lain-shorten[clipboard]"

With uv (Best)

The most efficient way to install or run the shortener.

# Permanent isolated installation
uv tool install "lain-shorten[clipboard]"

# Run once without installing
uvx --with "lain-shorten[clipboard]" lain-shorten <url1> <url2> <url3>

# Run in scripts or ad-hoc environments
uv run --with "lain-shorten[clipboard]" lain-shorten <url1> <url2> <url3>

From Source (Development)

# Clone the repository and navigate to it
git clone git@github.com:NecRaul/lain-shorten.git
cd lain-shorten

# Install environment and all development dependencies (mandatory and optional)
uv sync --dev

# Install pre-commit hook
uv run pre-commit install

# Optional: Run all linters and type checkers manually
uv run pre-commit run --all-files

# Run the local version
uv run lain-shorten <url1> <url2> <url3>

# Run tests
uv run pytest tests

Usage

Simply provide a URL, and the tool will automatically handle protocol validation and formatting.

Use --open to open each generated short URL in your default browser right after shortening. This makes it easy to verify each format resolves as expected in a real browser session.

# Shorten a URL
lain-shorten https://kuroneko.dev

# Protocol-less (automatically prepends http://)
lain-shorten kuroneko.dev

# irc
lain-shorten irc://irc.libera.chat/#archlinux

# ssh
lain-shorten ssh://necraul@kuroneko.dev

# mailto
lain-shorten mailto:necraul@kuroneko.dev

# sms
lain-shorten sms:+15551234567

# magnet torrent
lain-shorten "magnet:?xt=urn:btih:0123456789abcdef0123456789abcdef01234567&dn=Example"

# Open shortened URLs using the default browser
lain-shorten --open \
http://kuroneko.dev \
ircs://irc.libera.chat:6697/#archlinux \
xmpp:necraul@kuroneko.dev \
tel:+15551234567

# Display help and version
lain-upload -h
lain-upload -v

Supported Schemes

  • http:// and https:// links
  • protocol-less domains (automatically normalized to http://)
  • irc:// and ircs:// links
  • ssh:// links
  • mailto:// and xmpp:// links
  • sms:// and tel:// links
  • magnet: torrent links

Dependencies

  • requests: send the API request for shortening.

Optional

  • pyperclip: copy the shortened URLs to the clipboard.

How it works

The s.lain.la service allows shortening URLs via a POST request.

This tool automates the process to avoid typing long curl strings.

The Manual Way

curl -d "url=https://kuroneko.dev" https://s.lain.la

The lain-shorten way

  • Batch Processing: Shorten multiple URLs in a single command execution, saving time over individual manual requests.
  • Validation: Uses urllib to ensure the URL is formatted correctly.
  • API Request: Sends the POST request via requests.
  • Normalization: Automatically adds http:// if missing.
  • Clipboard (Optional): If pyperclip is installed, the result is instantly copied to your clipboard.

Special thanks

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lain_shorten-1.17.tar.gz (14.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lain_shorten-1.17-py3-none-any.whl (15.4 kB view details)

Uploaded Python 3

File details

Details for the file lain_shorten-1.17.tar.gz.

File metadata

  • Download URL: lain_shorten-1.17.tar.gz
  • Upload date:
  • Size: 14.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for lain_shorten-1.17.tar.gz
Algorithm Hash digest
SHA256 f8d377758f3b4130f9a57eeedbe1d97436d7d561cf2f450ba233d235e2a3a50d
MD5 8d8fdacb052bbfdf192cc7d9d5e03ac3
BLAKE2b-256 73b89f7e891a76f1e506ba8c8f81a07ce40d887d7581f4f28b64f7841fe443de

See more details on using hashes here.

File details

Details for the file lain_shorten-1.17-py3-none-any.whl.

File metadata

  • Download URL: lain_shorten-1.17-py3-none-any.whl
  • Upload date:
  • Size: 15.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for lain_shorten-1.17-py3-none-any.whl
Algorithm Hash digest
SHA256 4f8947a8a24acfd5ff27de865d70f2a64bc3369a499776981face5a1b4afe8a6
MD5 3e98a269c997e5747320802eeb445531
BLAKE2b-256 324afc49eecea1c3b29107a54223b296f8a9a74b58ab9ae4d06e51ee5e81d1c0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page