- Break early when finding target post instead of list()
- Limit poll_loop and initial_seed to max 40 posts per fetch
- Changed replies=True to replies=False for fewer API calls
The list() call was consuming the entire generator, triggering
Cloudflare's ~40 post rate limit.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
PyPI version (0.2.4) is outdated. Recent commits (Jan 21, 2026)
updated the API URL which may fix Cloudflare issues.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
truthbrush uses curl_cffi with impersonate="chrome136", so the user
agent must match Chrome to avoid Cloudflare fingerprint mismatch detection.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Handle None returns from pull_statuses gracefully
- Add specific error messages for rate limiting scenarios
- Skip None posts in iteration to avoid TypeErrors
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
truthbrush requires TRUTHSOCIAL_USERNAME and TRUTHSOCIAL_PASSWORD
environment variables for API access.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
truthbrush doesn't have pull_status method, so fetch user's
statuses and search for the matching post ID instead.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add core modules: database (SQLite), media (ffmpeg), discord (webhook), poller (truthbrush), server (FastAPI)
- Support video transcoding to H.264/AAC with automatic size management
- Handle message splitting for Discord limits (2000 chars, 10 attachments)
- Include interactive buttons (Delete, View Raw, Original Post)
- Add Dockerfile with ffmpeg and entrypoint script
- Add Gitea Actions workflow for CI/CD
- Configure code style tools (black, ruff, mypy)
- Include basic unit tests
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>