mirror of
https://github.com/hydralauncher/hydra.git
synced 2025-01-23 21:44:55 +03:00
48 lines
1.4 KiB
Python
48 lines
1.4 KiB
Python
import aria2p
|
|
|
|
class HttpDownloader:
|
|
def __init__(self):
|
|
self.download = None
|
|
self.aria2 = aria2p.API(
|
|
aria2p.Client(
|
|
host="http://localhost",
|
|
port=6800,
|
|
secret=""
|
|
)
|
|
)
|
|
|
|
def start_download(self, url: str, save_path: str, header: str):
|
|
if self.download:
|
|
self.aria2.resume([self.download])
|
|
else:
|
|
downloads = self.aria2.add(url, options={"header": header, "dir": save_path})
|
|
self.download = downloads[0]
|
|
|
|
def pause_download(self):
|
|
if self.download:
|
|
self.aria2.pause([self.download])
|
|
|
|
def cancel_download(self):
|
|
if self.download:
|
|
self.aria2.remove([self.download])
|
|
self.download = None
|
|
|
|
def get_download_status(self):
|
|
if self.download == None:
|
|
return None
|
|
|
|
download = self.aria2.get_download(self.download.gid)
|
|
|
|
response = {
|
|
'folderName': str(download.dir) + "/" + download.name,
|
|
'fileSize': download.total_length,
|
|
'progress': download.completed_length / download.total_length if download.total_length else 0,
|
|
'downloadSpeed': download.download_speed,
|
|
'numPeers': 0,
|
|
'numSeeds': 0,
|
|
'status': download.status,
|
|
'bytesDownloaded': download.completed_length,
|
|
}
|
|
|
|
return response
|