Python gtk fake seeder


License
Apache-2.0
Install
pip install d-fake-seeder==0.0.36

Documentation

DFakeSeeder screenshot

D' Fake Seeder

  • Developed on Fedora 40 - Implications for gobject versioing
  • This is a Python GTK4 app very much under active development
  • Supports multiple torrents
  • Supporter HTTp/UDP trackers
  • Based off of deluge, hense "D' Fake Seeder", but also a colloquialism for 'the'.

DFakeSeeder screenshot

How to run

  • Development or run locally
make run-debug-docker
  • Pypi
pip3 install dfakeseeder
dfakeseeder
  • Docker build local
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 feeditout/dfakeseeder

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
  • Debian based deb package
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

gtk-launch /usr/share/applications/dfakeseeder.desktop
  • Redhat based rpm package
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.deb

gtk-launch /usr/share/applications/dfakeseeder.desktop

Todo

  • loads of stuff, deb, rpms, pypi, docker build
  • need to fix requiremnts.txt/piplock and convert the solution to venv.
  • fix a chunk of small bugs and finish some of the toolbar and other options.
  • Udp
  • Better user feedback
  • All PR's welcome

Typical setup

The application copies a config file to

~/.config/dfakeseeder/settings.json

It will looks something like this

{
  "upload_speed": 50,
  "download_speed": 500,
  "total_upload_speed": 50,
  "total_download_speed": 500,
  "announce_interval": 1800,
  "torrents": {},
  "http_headers": {
    "Accept-Encoding": "gzip",
    "User-Agent": "Deluge/2.0.3 libtorrent/2.0.5.0"
  },
  "agents": [
    "Deluge/2.0.3 libtorrent/2.0.5.0,-DE2003-",
    "qBittorrent/4.3.1,-qB4310-",
    "Transmission/3.00,-TR3000-",
    "uTorrent/3.5.5,-UT3550-",
    "Vuze/5.7.6.0,-AZ5760-",
    "BitTorrent/7.10.5,-BT7105-",
    "rTorrent/0.9.6,-RT0960-"
  ],
  "agent": 0,
  "proxies": {
    "http": "",
    "https": ""
  },
  "columns": "",
  "concurrent_http_connections": 2,
  "concurrent_peer_connections": 10,
  "cellrenderers": {
    "progress": "Gtk.ProgressBar"
  },
  "textrenderers": {
    "total_uploaded": "humanbytes",
    "total_downloaded": "humanbytes",
    "session_uploaded": "humanbytes",
    "session_downloaded": "humanbytes",
    "total_size": "humanbytes",
    "announce_interval": "convert_seconds_to_hours_mins_seconds",
    "next_update": "convert_seconds_to_hours_mins_seconds",
    "upload_speed": "add_kb",
    "download_speed": "add_kb",
    "threshold": "add_percent"
  },
  "threshold": 30,
  "tickspeed": 9,
  "editwidgets": {
    "active": "Gtk.Switch",
    "announce_interval": "Gtk.SpinButton",
    "download_speed": "Gtk.SpinButton",
    "next_update": "Gtk.SpinButton",
    "session_downloaded": "Gtk.SpinButton",
    "session_uploaded": "Gtk.SpinButton",
    "small_torrent_limit": "Gtk.SpinButton",
    "threshold": "Gtk.SpinButton",
    "total_downloaded": "Gtk.SpinButton",
    "total_uploaded": "Gtk.SpinButton",
    "upload_speed": "Gtk.SpinButton"
  },
  "issues_page": "https://github.com/dmzoneill/DFakeSeeder/issues",
  "website": "https://github.com/dmzoneill/DFakeSeeder/",
  "author": "David O Neill",
  "copyright": "Copyright {year}",
  "version": "1.0",
  "logo": "images/dfakeseeder.png"
}