transmission-lever


Nametransmission-lever JSON
Version 0.1.1 PyPI version JSON
download
home_pageNone
SummarySmall program that simplifies common chores on multiple torrents (currently only supports Transmission).
upload_time2024-12-03 22:27:39
maintainerNone
docs_urlNone
authorNone
requires_python>=3.12
licenseNone
keywords manage seed torrent transmission
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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

```bash
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:

```bash
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.
```bash
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:
```bash
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:
```bash
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*:
```bash
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:
```bash
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](https://github.com/Tomodoro/qbitseedmgr).

To start managing torrents:
```bash
tlever tier set
```

To stop managing torrents:
```bash
tlever tier unset
```

To resume paused torrents:
```bash
tlever tier activate
```

To keep the tiers updated and active:
```bash
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:
```bash
tlever clog set
```

To unset the clog:
```bash
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>`:
```bash
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>`:
```bash
tlever label remove %monthly-release <torrent-hash>
```

To add an arbitrary label:
```bash
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.
            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "transmission-lever",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.12",
    "maintainer_email": null,
    "keywords": "manage, seed, torrent, transmission",
    "author": null,
    "author_email": "Tom Villegas <tvillega@dcc.uchile.cl>",
    "download_url": "https://files.pythonhosted.org/packages/9b/14/55579d9c048a5e5013439f53d4e0ea0f313ace41204f90109233babeda4e/transmission_lever-0.1.1.tar.gz",
    "platform": null,
    "description": "# Transmission Lever\n\nSmall program that simplifies common chores on torrents by wrapping the RPC.\nThis program is not meant to be a manager by itself, only a *lever*\nfor others to write their own automatized tools.\n\n## Installation\n\n```bash\npip install transmission-lever\n```\n\n### Configuration file\n\nRunning `tlever` on the same machine as the torrent program will match the default credentials,\nif that is not the case please copy the example file from the repository under one of the following paths:\n\n```bash\n1. ~/.config/transmission-lever/config.json\n2. /etc/xdg/transmission-lever/config.json\n3. ~/.transmission-lever/config.json\n4. /etc/transmission-lever/config.json\n```\n\nThey will be checked in that order.\n\n## CLI Usage\n\n### Categories\n\nTo organize torrents in folders the same way as clients like qBittorrent,\na label-based system marks the torrents and moves them to the location.\n\nAll paths are relative to the `Downloads` directory, this is read from\nthe transmission configuration file.\n\nFor example, to move `<torrent-hash>` into the *movies* category.\n```bash\ntlever category add movies <torrent-hash>\n```\n\nThis will add the label `@movies` to the torrent and move its data to:\n```\nDownloads/\n\u2514\u2500\u2500 movies\n    \u2514\u2500\u2500 torrent-name\n```\n\nTo undo the action:\n```bash\ntlever category remove movies <torrent-hash>\n```\n\nThis will remove the label `@movies` to the torrent and move its data to:\n```\nDownloads/\n\u2514\u2500\u2500 torrent-name\n```\n\n> This command does not clean up empty directories,\n> this is because the program is using the RPC to move torrent data\n> and it does not have permissions over the filesystem in all use cases.\n> \n> Hooking the command `find /path/to/Downloads -type d -empty -delete` to a script\n> triggered by added|done|done_seeding of a torrent does the trick.\n\nIf labels get desync from the torrent directory, you can enforce the category label directory:\n```bash\ntlever enforce category\n```\n\n### Tags\n\nTo separate common labels from category labels,\na tag with a prefix is used.\n\nFor example, to tag `<torrent-hash>` with *best-of-the-year*:\n```bash\ntlever tag add best-of-the-year <torrent-hash>\n```\n\nThis will add the label `#best-of-the-year` to the torrent.\n\nTo undo the action:\n```bash\ntlever tag remove best-of-the-year <torrent-hash>\n```\n\nThis will remove the label `#best-of-the-year` to the torrent.\n\n> This command *is not* equivalent to `tier label ...`\n> as it is *always* prefixed.\n\n### Tiers\n\nTo set upload speed throttling based on ratio,\nthis is based on [qbitseedmgr](https://github.com/Tomodoro/qbitseedmgr).\n\nTo start managing torrents:\n```bash\ntlever tier set\n```\n\nTo stop managing torrents:\n```bash\ntlever tier unset\n```\n\nTo resume paused torrents:\n```bash\ntlever tier activate\n```\n\nTo keep the tiers updated and active:\n```bash\ntlever enforce tier\n```\n\n> The port of `not-popular` is a WIP.\n\n### Clogs\n\nWhen torrents surpass the last tier they are left unmanaged and if not configured correctly\nthey  can start hogging the bandwidth for themselves.\n\nThis commands fixes their upload limit to 50KiBps regardless their ratio or longevity.\n\n> This is an experimental feature and many values are currently hardcoded.\n\nTo set the clog:\n```bash\ntlever clog set\n```\n\nTo unset the clog:\n```bash\ntlever clog unset\n```\n\n### TUI\n\nBasic terminal interface to show live a torrent stats.\n\n> This is an experimental feature that needs further testing.\n\nFor example, given the torrent `<torrent-hash>`:\n```bash\ntlever tui show <torrent-hash>\n```\n\n### Labels\n\nTo manage labels without prefixes, useful to fix torrents that have\n invalid categories or tags because of a change in their prefix.\n\nFor example, given the prefixes `@` and `#` for categories and tags respectively,\nit's desired to remove the invalid tag `%monthly-release`\nfrom `<torrent-hash>`:\n```bash\ntlever label remove %monthly-release <torrent-hash>\n```\n\nTo add an arbitrary label:\n```bash\ntlever label add custom-label <torrent-hash>\n```\n\n## Module Usage\n\n### Overview\n\nThe functions are split into three namespaces:\n\n1. `core`: direct calls to RPC\n2. `extra`: extended functionality (i.e. categories)\n3. `community`: extended functionality added from user's PR\n\nThe goal is to have a friendly wrapper with proper docstrings\nthat is modular and extendable.\n\nIf a PR use case is generic enough it will be added to `extra`.\n\n### How to use?\n\nThe main file `tlever.py` that handles the CLI\nit's only a series of if/else statements around functions.\n\nTo build a custom program you only need to call this functions\ninside your program, making the respective module imports.",
    "bugtrack_url": null,
    "license": null,
    "summary": "Small program that simplifies common chores on multiple torrents (currently only supports Transmission).",
    "version": "0.1.1",
    "project_urls": {
        "Homepage": "https://github.com/tvillega/transmission-lever",
        "Issues": "https://github.com/tvillega/transmission-lever"
    },
    "split_keywords": [
        "manage",
        " seed",
        " torrent",
        " transmission"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "60ccdfb2f61bba4ce34524b65bfc073093e78061e2870e9081114e140b547a12",
                "md5": "f63d7badee865cad944567f83f6a2f24",
                "sha256": "f822a1272cac647202edcdb22f07baab5f0562a2f76bfffc6de6f64c27ea9ea0"
            },
            "downloads": -1,
            "filename": "transmission_lever-0.1.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "f63d7badee865cad944567f83f6a2f24",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.12",
            "size": 26534,
            "upload_time": "2024-12-03T22:27:36",
            "upload_time_iso_8601": "2024-12-03T22:27:36.864392Z",
            "url": "https://files.pythonhosted.org/packages/60/cc/dfb2f61bba4ce34524b65bfc073093e78061e2870e9081114e140b547a12/transmission_lever-0.1.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9b1455579d9c048a5e5013439f53d4e0ea0f313ace41204f90109233babeda4e",
                "md5": "e88c21ee41cfc2f8731605be678f2644",
                "sha256": "b16b1821364f630e503a26cdc3c75450b130e713e98be330cfaad5c81bed8c0e"
            },
            "downloads": -1,
            "filename": "transmission_lever-0.1.1.tar.gz",
            "has_sig": false,
            "md5_digest": "e88c21ee41cfc2f8731605be678f2644",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.12",
            "size": 21480,
            "upload_time": "2024-12-03T22:27:39",
            "upload_time_iso_8601": "2024-12-03T22:27:39.162804Z",
            "url": "https://files.pythonhosted.org/packages/9b/14/55579d9c048a5e5013439f53d4e0ea0f313ace41204f90109233babeda4e/transmission_lever-0.1.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-12-03 22:27:39",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "tvillega",
    "github_project": "transmission-lever",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "transmission-lever"
}
        
Elapsed time: 0.91540s