Skip to main content

Small program that simplifies common chores on multiple torrents (currently only supports Transmission).

Project description

Transmission Lever

Small program that simplifies common chores on torrents by wrapping the RPC. This program is not meant to be a manager by itself, only a lever for others to write their own automatized tools.

Installation

pip install transmission-lever

Configuration file

Running tlever on the same machine as the torrent program will match the default credentials, if that is not the case please copy the example file from the repository under one of the following paths:

1. ~/.config/transmission-lever/config.json
2. /etc/xdg/transmission-lever/config.json
3. ~/.transmission-lever/config.json
4. /etc/transmission-lever/config.json

They will be checked in that order.

CLI Usage

Categories

To organize torrents in folders the same way as clients like qBittorrent, a label-based system marks the torrents and moves them to the location.

All paths are relative to the Downloads directory, this is read from the transmission configuration file.

For example, to move <torrent-hash> into the movies category.

tlever category add movies <torrent-hash>

This will add the label @movies to the torrent and move its data to:

Downloads/
└── movies
    └── torrent-name

To undo the action:

tlever category remove movies <torrent-hash>

This will remove the label @movies to the torrent and move its data to:

Downloads/
└── torrent-name

This command does not clean up empty directories, this is because the program is using the RPC to move torrent data and it does not have permissions over the filesystem in all use cases.

Hooking the command find /path/to/Downloads -type d -empty -delete to a script triggered by added|done|done_seeding of a torrent does the trick.

If labels get desync from the torrent directory, you can enforce the category label directory:

tlever enforce category

Tags

To separate common labels from category labels, a tag with a prefix is used.

For example, to tag <torrent-hash> with best-of-the-year:

tlever tag add best-of-the-year <torrent-hash>

This will add the label #best-of-the-year to the torrent.

To undo the action:

tlever tag remove best-of-the-year <torrent-hash>

This will remove the label #best-of-the-year to the torrent.

This command is not equivalent to tier label ... as it is always prefixed.

Tiers

To set upload speed throttling based on ratio, this is based on qbitseedmgr.

To start managing torrents:

tlever tier set

To stop managing torrents:

tlever tier unset

To resume paused torrents:

tlever tier activate

To keep the tiers updated and active:

tlever enforce tier

The port of not-popular is a WIP.

Clogs

When torrents surpass the last tier they are left unmanaged and if not configured correctly they can start hogging the bandwidth for themselves.

This commands fixes their upload limit to 50KiBps regardless their ratio or longevity.

This is an experimental feature and many values are currently hardcoded.

To set the clog:

tlever clog set

To unset the clog:

tlever clog unset

TUI

Basic terminal interface to show live a torrent stats.

This is an experimental feature that needs further testing.

For example, given the torrent <torrent-hash>:

tlever tui show <torrent-hash>

Labels

To manage labels without prefixes, useful to fix torrents that have invalid categories or tags because of a change in their prefix.

For example, given the prefixes @ and # for categories and tags respectively, it's desired to remove the invalid tag %monthly-release from <torrent-hash>:

tlever label remove %monthly-release <torrent-hash>

To add an arbitrary label:

tlever label add custom-label <torrent-hash>

Module Usage

Overview

The functions are split into three namespaces:

  1. core: direct calls to RPC
  2. extra: extended functionality (i.e. categories)
  3. community: extended functionality added from user's PR

The goal is to have a friendly wrapper with proper docstrings that is modular and extendable.

If a PR use case is generic enough it will be added to extra.

How to use?

The main file tlever.py that handles the CLI it's only a series of if/else statements around functions.

To build a custom program you only need to call this functions inside your program, making the respective module imports.

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

transmission_lever-0.1.1.tar.gz (21.5 kB view details)

Uploaded Source

Built Distribution

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

transmission_lever-0.1.1-py3-none-any.whl (26.5 kB view details)

Uploaded Python 3

File details

Details for the file transmission_lever-0.1.1.tar.gz.

File metadata

  • Download URL: transmission_lever-0.1.1.tar.gz
  • Upload date:
  • Size: 21.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.7

File hashes

Hashes for transmission_lever-0.1.1.tar.gz
Algorithm Hash digest
SHA256 b16b1821364f630e503a26cdc3c75450b130e713e98be330cfaad5c81bed8c0e
MD5 e88c21ee41cfc2f8731605be678f2644
BLAKE2b-256 9b1455579d9c048a5e5013439f53d4e0ea0f313ace41204f90109233babeda4e

See more details on using hashes here.

File details

Details for the file transmission_lever-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for transmission_lever-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f822a1272cac647202edcdb22f07baab5f0562a2f76bfffc6de6f64c27ea9ea0
MD5 f63d7badee865cad944567f83f6a2f24
BLAKE2b-256 60ccdfb2f61bba4ce34524b65bfc073093e78061e2870e9081114e140b547a12

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