bulk blocker for tumblr
  • Python 92.3%
  • HTML 6.1%
  • Shell 0.7%
  • CSS 0.7%
  • Batchfile 0.2%
Find a file
lavinia7 67b50c604d
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
Enhance queue management and settings UI
- Added functionality to remove queued users based on search criteria in the queue index template.
- Introduced a new input field for setting the sync API reserve in the settings template.
- Improved the restore from backup process by adding a preview step to review backup contents before restoration.
- Implemented a cancel option for staged restores to discard uploads.
- Updated the import blog command to indicate it is experimental and provide warnings about its testing status.
- Added tests to ensure proper functionality of new features, including backup previews and sync budget management.
- Introduced new tests to validate the behavior of the application under long-running conditions and ensure process log retention.
- Enhanced the whitelist manager to handle large follow lists by chunking queries to avoid SQLite parameter limits.
- Improved the handling of API budget during sync operations to prevent starvation of fetching and blocking processes.
2026-08-05 07:51:31 +09:00
app Enhance queue management and settings UI 2026-08-05 07:51:31 +09:00
scripts feat: Implement shared OAuth consumer key management for API usage tracking and add script to cache Tumblr API docs 2026-07-28 21:31:47 +09:00
tests Enhance queue management and settings UI 2026-08-05 07:51:31 +09:00
.gitignore feat: Implement shared OAuth consumer key management for API usage tracking and add script to cache Tumblr API docs 2026-07-28 21:31:47 +09:00
.woodpecker.yml turns out the actual ci fix was server side 2026-07-29 01:58:31 +09:00
blocklist_utils.py adding export func 2025-07-08 09:21:34 +09:00
build.bat feat: Improve template and log path resolution for frozen builds, update build scripts, and refine requirements 2026-06-03 12:36:31 +09:00
build.sh feat: Improve template and log path resolution for frozen builds, update build scripts, and refine requirements 2026-06-03 12:36:31 +09:00
FAQ.md feat: Add multi-blog support documentation and tests for blog management features 2025-12-11 10:14:17 +09:00
install.sh rm deprecated macos 2026-01-01 12:44:27 +09:00
launch-ui.bat feat: Enhance CLI to launch web UI by default and add launch scripts for Windows and macOS/Linux 2026-06-03 02:09:42 +09:00
launch-ui.sh feat: Enhance CLI to launch web UI by default and add launch scripts for Windows and macOS/Linux 2026-06-03 02:09:42 +09:00
pytest.ini refactor for new ver 2025-11-29 09:19:27 +09:00
README.md Enhance queue management and settings UI 2026-08-05 07:51:31 +09:00
RELEASING.md Enhance queue management and settings UI 2026-08-05 07:51:31 +09:00
requirements.txt feat: Improve template and log path resolution for frozen builds, update build scripts, and refine requirements 2026-06-03 12:36:31 +09:00
requirements_dev.txt feat: Improve template and log path resolution for frozen builds, update build scripts, and refine requirements 2026-06-03 12:36:31 +09:00
runtime_hook_encoding.py feat: Update CI configuration and runtime hooks for improved compatibility and module preloading 2025-12-11 10:45:34 +09:00
test_installation.py Enhance Tumblockr with import progress tracking and utility functions 2025-07-06 21:53:50 +09:00
tumblockr.py Enhance queue management and settings UI 2026-08-05 07:51:31 +09:00
tumblockr_v2.spec feat: Improve template and log path resolution for frozen builds, update build scripts, and refine requirements 2026-06-03 12:36:31 +09:00

tumblockr

Automatically block every Tumblr account that has liked posts you specify. Useful for moderating large fandom posts, organizing pre-emptive blocks of accounts that engage with content you want to avoid, or just keeping your dashboard clean.

Get it

Grab the latest binary for your platform from the releases page and double-click it.

If you're running from source instead:

pip install -r requirements.txt
python tumblockr.py

(or use the included launch-ui.bat / launch-ui.sh helpers.)

The first launch opens a browser-based setup wizard that walks you through registering a Tumblr OAuth app, pasting in your credentials, authorizing your blog, and adding your first post to monitor.

Two ways to use it

  • Web UItumblockr ui. Single-user, runs locally on 127.0.0.1:5000 (no auth, no network exposure unless you opt in with --bind 0.0.0.0). Everything the CLI does is exposed here.
  • CLItumblockr <command>. Run tumblockr --help for the full list. Both interfaces share the same database and run the same backend code, so you can mix and match freely.

Features

Monitoring & blocking

  • Watch one or more posts per blog; every account that likes a watched post gets queued for blocking.
  • Background scheduler runs at user-configurable intervals (defaults: fetch likers every 60 min, drain queue every 15 min).
  • Per-blog rate-limit handling with persistent state — if Tumblr asks you to back off, only the affected blog pauses.
  • Idempotency guard: users already blocked on a blog never re-hit the API.
  • Post identifiers accept any of: blog|post_id, blog.tumblr.com/post/id, tumblr.com/blog/id, or just blog/id — paste straight from your address bar.

Multi-blog support

  • Manage multiple blogs you own from one install. Each blog has its own queue, blocked list, monitored posts, and OAuth tokens.

Whitelist

  • Per-blog do-not-block list. Optional auto-populate from blogs you follow.
  • Bulk import via paste or file.

Importing

  • Queue usernames in bulk from a text file (one per line, or comma/space separated).
  • Copy a block list from another blog you own (experimental - it needs a second Tumblr account to exercise, so it has seen much less testing; imports only ever fill the queue, which you can clear).

Sync

  • Pull your existing Tumblr block list into the local DB (so the UI's "blocked" view matches what Tumblr actually has).
  • Resumable: a sync interrupted by rate-limiting picks up where it left off.
  • Detects external unblocks: if you unblock someone via Tumblr's web UI, the next full sync prunes the local record.

Backup & restore

  • Export everything (config, blogs, queue, blocked users) to a single JSON file.
  • OAuth tokens, when included, are encrypted with a passphrase you supply (PBKDF2 + Fernet) so the backup file is portable between machines.
  • Restore on a fresh install with the same passphrase.
  • Uploading a backup shows you what is inside it (blogs, blocked/queued counts, export date, whether tokens are included) before anything is written, so a wrong pick out of a folder of timestamped files is a cancel rather than a merge.

Security

  • OAuth tokens encrypted at rest. Encryption key is stored in your OS credential store (Windows Credential Manager / macOS Keychain / Linux Secret Service) when available, with an automatic fallback for headless setups.
  • 401 responses trigger a token refresh transparently; concurrent refreshes are serialized so you don't burn your refresh-token quota.

Observability

  • Live log tail on the dashboard so you can see what background jobs are doing without opening a terminal.
  • Dashboard counts (queue, blocked, monitored posts, scheduler timings) refresh themselves — no manual reload.
  • Rate-limit meter tracking both kinds of Tumblr limit: the hourly/daily budget per consumer key (read from Tumblr's own X-Ratelimit-* headers when it sends them), and per-endpoint usage, which Tumblr caps but never reports — so that half is counted locally and annotated with wherever a 429 actually landed.
  • Manual triggers for fetch / block / sync from the dashboard, with status pills that auto-poll until the job completes.

Help

  • CLI help: tumblockr --help, or tumblockr <command> --help for any specific command.
  • Logs live in your data directory (~/.tumblockr/ on a fresh install, or data/ if running from a source checkout that already has one).