Fengqing Liu 323c2ac40d Disable automatic CI builds
- Comment out push and pull_request triggers
- Keep workflow_dispatch for manual runs only
- Prevents automatic builds on every push

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-17 20:04:23 +11:00
2025-10-17 20:04:23 +11:00
2025-08-27 17:19:32 +02:00
2024-01-30 17:16:29 +01:00
2024-12-31 21:05:35 +01:00

Twitch Drops Miner

Note: This is a fork of DevilXD/TwitchDropsMiner. See Acknowledgments for credits to the original author and contributors.

Disclaimer: This fork is heavily maintained and developed using AI-assisted coding (Claude Code). While functional, the codebase may reflect "vibe coding" patterns and AI-generated conventions. Use at your own discretion and always review changes before deploying.

This application allows you to AFK mine timed Twitch drops, without having to worry about switching channels when the one you were watching goes offline, claiming the drops, or even receiving the stream data itself. This helps you save on bandwidth and hassle.

How It Works:

Every several seconds, the application pretends to watch a particular stream by fetching stream metadata - this is enough to advance the drops. Note that this completely bypasses the need to download any actual stream video and sound. To keep the status (ONLINE or OFFLINE) of the channels up-to-date, there's a websocket connection established that receives events about streams going up or down, or updates regarding the current amount of viewers.

Features:

  • Stream-less drop mining - save on bandwidth.
  • Game priority and exclusion lists, allowing you to focus on mining what you want, in the order you want, and ignore what you don't want.
  • Sharded websocket connection, allowing for tracking up to 199 channels at the same time.
  • Automatic drop campaigns discovery based on linked accounts (requires you to do account linking yourself though).
  • Stream tags and drop campaign validation, to ensure you won't end up mining a stream that can't earn you the drop.
  • Automatic channel stream switching, when the one you were currently watching goes offline, as well as when a channel streaming a higher priority game goes online.
  • Login session is saved in a cookies file, so you don't need to login every time.
  • Mining is automatically started as new campaigns appear, and stopped when the last available drops have been mined.

Usage:

Quick Start with Docker (Recommended):

# Clone the repository
git clone https://github.com/rangermix/TwitchDropsMiner.git
cd TwitchDropsMiner

# Start with docker-compose
docker-compose up -d

# Access the web interface at http://localhost:8080

Running from Source:

# Install Python 3.10+ and dependencies
pip install -r requirements.txt

# Run the application
python main.py

# Access the web interface at http://localhost:8080

Using the Application:

  • Open the web interface in your browser at http://localhost:8080
  • Login/connect the miner to your Twitch account using the OAuth device code flow
  • After a successful login, the app will fetch all available campaigns and games you can mine drops for
  • Select and add games to the Priority List on the Settings tab, then press Reload to start processing
  • The miner will fetch applicable streams and start mining automatically
  • You can manually switch to a different channel as needed
  • Make sure to link your Twitch account to game accounts on the campaigns page

Screenshots:

The application features a modern web-based interface accessible from any browser on your network.

Notes:

Warning

Due to how Twitch handles the drop progression on their side, watching a stream in the browser (or by any other means) on the same account that is actively being used by the miner, will usually cause the miner to misbehave, reporting false progress and getting stuck mining the current drop.

Using the same account to watch other streams during mining is thus discouraged, in order to avoid any problems arising from it.

Caution

Persistent cookies will be stored in the cookies.jar file, from which the authorization (login) information will be restored on each subsequent run. Make sure to keep your cookies file safe, as the authorization information it stores can give another person access to your Twitch account, even without them knowing your password!

Important

Successfully logging into your Twitch account in the application may cause Twitch to send you a "New Login" notification email. This is normal - you can verify that it comes from your own IP address. The detected browser during the login will be "Chrome", as that's what the miner currently presents itself to the Twitch server.

Note

The time remaining timer always countdowns a single minute and then stops - it is then restarted only after the application redetermines the remaining time. This "redetermination" can happen at any time Twitch decides to report on the drop's progress, but not later than 20 seconds after the timer reaches zero. The seconds timer is only an approximation and does not represent nor affect actual mining speed. The time variations are due to Twitch sometimes not reporting drop progress at all, or reporting progress for the wrong drop - these cases have all been accounted for in the application though.

Note

The source code requires Python 3.10 or higher to run.

Docker Deployment:

The application is designed for Docker deployment, making it easy to run on any platform:

Using pre-built images (Recommended):

# Pull and run from GitHub Container Registry
docker pull ghcr.io/rangermix/twitchdropsminer:latest
docker run -d -p 8080:8080 -v $(pwd)/data:/app/data ghcr.io/rangermix/twitchdropsminer:latest

# Or use docker-compose with the pre-built image
# Create a docker-compose.yml file with:
# services:
#   twitch-drops-miner:
#     image: ghcr.io/rangermix/twitchdropsminer:latest
#     ...

Building locally:

# Build and run with docker-compose
docker-compose up -d

# Or build and run manually
docker build -t twitch-drops-miner .
docker run -d -p 8080:8080 -v $(pwd)/data:/app/data twitch-drops-miner

Important Docker notes:

  • All persistent data (cookies, settings, logs) is stored in the data/ directory
  • Login uses OAuth device code flow - you'll be given a code to enter at twitch.tv/activate
  • Browser notifications supported (requires permission)
  • Health checks and automatic restart included in docker-compose
  • Configure timezone with TZ environment variable
  • Pre-built images are automatically built from the master branch via GitHub Actions
  • Available tags: latest (stable), dev (latest development build)

Running from Source:

For development or customization:

# Install Python 3.10+
# Create virtual environment (recommended)
python -m venv env
source env/bin/activate  # On Windows: env\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Run the application
python main.py

Support This Fork

If you find this fork useful, please consider supporting my work:

Buy me a coffee

You can also support the original author @DevilXD at buymeacoffee.com/DevilXD or Patreon.

Project goals:

Twitch Drops Miner (TDM for short) has been designed with a couple of simple goals in mind:

What TDM is:

  • Twitch Drops focused - Automatic mining of timed Twitch drops
  • Easy to use - Simple web interface accessible from any browser
  • Reliable - Designed to run continuously with minimal attention needed
  • Efficient - Minimal interactions with Twitch, respecting their service
  • Docker-ready - Easy deployment on any platform or server

What TDM is NOT:

  • Mining channel points
  • Mining other platforms besides Twitch
  • Multi-account support
  • Mining unlinked campaigns
  • 100% guaranteed uptime (expect occasional errors)

Limitations:

  • Single account per instance
  • No automatic error recovery (monitor periodically)
  • No additional notification systems (email, webhook, etc.)
  • Campaigns must be linked to your Twitch account

This is a web-only application designed for Docker deployment and headless operation.

Acknowledgments:

This project is a fork of the excellent TwitchDropsMiner created by @DevilXD. Huge thanks to DevilXD for creating and maintaining this amazing tool, and to all the contributors who have helped improve it over time.

Original Project: DevilXD/TwitchDropsMiner Original Author: @DevilXD

Translation Credits:

@guihkx - For the CI script, CI maintenance, and everything related to Linux builds.
@kWAYTV - For the implementation of the dark mode theme.

@Bamboozul - For the entirety of the Arabic (العربية) translation.
@Suz1e - For the entirety of the Chinese (简体中文) translation and revisions.
@wwj010 - For the Chinese (简体中文) translation corrections and revisions.
@zhangminghao1989 - For the Chinese (简体中文) translation corrections and revisions.
@Ricky103403 - For the entirety of the Traditional Chinese (繁體中文) translation.
@LusTerCsI - For the Traditional Chinese (繁體中文) translation corrections and revisions.
@nwvh - For the entirety of the Czech (Čeština) translation.
@Kjerne - For the entirety of the Danish (Dansk) translation.
@roobini-gamer - For the entirety of the French (Français) translation.
@Calvineries - For the French (Français) translation revisions.
@ThisIsCyreX - For the entirety of the German (Deutsch) translation.
@Eriza-Z - For the entirety of the Indonesian translation.
@casungo - For the entirety of the Italian (Italiano) translation.
@ShimadaNanaki - For the entirety of the Japanese (日本語) translation.
@Patriot99 - For the Polish (Polski) translation and revisions (co-authored with @DevilXD).
@zarigata - For the entirety of the Portuguese (Português) translation.
@Sergo1217 - For the entirety of the Russian (Русский) translation.
@kilroy98 - For the Russian (Русский) translation corrections and revisions.
@Shofuu - For the entirety of the Spanish (Español) translation and revisions.
@alikdb - For the entirety of the Turkish (Türkçe) translation.
@Nollasko - For the entirety of the Ukrainian (Українська) translation and revisions.
@kilroy98 - For the Ukrainian (Українська) translation corrections and revisions.

Languages
Python 69.1%
JavaScript 20%
CSS 6.6%
HTML 3.9%
Dockerfile 0.4%