This commit is contained in:
2025-04-18 17:33:48 +02:00
parent 26fb8b1678
commit 57346dd811
10 changed files with 757 additions and 19 deletions

View File

@@ -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: