# -*- coding: utf-8 -*- # vi:si:et:sw=4:sts=4:ts=4 from __future__ import with_statement import os import time import base64 from subprocess import Popen from django.conf import settings import ox.torrent import transmissionrpc def connect(): return transmissionrpc.Client(settings.TRANSMISSON_HOST, port=settings.TRANSMISSON_PORT, user=settings.TRANSMISSON_USER, password=settings.TRANSMISSON_PASSWORD) def remove(info_hash): if settings.DEBUG: print 'remove', info_hash if info_hash: try: tc = connect() tc.remove(info_hash.lower()) except: if settings.DEBUG: import traceback traceback.print_exc() def add(torrent_file): download_dir = os.path.dirname(torrent_file) with open(torrent_file) as f: torrent_data = base64.b64encode(f.read()) info_hash = ox.torrent.getInfoHash(torrent_file) try: tc = connect() if not is_seeding(info_hash): tc.add(torrent_data, download_dir=download_dir) except: if settings.DEBUG: import traceback traceback.print_exc() def is_seeding(info_hash): info_hash = info_hash.lower() try: tc = connect() torrents = tc.info(info_hash) except: torrents = False if settings.DEBUG: import traceback traceback.print_exc() if torrents: return True return False def start_daemon(): try: tc = connect() except: Popen(['transmission-daemon', '-M', '-a', '127.0.0.1', '-r', '127.0.0.1', '-p', str(settings.TRANSMISSON_PORT), '--auth', '-u', settings.TRANSMISSON_USER, '-v', settings.TRANSMISSON_PASSWORD, '-w', settings.MEDIA_ROOT, ]) time.sleep(1)