mirror of
https://github.com/hydralauncher/hydra.git
synced 2025-03-09 15:40:26 +00:00
fix: removing python tick
This commit is contained in:
parent
c26315219e
commit
9f9ea6ee88
2 changed files with 39 additions and 65 deletions
|
@ -15,7 +15,6 @@ export const RPC_PORT = "8084";
|
||||||
const commonArgs = [BITTORRENT_PORT, RPC_PORT];
|
const commonArgs = [BITTORRENT_PORT, RPC_PORT];
|
||||||
|
|
||||||
export const startTorrentClient = () => {
|
export const startTorrentClient = () => {
|
||||||
console.log("CALLED");
|
|
||||||
if (app.isPackaged) {
|
if (app.isPackaged) {
|
||||||
const binaryName = binaryNameByPlatform[process.platform]!;
|
const binaryName = binaryNameByPlatform[process.platform]!;
|
||||||
const binaryPath = path.join(
|
const binaryPath = path.join(
|
||||||
|
|
|
@ -8,64 +8,49 @@ import time
|
||||||
torrent_port = sys.argv[1]
|
torrent_port = sys.argv[1]
|
||||||
http_port = sys.argv[2]
|
http_port = sys.argv[2]
|
||||||
|
|
||||||
print(http_port)
|
class Downloader:
|
||||||
|
def __init__(self):
|
||||||
|
self.torrent_handles = {}
|
||||||
|
self.downloading_game_id = -1
|
||||||
|
self.session = lt.session({'listen_interfaces': '0.0.0.0:{port}'.format(port=torrent_port)})
|
||||||
|
|
||||||
session = lt.session({'listen_interfaces': '0.0.0.0:{port}'.format(port=torrent_port)})
|
def start_download(self, game_id: int, magnet: str, save_path: str):
|
||||||
|
params = {'url': magnet, 'save_path': save_path}
|
||||||
|
torrent_handle = self.session.add_torrent(params)
|
||||||
|
self.torrent_handles[game_id] = torrent_handle
|
||||||
|
torrent_handle.set_flags(lt.torrent_flags.auto_managed)
|
||||||
|
torrent_handle.resume()
|
||||||
|
|
||||||
torrent_handles = {}
|
self.downloading_game_id = game_id
|
||||||
downloading_game_id = -1
|
|
||||||
|
|
||||||
def start_download(game_id: int, magnet: str, save_path: str):
|
def pause_download(self, game_id: int):
|
||||||
global torrent_handles
|
torrent_handle = self.torrent_handles.get(game_id)
|
||||||
global downloading_game_id
|
if torrent_handle:
|
||||||
|
torrent_handle.pause()
|
||||||
|
torrent_handle.unset_flags(lt.torrent_flags.auto_managed)
|
||||||
|
self.downloading_game_id = -1
|
||||||
|
|
||||||
params = {'url': magnet, 'save_path': save_path}
|
def cancel_download(self, game_id: int):
|
||||||
torrent_handle = session.add_torrent(params)
|
torrent_handle = self.torrent_handles.get(game_id)
|
||||||
torrent_handles[game_id] = torrent_handle
|
if torrent_handle:
|
||||||
torrent_handle.set_flags(lt.torrent_flags.auto_managed)
|
torrent_handle.pause()
|
||||||
torrent_handle.resume()
|
self.session.remove_torrent(torrent_handle)
|
||||||
|
self.torrent_handles[game_id] = None
|
||||||
|
self.downloading_game_id = -1
|
||||||
|
|
||||||
downloading_game_id = game_id
|
def get_download_status(self):
|
||||||
|
if self.downloading_game_id == -1:
|
||||||
|
return None
|
||||||
|
|
||||||
def pause_download(game_id: int):
|
torrent_handle = self.torrent_handles.get(self.downloading_game_id)
|
||||||
global torrent_handles
|
|
||||||
global downloading_game_id
|
|
||||||
|
|
||||||
torrent_handle = torrent_handles.get(game_id)
|
|
||||||
if torrent_handle:
|
|
||||||
torrent_handle.pause()
|
|
||||||
torrent_handle.unset_flags(lt.torrent_flags.auto_managed)
|
|
||||||
downloading_game_id = -1
|
|
||||||
|
|
||||||
def cancel_download(game_id: int):
|
|
||||||
global torrent_handles
|
|
||||||
global downloading_game_id
|
|
||||||
|
|
||||||
torrent_handle = torrent_handles.get(game_id)
|
|
||||||
if torrent_handle:
|
|
||||||
torrent_handle.pause()
|
|
||||||
session.remove_torrent(torrent_handle)
|
|
||||||
torrent_handles[game_id] = None
|
|
||||||
downloading_game_id =-1
|
|
||||||
|
|
||||||
def get_download_updates():
|
|
||||||
global torrent_handles
|
|
||||||
global downloading_game_id
|
|
||||||
|
|
||||||
while True:
|
|
||||||
if downloading_game_id == -1:
|
|
||||||
time.sleep(0.5)
|
|
||||||
continue
|
|
||||||
|
|
||||||
torrent_handle = torrent_handles.get(downloading_game_id)
|
|
||||||
|
|
||||||
status = torrent_handle.status()
|
status = torrent_handle.status()
|
||||||
info = torrent_handle.get_torrent_info()
|
info = torrent_handle.get_torrent_info()
|
||||||
|
|
||||||
Handler.current_status = {
|
return {
|
||||||
'folderName': info.name() if info else "",
|
'folderName': info.name() if info else "",
|
||||||
'fileSize': info.total_size() if info else 0,
|
'fileSize': info.total_size() if info else 0,
|
||||||
'gameId': downloading_game_id,
|
'gameId': self.downloading_game_id,
|
||||||
'progress': status.progress,
|
'progress': status.progress,
|
||||||
'downloadSpeed': status.download_rate,
|
'downloadSpeed': status.download_rate,
|
||||||
'numPeers': status.num_peers,
|
'numPeers': status.num_peers,
|
||||||
|
@ -74,22 +59,19 @@ def get_download_updates():
|
||||||
'bytesDownloaded': status.progress * info.total_size() if info else status.all_time_download,
|
'bytesDownloaded': status.progress * info.total_size() if info else status.all_time_download,
|
||||||
}
|
}
|
||||||
|
|
||||||
if status.progress == 1:
|
|
||||||
cancel_download(downloading_game_id)
|
|
||||||
|
|
||||||
time.sleep(0.5)
|
|
||||||
|
|
||||||
|
downloader = Downloader()
|
||||||
|
|
||||||
class Handler(BaseHTTPRequestHandler):
|
class Handler(BaseHTTPRequestHandler):
|
||||||
current_status = None
|
|
||||||
|
|
||||||
def do_GET(self):
|
def do_GET(self):
|
||||||
if self.path == "/status":
|
if self.path == "/status":
|
||||||
self.send_response(200)
|
self.send_response(200)
|
||||||
self.send_header("Content-type", "application/json")
|
self.send_header("Content-type", "application/json")
|
||||||
self.end_headers()
|
self.end_headers()
|
||||||
|
|
||||||
self.wfile.write(json.dumps(self.current_status).encode('utf-8'))
|
status = downloader.get_download_status()
|
||||||
|
|
||||||
|
self.wfile.write(json.dumps(status).encode('utf-8'))
|
||||||
|
|
||||||
def do_POST(self):
|
def do_POST(self):
|
||||||
if self.path == "/action":
|
if self.path == "/action":
|
||||||
|
@ -98,23 +80,16 @@ class Handler(BaseHTTPRequestHandler):
|
||||||
data = json.loads(post_data.decode('utf-8'))
|
data = json.loads(post_data.decode('utf-8'))
|
||||||
|
|
||||||
if data['action'] == 'start':
|
if data['action'] == 'start':
|
||||||
start_download(data['game_id'], data['magnet'], data['save_path'])
|
downloader.start_download(data['game_id'], data['magnet'], data['save_path'])
|
||||||
elif data['action'] == 'pause':
|
elif data['action'] == 'pause':
|
||||||
pause_download(data['game_id'])
|
downloader.pause_download(data['game_id'])
|
||||||
self.current_status = None
|
|
||||||
elif data['action'] == 'cancel':
|
elif data['action'] == 'cancel':
|
||||||
cancel_download(data['game_id'])
|
downloader.cancel_download(data['game_id'])
|
||||||
self.current_status = None
|
|
||||||
|
|
||||||
self.send_response(200)
|
self.send_response(200)
|
||||||
self.end_headers()
|
self.end_headers()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
p1 = threading.Thread(target=get_download_updates)
|
|
||||||
|
|
||||||
httpd = HTTPServer(("", int(http_port)), Handler)
|
httpd = HTTPServer(("", int(http_port)), Handler)
|
||||||
p2 = threading.Thread(target=httpd.serve_forever)
|
httpd.serve_forever()
|
||||||
|
|
||||||
p1.start()
|
|
||||||
p2.start()
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue