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
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
300d2aeb69fc339071d8ae0c77f4ceeafa4a7ccf01ea2094973a8c55293b8232
|
|
| MD5 |
b15e9c0d3b384c094e8a0e466678a140
|
|
| BLAKE2b-256 |
c8c0e1fdebedbe16158bb3da1257df785c05d75e7510a9f50599abc3920baefe
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2545455eff86168fdb676bc3c477591b6da2cdaa3edb07b864b8a8d524334e37
|
|
| MD5 |
bef1b67ff597b608b4388b6e37ce2b2e
|
|
| BLAKE2b-256 |
508b1e1051e9ab69a8b57b38a04bb4995931eefe8c59cba1351ec49764534f42
|