Skip to main content

BitTorrent seeding simulator for testing and development

Project description

DFakeSeeder screenshot

D' Fake Seeder

CI/CD PyPI Python License Release Downloads

A sophisticated Python GTK4 BitTorrent client that simulates seeding activity with advanced peer-to-peer networking capabilities, comprehensive settings management, multi-language support, and extensive automated testing.

About the Name

The name "D' Fake Seeder" is a playful nod to the Irish English accent. In Irish pronunciation, the "th" sound in "the" is often rendered as a hard "d" sound - so "the" becomes "de" or "d'". This linguistic quirk gives us "D' Fake Seeder" instead of "The Fake Seeder", celebrating the project's Irish heritage while describing exactly what it does: simulates (fakes) torrent seeding activity.

Features

Core Functionality

  • Multi-Torrent Support: Handle multiple torrents simultaneously with individual configuration
  • Protocol Support: Full HTTP and UDP tracker compatibility with BitTorrent protocol (BEP-003)
  • Peer-to-Peer Networking: Advanced P2P implementation with incoming/outgoing connection management
  • Real-time Monitoring: Live connection tracking and performance metrics

Advanced Features

  • System Tray Integration: Full tray application with D-Bus IPC for seamless desktop integration
  • Internationalization: 21 languages supported with runtime language switching
  • Desktop Integration: XDG-compliant with proper icon themes, desktop files, and GNOME Shell support
  • Settings Management: Comprehensive configuration with validation, profiles, and D-Bus sync
  • Performance Tracking: Built-in automatic timing and performance monitoring

User Interface

  • GTK4 Modern UI: Clean, responsive interface with modular component architecture
  • Multi-Tab Settings: Organized configuration categories (General, Connection, Peer Protocol, Advanced)
  • Real-time Translation: Dynamic language changes without application restart
  • Performance Tracking: Built-in timing and performance monitoring

DFakeSeeder screenshot

Installation & Usage

PyPI Installation (Recommended)

# Install from PyPI
pip install d-fake-seeder

# Run automated setup (checks dependencies, offers desktop integration)
dfs-setup
# This will
#  - Check for required system packages (GTK4, LibAdwaita, PyGObject)
#  - Show OS-specific installation commands if dependencies are missing
#  - Offer to install desktop integration (icons, menu entries)
#  - Display launch instructions

# Or skip setup and install system dependencies manually
# Fedora/RHEL
sudo dnf install gtk4 libadwaita python3-gobject

# Debian/Ubuntu
sudo apt install gir1.2-gtk-4.0 libadwaita-1-0 gir1.2-adw-1 python3-gi

# Launch the application
dfs                    # Short command
dfakeseeder           # Full command
dfs --with-tray       # Launch with system tray
dfs-tray              # Tray application only

# Launch from application menu (after desktop integration)
gtk-launch dfakeseeder
# Or search "D' Fake Seeder" in application menu

Development Setup

# Setup pipenv environment
make setup-venv

# Run with debug output (pipenv)
make run-debug-venv

# Run with Docker
make run-debug-docker

Package Installations

Debian/Ubuntu (.deb)

# Download and install
curl -sL $(curl -s https://api.github.com/repos/dmzoneill/dfakeseeder/releases/latest | grep browser_download_url | cut -d\" -f4 | grep deb) -o dfakeseeder.deb
sudo dpkg -i dfakeseeder.deb

# Everything is automatic
#  - All dependencies installed (GTK4, LibAdwaita, Python packages)
#  - Desktop integration (icons, menu entries, cache updates)
#  - Command-line launchers: dfs, dfakeseeder

# Launch from command line
dfs                    # Short command
dfakeseeder           # Full command

# Or launch from application menu
gtk-launch dfakeseeder
# Search "D' Fake Seeder" in application menu

# GNOME Shell users: Press Alt+F2, type 'r', Enter to restart shell

RHEL/Fedora (.rpm)

# Download and install
curl -sL $(curl -s https://api.github.com/repos/dmzoneill/dfakeseeder/releases/latest | grep browser_download_url | cut -d\" -f4 | grep rpm) -o dfakeseeder.rpm
sudo rpm -i dfakeseeder.rpm

# Everything is automatic
#  - All dependencies installed (GTK4, LibAdwaita, Python packages)
#  - Desktop integration (icons, menu entries, cache updates)
#  - Command-line launchers: dfs, dfakeseeder

# Launch from command line
dfs                    # Short command
dfakeseeder           # Full command

# Or launch from application menu
gtk-launch dfakeseeder
# Search "D' Fake Seeder" in application menu

# GNOME Shell users: Press Alt+F2, type 'r', Enter to restart shell

Docker

# Local build
make docker

# Docker Hub/GHCR
xhost +local:
docker run --rm --net=host --env="DISPLAY" --volume="$HOME/.Xauthority:/root/.Xauthority:rw" --volume="/tmp/.X11-unix:/tmp/.X11-unix" -it ghcr.io/dmzoneill/dfakeseeder

Development

Code Quality

  • Code Quality: Black, flake8, and isort formatting standards (max-line-length: 120)
  • Testing: Pytest framework with comprehensive unit and E2E test coverage
  • CI/CD: GitHub Actions with automated E2E testing across 12 OS configurations
  • Performance: Automatic timing and structured logging throughout
  • Dependency Management: Pipfile/Pipfile.lock (primary), setup.py for PyPI publishing

Testing Infrastructure

End-to-End Testing

Comprehensive E2E test suite with 140+ automated tests across all package formats:

# Run all E2E tests (RPM, PyPI, DEB)
make test-e2e-all

# Run specific package format tests
make test-e2e          # RPM packages (Fedora)
make test-e2e-pypi     # PyPI packages (Fedora + Ubuntu)
make test-e2e-deb      # DEB packages (Ubuntu + Debian)

Coverage:

  • RPM E2E: Fedora latest, 42, 41 (50 tests per version)
  • PyPI E2E: Fedora latest, 42, 41 + Ubuntu 22.04, 24.04 (43 tests per version)
  • DEB E2E: Ubuntu 22.04, 24.04 + Debian 12, 11 (52 tests per version)

Tests Include:

  • Package building and validation
  • Installation and dependency resolution
  • Desktop integration verification
  • Application launch in headless environment
  • Core component initialization
  • Configuration file creation
  • Wrapper script functionality
  • Uninstallation cleanup

GitHub Actions: All E2E tests run automatically on every push and PR with results visible in status checks.

Build Tools

# Setup development environment
make setup-venv          # Create pipenv environment
make required            # Install dependencies

# Code quality
make lint                # Run black, flake8, isort
make test-venv           # Run tests with pipenv

# UI development
make ui-build            # Compile UI from XML components
make icons               # Install application icons

# Package building
make deb                 # Build Debian package (full desktop integration)
make rpm                 # Build RPM package (full desktop integration)
make flatpak             # Build Flatpak package
make docker              # Build Docker image

# PyPI publishing
make pypi-build          # Build source distribution and wheel
make pypi-check          # Validate package quality
make pypi-test-upload    # Upload to TestPyPI
make pypi-upload         # Upload to production PyPI

# E2E Testing
make test-e2e-all        # Run all E2E tests (RPM + PyPI + DEB)
make test-e2e            # RPM E2E tests
make test-e2e-pypi       # PyPI E2E tests
make test-e2e-deb        # DEB E2E tests
make clean-e2e-deb       # Clean DEB test artifacts
make clean-e2e-pypi      # Clean PyPI test artifacts

Package Format Feature Parity

All three package formats (RPM, DEB, PyPI) provide the same installation experience:

Feature RPM DEB PyPI
Command-line launcher dfs / dfakeseeder dfs / dfakeseeder dfs / dfakeseeder
Desktop integration ✅ Automatic ✅ Automatic ✅ via dfs-setup
All dependencies ✅ Automatic ✅ Automatic ✅ Manual GTK4/LibAdwaita
System tray ✅ Included ✅ Included ✅ Included
Wrapper script /usr/bin/dfakeseeder /usr/bin/dfakeseeder ✅ Direct Python
Auto-updates ✅ via dnf/yum ✅ via apt ✅ via pip
E2E tested ✅ 3 Fedora versions ✅ 4 Ubuntu/Debian versions ✅ 5 OS versions

Architecture

  • MVC Pattern: Clean separation with Model, View, Controller
  • Component System: Modular UI components with GTK4
  • Signal-Based: GObject signals for loose coupling
  • D-Bus IPC: Main app and tray communicate via D-Bus for seamless integration
  • Internationalization: Runtime language switching with 21 languages
  • Performance: Automatic timing and structured logging with class context

Contributing

  • All pull requests welcome
  • Follow existing code style (black, flake8, isort)
  • Include tests for new functionality
  • Update documentation as needed

Configuration

File Locations

  • User Config: ~/.config/dfakeseeder/settings.json (auto-created from defaults)
  • Torrent Directory: ~/.config/dfakeseeder/torrents/
  • Default Config: d_fake_seeder/config/default.json (comprehensive defaults)

Settings Categories

  • Application: Auto-start, themes, language preferences
  • Connection: Network ports, proxy settings, connection limits
  • Peer Protocol: Timeout settings, keep-alive intervals
  • BitTorrent: DHT, PEX, announce intervals, user agents
  • Advanced: Logging, performance tuning, debug options

Desktop Integration

After PyPI installation, run desktop integration:

# Install desktop files, icons, and tray autostart
dfs-install-desktop

# This installs
# - Application icons (multiple sizes) to ~/.local/share/icons/
# - Desktop launcher to ~/.local/share/applications/
# - Updates icon and desktop caches
# - Clears GNOME Shell cache for immediate recognition

# GNOME Shell users: Restart GNOME Shell
# Press Alt+F2, type 'r', and press Enter

# Launch via desktop environment
gtk-launch dfakeseeder
# Or search "D' Fake Seeder" in application menu

# Uninstall desktop integration
dfs-uninstall-desktop

Supported Languages (21)

English, Spanish, French, German, Italian, Portuguese, Russian, Chinese, Japanese, Korean, Arabic, Hindi, Dutch, Swedish, Polish, Bengali, Persian, Irish, Indonesian, Turkish, Vietnamese

Runtime language switching without application restart.

Example Configuration

The application auto-creates ~/.config/dfakeseeder/settings.json with comprehensive defaults including:

  • Speed limits and announce intervals
  • Peer connection settings
  • UI customization options
  • Client identification strings
  • Protocol timeouts and networking
  • Internationalization preferences

Documentation

Links

License

MIT License - See LICENSE file for details

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

d_fake_seeder-1.0.14.tar.gz (1.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

d_fake_seeder-1.0.14-py3-none-any.whl (1.5 MB view details)

Uploaded Python 3

File details

Details for the file d_fake_seeder-1.0.14.tar.gz.

File metadata

  • Download URL: d_fake_seeder-1.0.14.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for d_fake_seeder-1.0.14.tar.gz
Algorithm Hash digest
SHA256 1a80cf192c7b51340ce5c0fd9b5b422e343214d16ab6db2088297870c0cd9d02
MD5 404aff565b1c499b4ba2b678ef538860
BLAKE2b-256 eb84cfecfca19da668ce77ce45d9ad630ee2b39a626d0785e91307bb5f4a0718

See more details on using hashes here.

File details

Details for the file d_fake_seeder-1.0.14-py3-none-any.whl.

File metadata

  • Download URL: d_fake_seeder-1.0.14-py3-none-any.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for d_fake_seeder-1.0.14-py3-none-any.whl
Algorithm Hash digest
SHA256 13473a7e8a7178b5f1bd6b4aba7005923bb5b2699c1ba286483cb17617840912
MD5 e416cc1b15f9f009115bcd64cfdea8fa
BLAKE2b-256 6194428c7778eb24d179a3f7ba7a3d64f2d889e6f9d84455f3eef8bb8d949959

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page