Skip to main content

Temporary file uploader with automatic fallback across multiple providers

Project description

temuploader

Stop losing files to dead upload links. One command, auto-fallback, always works.

What is this?

A CLI tool that uploads files and text to temporary hosting services. If the first provider is down, it tries the next one automatically. No API keys, no signup, no config.

Install

pip install temuploader

Or from source:

git clone https://github.com/kelvinzer0/temuploader
cd temuploader
pip install -e .

Usage

Upload a file:

temuploader myfile.txt

Upload a folder (auto-zips it):

temuploader ./my-folder

Upload text directly:

temuploader -t "Hello world!"

Pipe from stdin:

cat logs.txt | temuploader -

Get just the URL for scripting:

url=$(temuploader myfile.txt --download-url)

JSON output:

temuploader myfile.txt --json

How it works

When you upload something, temuploader picks the right provider based on file type and size. If that provider fails (timeout, rate limit, down), it automatically tries the next one. You always get a working link.

Trying tmpfiles.org...  failed (timeout)
Trying litterbox...     failed (rate limited)
Trying uguu.se...       success!
https://n.uguu.se/abc123.txt

Providers

10 providers, no API keys needed:

  • tmpfiles.org - 100MB, 60 min retention, fast and reliable
  • litterbox - 100MB, 24h to 1 week retention (configurable with --time)
  • uguu.se - 100MB, 48h retention, clean API
  • catbox.moe - 200MB, permanent hosting
  • gofile.io - 500MB, 10 day retention, biggest size limit
  • filebin.net - 100MB, bin system, no signup
  • paste.rs - 1MB, text only, simplest API
  • del.dog - 1MB, text only, permanent pastes
  • rentry.co - 1MB, text only, markdown support
  • termbin.com - 1MB, text only, netcat-based

Text files use paste services. Binary files use file hosting providers. Both fallback automatically.

Options

-p, --providers    Pick specific providers to try
--no-fallback      Stop after the first provider fails
--json             Output as JSON
--download-url     Output only the download URL
-v, --verbose      Show what's happening
-l, --list         List all providers and their limits
--time             Retention time for litterbox (24h/72h/1w)

Python API

from temuploader import upload, upload_text, quick_share

# Upload a file
result = upload("data.csv")
print(result.download_url)

# Upload a folder (auto-zipped)
result = upload("./my-folder")
print(result.download_url)

# Upload text
result = upload_text("emergency paste!")
print(result.download_url)

# One-liner
url = quick_share("just give me a url")

Why not just use X?

Every temp upload service dies eventually. transfer.sh, 0x0.st, file.io... they all go down, get rate limited, or block your IP. Instead of memorizing which service works this week, use one tool that tries them all.

Contributing

Add a new provider: create a class in providers.py that extends BaseProvider. That's it.

License

MIT

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

temuploader-0.2.0.tar.gz (9.2 kB view details)

Uploaded Source

Built Distribution

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

temuploader-0.2.0-py3-none-any.whl (10.3 kB view details)

Uploaded Python 3

File details

Details for the file temuploader-0.2.0.tar.gz.

File metadata

  • Download URL: temuploader-0.2.0.tar.gz
  • Upload date:
  • Size: 9.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for temuploader-0.2.0.tar.gz
Algorithm Hash digest
SHA256 300d2aeb69fc339071d8ae0c77f4ceeafa4a7ccf01ea2094973a8c55293b8232
MD5 b15e9c0d3b384c094e8a0e466678a140
BLAKE2b-256 c8c0e1fdebedbe16158bb3da1257df785c05d75e7510a9f50599abc3920baefe

See more details on using hashes here.

File details

Details for the file temuploader-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: temuploader-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 10.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for temuploader-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2545455eff86168fdb676bc3c477591b6da2cdaa3edb07b864b8a8d524334e37
MD5 bef1b67ff597b608b4388b6e37ce2b2e
BLAKE2b-256 508b1e1051e9ab69a8b57b38a04bb4995931eefe8c59cba1351ec49764534f42

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