Skip to content

gregsterb/tranny

 
 

Repository files navigation

Tranny - A highly configurable torrent downloader and API wrapper

This is still early in the development process, i don't recommend users commit to using it yet as its still in a constant state of change.

Tranny is a python library, daemon and web interface designed to interact with a number of torrent clients via their respective API's. It shares some goals similar to sickbeard but is tailored to torrents and specifically private tracker support. Its very unlikely usenet/nbz support will ever be considered as an alternate to torrent backends, so stick to sickbeard if that is your poison of choice.

Design Goal

This tools primary goal was to attempt to automate repetitive downloading tasks as efficiently as possible. This means that there will be support for loading torrents from many different sources, hopefully without loading any duplicates. In addition to this support has expanded to also support a generic torrent webui similar to rtorrent's ruTorrent or the built in WebUI plugins for deluge among others. All of these function essentially in the same manner so supporting all of the different torrent back-ends relatively easy, similar to the transdroid application.

Features Status

Torrent clients

I am primarily developing against the deluge API so it will be the most supported initially and is probably what you should stick to for now. Once this is stable i will finish polishing the other client support to also have 1st class support. I am not currently considering any other clients except potentially Vuze/Azuereus if the demand is there, but its not on my roadmap at all. (Tixati)[http://tixati.com/] may also be considered now that it has some form of web api, but only when trackers start to generally white list it will i move in that direction. Alternatively I would also accept pull requests for these 2 clients as long as they are feature complete.

Auto Sorting & Downloading

  • Auto sorting of releases into the correct destination folders based on the name of the torrent. For example when downloading a TV episode, it will be placed in the configured TV download path automatically.
  • TV sorting/grouping. Different episodes of a TV show can be grouped under 1 common sub directory of the download path automatically. eg. Show.Name.S01E12.720p.HDTV.x264-FiHTV -> /download/path/tv/Show.Name/Show.Name.S01E12.720p.HDTV.x264-FiHTV
  • Only download the first matching torrent from whichever source finds it first, skipping subsequent duplicate matches.
  • Support for handling "Proper" releases
  • Global ignore patterns
  • Persistent download history
  • Minimum/Maximum file size filtering
  • Handle daily broadcast show properties (ex. Delete daily shows over a week old)
  • Custom regex matching
  • Filter to only accept private torrents
  • Skip releases that don't have a minimum iMDB score
  • Skip releases that don't have a minimum The Movie DB score
  • Skip releases which are older than N pre time.
  • Skip releases which are not available under predb (Usually P2P)
  • Check for disk space available and set a minimum disk space buffer to provide

Notifications

The notification features are likely to be the lowest priority at the moment and will only come along in something like a version 2 of the application. Their support is absolutely planned however.

  • IRC Bot
  • Email
  • SMS
  • Growl

Service Providers

These are backend services that are continually updates either by polling, or events broadcasted depending on the service.

  • Watch folders (Unlimited number of watch folders which can individually be configured with their own section)
  • RSS Feeds (Parsing any number of feeds supported. Independent settings such as different intervals per feed.)
  • RSS Feed HTTP Auth
  • BTN API (JSON-RPC API)
  • Internal IRC client. Functionality similar to autodl-irssi
  • weechat Python parser script
  • irssi Probably perl based, python support seems weak
  • mIRC If someone wants to develop this... :)
  • IRC PreDB scraper support. Using the internal IRC client record pre logs for local lookup

OS Support

  • Linux (Tested only on linux currently)
  • Windows (may work, untested..)
  • OSX (likely works, untested..)
  • Open/Free/NetBSD (likely works, untested..)

RDBMS datastore backend

WebUI

This was something i was not originally interested in, but later decided to include as it is a relatively simple addition with nice rewards for having complete integration with backend services that really make it stand out as a feature compared to traditional WebUI's/clients. This is not however going to be a required component to use, all configuration and applications will work without any webui active at all, making this component 100% optional with the ability to disable it completely.

  • Web based configuration of most things (Filters / System settings)
  • Simple graphs for sources / media types
  • Loaded torrent list view with basic info
  • Torrent detail view (peers/trackers/etc)
  • Real-time peer stat graphs (clients/origin country)
  • Real-time traffic stat graphs (up/dn)
  • Start/Stop/Pause torrents
  • Set priorities of individual torrents
  • Responsive design for mobile support
  • Right click context menu action support
  • Multi user support (I am unsure how i want to proceed with this, but its something i would like to have)

Other

  • Python 3 support. Tranny itself should be python3 compatible, but some libraries are not (gevent).
  • API support

Libraries used

A list of the major library used.

Python

Web

Setup

For more in depth ways to start the service please see the setup docs.

Contributing

If you would like to start contributing to the project, please fork it and read the developer guide to get started. Contributions are welcomed.

Contact

I am generally available in the #tranny channel on freenode

About

Service to automatically download and manage torrents from multiple source with an optional web interface.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 57.6%
  • CSS 20.3%
  • CoffeeScript 14.0%
  • HTML 7.2%
  • Other 0.9%