add transmission interface

This commit is contained in:
j 2010-06-24 15:11:34 +02:00
parent d2aae7d958
commit 0510588b28
11 changed files with 130 additions and 1 deletions

View file

@ -110,6 +110,7 @@ INSTALLED_APPS = (
'app',
'backend',
'oxuser',
'torrent',
)
AUTH_PROFILE_MODULE = 'oxuser.UserProfile'
@ -124,6 +125,11 @@ VIDEO_ENCODING = {
'high': {'profile': 'padma'}
}
TRANSMISSON_HOST='localhost'
TRANSMISSON_PORT=9091
TRANSMISSON_USER='transmission'
TRANSMISSON_PASSWORD='transmission'
#overwrite default settings with local settings
try:
from local_settings import *

View file

@ -9,7 +9,7 @@
<script type="text/javascript" src="/static/oxjs/build/js/ox.js"></script>
<script type="text/javascript" src="/static/oxjs/build/js/ox.ui.js"></script>
<script type="text/javascript" src="/site.js"></script>
<script type="text/javascript" src="/static/js/oxdb.js"></script>
<script type="text/javascript" src="/static/js/pandora.js"></script>
</head>
<body>
</body>

View file

View file

View file

@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
# vi:si:et:sw=4:sts=4:ts=4
import os
from os.path import join, dirname, basename, splitext, exists
from django.core.management.base import BaseCommand, CommandError
from django.conf import settings
from ... import daemon
class Command(BaseCommand):
"""
listen to rabbitmq and execute encoding tasks.
"""
help = 'listen to rabbitmq and execute encoding tasks.'
args = ''
def handle(self, **options):
transmission.startDaemon()

View file

@ -0,0 +1,3 @@
from django.db import models
# Create your models here.

23
pandora/torrent/tests.py Normal file
View file

@ -0,0 +1,23 @@
"""
This file demonstrates two different styles of tests (one doctest and one
unittest). These will both pass when you run "manage.py test".
Replace these with more appropriate tests for your application.
"""
from django.test import TestCase
class SimpleTest(TestCase):
def test_basic_addition(self):
"""
Tests that 1 + 1 always equals 2.
"""
self.failUnlessEqual(1 + 1, 2)
__test__ = {"doctest": """
Another way to test that 1 + 1 is equal to 2.
>>> 1 + 1 == 2
True
"""}

View file

@ -0,0 +1,73 @@
# -*- 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 oxlib.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 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 = oxlib.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',
'-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)

1
pandora/torrent/views.py Normal file
View file

@ -0,0 +1 @@
# Create your views here.

View file

@ -11,3 +11,4 @@ carrot
django_extensions
-e bzr+http://firefogg.org/dev/python-firefogg/#egg=python-firefogg
-e git+git://github.com/dcramer/django-devserver#egg=django_devserver
transmissionrpc