init
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
from django.conf import settings
|
||||
|
||||
import traceback
|
||||
import base64
|
||||
import io
|
||||
|
||||
from transmission_rpc import Client
|
||||
from transmission_rpc.error import TransmissionError
|
||||
|
||||
@@ -18,8 +21,15 @@ class Transmission:
|
||||
def __init__(self):
|
||||
self.client = Client(**settings.TRANSMISSION)
|
||||
|
||||
def add_torrent(self, file):
|
||||
return self.client.add_torrent(file)
|
||||
def add_torrent(self, file, file_mode="file_object"):
|
||||
match file_mode:
|
||||
case "file_object":
|
||||
return self.client.add_torrent(file)
|
||||
case "base64":
|
||||
file_content = base64.b64decode(file)
|
||||
file_obj = io.BytesIO(file_content)
|
||||
return self.client.add_torrent(file_obj)
|
||||
return None
|
||||
|
||||
def get_data(self, hash_string):
|
||||
data = self.client.get_torrent(hash_string, self.trpc_args)
|
||||
@@ -45,7 +55,7 @@ class Transmission:
|
||||
transmission_handler = Transmission()
|
||||
|
||||
|
||||
def torrent_proceed(user, file):
|
||||
def torrent_proceed(user, file, file_mode="file_object"):
|
||||
r = {
|
||||
"torrent": None,
|
||||
"status": "error",
|
||||
@@ -58,7 +68,7 @@ def torrent_proceed(user, file):
|
||||
return r
|
||||
|
||||
try:
|
||||
torrent_uploaded = transmission_handler.add_torrent(file)
|
||||
torrent_uploaded = transmission_handler.add_torrent(file, file_mode=file_mode)
|
||||
except TransmissionError:
|
||||
print(traceback.format_exc())
|
||||
r["message"] = "Transmission Error"
|
||||
@@ -74,7 +84,7 @@ def torrent_proceed(user, file):
|
||||
if torrent.user == user:
|
||||
r["message"] = "Already exist"
|
||||
return r
|
||||
elif torrent.shared_users.filter(user=user).exists():
|
||||
elif torrent.shared_users.filter(id=user.id).exists():
|
||||
r["message"] = "Already shared"
|
||||
return r
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user