Update README.md

This commit is contained in:
Jason Cosper 2025-04-23 22:44:04 +00:00
parent d5688875f0
commit 5e04030b19

162
README.md
View File

@ -1,3 +1,161 @@
# hushup
# 🤫 HushUp - Tame Your Mastodon Timeline
HushUp helps you temporarily mute the most active follows, bringing a little calm back to your timeline.
Ever spend some time touching grass only to come back to a busy afternoon on the timeline? Wish you could just hit a temporary mute button on accounts having a *really* chatty day without unfollowing them and missing their future gems?
HushUp is a simple Python script designed to help you manage timeline noise by identifying and temporarily muting overly active accounts, based on your preferences.
## Features
* **Intelligent Activity Detection:** Automatically identifies accounts posting a little too much.
* **Temporary Muting:** Silences noisy accounts for a configurable duration, bringing them back automatically.
* **Easy Setup:** Quick first-time registration with your Mastodon instance.
* **Customizable:** Fine-tune mute duration, activity thresholds, and API behavior via environment variables.
* **API Friendly:** Designed with Mastodon API rate limits in mind, with sensitive defaults and automatic backoff.
## Get Started
As long as Python doesn't freak you out, getting HushUp running is a breeze.
### Installation (conda recommended)
Using `conda` helps keep your project dependencies tidy.
```bash
# Create a dedicated conda environment
conda create -n hushup python=3.10
# Activate your new environment
conda activate hushup
# Install HushUp's dependencies
pip install -r requirements.txt
```
### First-Time Setup & Authorization
You'll need to authorize HushUp to access your Mastodon account. This step only needs to be done once.
```bash
# Run the initial setup process
python hushup.py --register
```
Follow the prompts:
1. Enter your Mastodon instance URL (e.g., `https://mastodon.social`).
2. HushUp will provide you with a URL. Open this in your browser, authorize the application, and you'll get an authorization code.
3. Paste the authorization code back into your terminal when prompted.
HushUp will save your credentials securely for future use.
### Configuration (`.env` file)
After successfully registering, HushUp will create a `.env` file in the project directory. This is where you can customize its behavior. Open this file with your favorite text editor and tweak the settings to your liking:
```ini
# API Performance Settings - Adjust these if you encounter rate limits often or need faster processing
HUSHUP_MAX_REQUESTS=40          # Maximum number of API requests to fetch timeline data per run (default: 20)
HUSHUP_ITEMS_PER_REQUEST=100    # How many items (toots) to request in each API call (default: 80)
HUSHUP_RATE_LIMIT_DELAY=1.0     # Short delay between API calls to stay under limits (default: 0.5)
# Behavior Settings - Control how HushUp decides who to mute and for how long
HUSHUP_MUTE_DURATION=3600       # How long to mute identified accounts, in seconds (default: 21600 = 6 hours)
HUSHUP_MIN_ACTIVITIES=20        # The activity threshold: mute accounts that have posted *at least* this many times in the analyzed period (default: 10)
```
*Remember to save the `.env` file after making changes.*
## Running HushUp
Once set up and configured, running HushUp is straightforward:
```bash
# Analyze your timeline and apply mutes based on your .env settings
python hushup.py
```
You can also override the activity threshold directly from the command line for a specific run:
```bash
# Analyze and mute accounts with at least 20 activities
python hushup.py --min_activities 20
```
The mute duration is controlled by the `HUSHUP_MUTE_DURATION` setting in your `.env` file. It's best to stick with one of Mastodon's default mute values:
* 5 minutes (300)
* 30 minutes (1800)
* 1 hour (3600)
* 6 hours (21600)
* 1 day (86400)
* 3 days (259200)
* 7 days (604800)
## Advanced Usage
### Re-registering / Clearing Credentials
If you need to connect to a different instance or encounter authorization issues, you can force a fresh registration:
```bash
# Clear existing credentials and start the registration process over
python hushup.py --clear --register
```
### Resetting Configuration
To revert your settings back to the original defaults and go through registration again:
```bash
# Remove the generated config and credential files
rm .env clientcred.secret
# Run the registration process, which will also create a new .env with defaults
python hushup.py --register
```
## Safety & API Rate Limits
HushUp is designed to be a good Fediverse citizen. The default settings are conservative in order to minimize the risk of hitting API rate limits on your Mastodon instance:
* Defaults limit analysis to around 1,600 toots per run (20 requests × 80 items).
* A small delay is added between API calls (default 0.5 seconds).
* HushUp includes automatic rate limit detection and will pause if the API tells it to slow down.
**Important:** Most Mastodon instances have a rate limit of around 300 requests every 5 minutes. While HushUp tries its best, adjusting `HUSHUP_MAX_REQUESTS`, `HUSHUP_ITEMS_PER_REQUEST`, and `HUSHUP_RATE_LIMIT_DELAY` should be done carefully based on your instance's specific limits and your usage frequency.
## Troubleshooting
* **Authorization Errors:** If you see errors related to credentials or authorization, try clearing them and re-registering:
```bash
python hushup.py --clear --register
```
* **Rate Limit Warnings:**
```text
WARNING: Rate limited. Waiting 30 seconds...
```
This means HushUp hit the API limit. The script will automatically wait and retry. If you see this frequently, consider reducing the `HUSHUP_ITEMS_PER_REQUEST` or `HUSHUP_MAX_REQUESTS` in your `.env` file.
* **Missing Dependencies:** If you get import errors, ensure you've installed the requirements:
```bash
pip install -r requirements.txt
```
## Uninstalling
To remove HushUp and its environment:
```bash
# Deactivate the conda environment
conda deactivate
# Remove the conda environment
conda env remove -n hushup
# Remove configuration and credential files
rm -rf .env clientcred.secret
```
## License
This project is licensed under the MIT License.
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)