#!/usr/bin/env python3 import click from transmission_rpc import Client from datetime import timedelta, datetime def convert_to_seconds(s): units = {"s": "seconds", "m": "minutes", "h": "hours", "d": "days", "w": "weeks"} count = int(s[:-1]) unit = units[s[-1]] td = timedelta(**{unit: count}) return td.seconds + 60 * 60 * 24 * td.days @click.command() @click.option('--port', default=9091) @click.option('--host', default="localhost") @click.option('--tag', required=True) @click.option('--age', default='1w') def main(host, port, tag, age): """ Deletes torrents older than the specified age. """ c = Client(host=host, port=port) torrents = c.get_torrents() for torrent in torrents: if tag not in torrent.labels: continue specified_age = convert_to_seconds(age) age_in_seconds = int((datetime.today().timestamp() - torrent.done_date.timestamp())) if age_in_seconds > specified_age: print(f"Deleting {torrent.name}") c.remove_torrent(torrent.id, delete_data=True) if __name__ == '__main__': main()