Automatically remove torrents according to your strategies.

## Project description

This program can help you to remove your torrents. Now you don’t need to worry about your disk space - according to your strategies, the program will check each torrent if it satisfies the remove condition; If so, delete it automatically.

This program supports qBittorrent/Transmission/μTorrent. If you like, star it :sparkles: :)

Readme version in other languages: 简体中文.

## Requirements

• Python 3

That’s all. It’s a simple but smart program.

## Quick Start

### Installation

#### Install from pip

pip install autoremove-torrents

or

#### Install from GitHub

git clone https://github.com/jerrymakesjelly/autoremove-torrents.git
cd autoremove-torrents
python3 setup.py install

In order to satisfactory your needs, you have to learn how to write a configuration file.

You can put the configuration file anywhere on your disk. The autoremove-torrents looks for config.yml in the Shell’s current working directory:

vim ./config.yml

The grammar is quite easy, for example:

my_task:
client: qbittorrent
host: http://127.0.0.1
strategies:
my_strategy:
categories:
- IPT
remove: seeding_time > 1209600 or ratio > 1
delete_data: true

The program will delete those torrents whose categories are IPT, seeding time is above 1209600 seconds or ratio is greater than 1. Visit Wiki to learn more.

### Run

autoremove-torrents

If you just want to see which torrents can be removed but don’t want to really remove them, use --view command line argument.

If you want to check whether there is any torrent can be removed every 15 minutes, the crontab can help you. Look at the example:

crontab -e

And then, add a line at the end of the file (please confirm the path of the autoremove-torrents and your program):

*/15 * * * * /usr/bin/autoremove-torrents --conf=/home/jerrymakesjelly/autoremove-torrents/config.yml --log=/home/jerrymakesjelly/autoremove-torrents/logs

The --conf indicates the path to the configuration file. The --log argument specifies the path to store the log files (Must be existed).

## Changelog

Mon, 13 May 2019: Version 1.4.2.

• Fixed missing parser files. (#32)

• Fixed association of operators. (#32) Now the operator and and or are guaranteed to be left-associative.

Mon, 6 May 2019: Version 1.4.1.

• Fixed missing dependency: ply.

• Fixed the warning of duplicate definition in condition remove.

Mon, 6 May 2019: Updated Wiki.

• Added the description of remove condition into Simplified-Chinese Wiki.

Wed, 1 May 2019: Version 1.4.0.

• Removed torrent status restriction in seeding_time and ratio condition (#19).
• Before this version, seeding_time and ratio condition will only remove those torrents whose status are seeding. We set this restriction to provide a method for users to avoid a torrent being removed by changing its status (e.g. pause seeding).

• But now we have a status filter, this restriction becomes unnecessary, and its behavior may be different from users expectation.

• Supported custom remove expressions (#15).
• Now we can write the condition that we want directly and clearly, e.g. remove: ratio > 1.

• Composite condition expressions are also supported, e.g. remove: (seeding_time < 86400 and ratio > 1) or (seeding_time > 86400 and ratio > 3). Visit Wiki to learn more.

• The old remove conditions are still available.

Wed, 17 Apr 2019: Version 1.3.0.

• Fixed bug: Program gets stuck when there are a lot of torrents in qBittorrent client (Issue #22).

• Fixed bug: Duplicated logging in status filter.

• Log system was updated:
• Log path can be specified (Use --log argument, e.g. --log=/home/jerrymakesjelly/logs) (Issue #23).

• Logs are stored in different files by day (Format: autoremove.%Y-%m-%d.log).

• Changed the word seed to torrent (Issue #25).

• Removed uncessary debug messages.

Mon, 10 Jan 2019: Version 1.2.5.

• Fixed bug: Incorrect number of torrents in multiple strategies (Issue #10, thanks to @momokoo for the report and PR).

• Fixed bug: Incorrect number of torrents in qBittorrent (Issue #13).

Thu, 31 May 2018: Version 1.2.4.

• Fixed startup failure.

Wed, 30 May 2018: Version 1.2.3. Added new features.

• Allowed to use environment variables to specify host, username and password.

• Now the program won’t quit directly when a task goes failed.

Sun, 27 May 2018: Version 1.2.2. Added new features :smile:

• Added new filter: Torrent Status

• Added new condition: Maximum number of torrents

Sat, 26 May 2018: Version 1.2.1. Fixed issue in setup.py.

Sat, 26 May 2018: Version 1.2.0. Refactoring was completed, and was published to PyPI.

• New features will be added soon.

• Now we can install it via pip.

Mon, 14 May 2018: Version 1.1.0. Created setup.py.

You can now use the autoremove-torrents command directly instead of python3 main.py.

Wed, 28 Mar 2018: (Correct document) The delete_data field shouldn’t be indented.

Thu, 22 Mar 2018: First version :bowtie:

## TODO List

Depend on users’ feedback.

• Support Deluge and rtorrent in the future

• Add remove condition: Disk free space

• Add remove condition: Max/Min average UL/DL speed

If you have any problem, please submit issues.

## Project details

Uploaded source