mirror of
https://github.com/FAUSheppy/homelab_gamevault
synced 2025-12-06 06:51:36 +01:00
This commit is contained in:
@@ -20,6 +20,7 @@ class DataBackend:
|
|||||||
|
|
||||||
self.user = user
|
self.user = user
|
||||||
self.password = password
|
self.password = password
|
||||||
|
self.auth = (self.user, self.password)
|
||||||
self.remote_root_dir = remote_root_dir
|
self.remote_root_dir = remote_root_dir
|
||||||
self.server = server
|
self.server = server
|
||||||
self.install_dir = install_dir
|
self.install_dir = install_dir
|
||||||
@@ -92,6 +93,7 @@ class LocalFS(DataBackend):
|
|||||||
meta_info_list.append(software.Software(meta_file, self, self.progress_bar_wrapper))
|
meta_info_list.append(software.Software(meta_file, self, self.progress_bar_wrapper))
|
||||||
|
|
||||||
return list(filter(lambda x: not x.invalid, meta_info_list))
|
return list(filter(lambda x: not x.invalid, meta_info_list))
|
||||||
|
|
||||||
class HTTP(DataBackend):
|
class HTTP(DataBackend):
|
||||||
|
|
||||||
paths_listed = {}
|
paths_listed = {}
|
||||||
@@ -165,7 +167,7 @@ class HTTP(DataBackend):
|
|||||||
|
|
||||||
# this is with streaming
|
# this is with streaming
|
||||||
chunk_size = 1024 * 1024 * 5 # 5MB
|
chunk_size = 1024 * 1024 * 5 # 5MB
|
||||||
r = requests.get(self._get_url(), params={"path": path, "as_string": True}, stream=True)
|
r = requests.get(self._get_url(), params={"path": path, "as_string": True}, stream=True, auth=(self.user, self.password))
|
||||||
r.raise_for_status()
|
r.raise_for_status()
|
||||||
|
|
||||||
if path.endswith(".txt"):
|
if path.endswith(".txt"):
|
||||||
@@ -197,7 +199,7 @@ class HTTP(DataBackend):
|
|||||||
|
|
||||||
else:
|
else:
|
||||||
print("Async Requested for:", local_file)
|
print("Async Requested for:", local_file)
|
||||||
statekeeper.add_to_download_queue(self._get_url(), path)
|
statekeeper.add_to_download_queue(self._get_url(), path, auth=(self.user, self.password))
|
||||||
return local_file
|
return local_file
|
||||||
|
|
||||||
elif return_content:
|
elif return_content:
|
||||||
@@ -220,7 +222,7 @@ class HTTP(DataBackend):
|
|||||||
paths = self.paths_listed[fullpath]
|
paths = self.paths_listed[fullpath]
|
||||||
else:
|
else:
|
||||||
|
|
||||||
r = requests.get(self._get_url(), params={ "path" : path })
|
r = requests.get(self._get_url(), params={ "path" : path }, auth=(self.user, self.password))
|
||||||
r.raise_for_status()
|
r.raise_for_status()
|
||||||
#print(r, r.status_code, r.content)
|
#print(r, r.status_code, r.content)
|
||||||
paths = r.json()["contents"]
|
paths = r.json()["contents"]
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ class ProgressBarApp:
|
|||||||
return
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
percent_filled = statekeeper.get_percent_filled(path)
|
percent_filled = statekeeper.get_percent_filled(path, self.data_backend.auth)
|
||||||
except OSError as e:
|
except OSError as e:
|
||||||
fail_count += 1
|
fail_count += 1
|
||||||
if fail_count > 6:
|
if fail_count > 6:
|
||||||
|
|||||||
@@ -8,10 +8,10 @@ from sqlalchemy import or_, and_
|
|||||||
def _bytes_to_mb(size):
|
def _bytes_to_mb(size):
|
||||||
return size / (1024*1024)
|
return size / (1024*1024)
|
||||||
|
|
||||||
def add_to_download_queue(url, path):
|
def add_to_download_queue(url, path, auth):
|
||||||
'''The download is added to the global queue and downloaded eventually'''
|
'''The download is added to the global queue and downloaded eventually'''
|
||||||
#_download(url, path)
|
#_download(url, path)
|
||||||
thread = threading.Thread(target=_download, args=(url, path))
|
thread = threading.Thread(target=_download, args=(url, path, auth))
|
||||||
thread.start()
|
thread.start()
|
||||||
|
|
||||||
def add_to_task_queue(task):
|
def add_to_task_queue(task):
|
||||||
@@ -21,9 +21,9 @@ def add_to_task_queue(task):
|
|||||||
thread.start()
|
thread.start()
|
||||||
#task()
|
#task()
|
||||||
|
|
||||||
def _download(url, path):
|
def _download(url, path, auth):
|
||||||
|
|
||||||
response = requests.get(url + "?path=" + path, stream=True)
|
response = requests.get(url + "?path=" + path, stream=True, auth=auth)
|
||||||
|
|
||||||
# Check if the request was successful
|
# Check if the request was successful
|
||||||
if response.status_code == 200:
|
if response.status_code == 200:
|
||||||
@@ -72,7 +72,7 @@ def log_end_download(path):
|
|||||||
|
|
||||||
db.close_session()
|
db.close_session()
|
||||||
|
|
||||||
def get_download_size(path):
|
def get_download_size(path, auth):
|
||||||
|
|
||||||
session = db.session()
|
session = db.session()
|
||||||
obj = session.query(Download).filter(Download.path==path).first()
|
obj = session.query(Download).filter(Download.path==path).first()
|
||||||
@@ -85,7 +85,7 @@ def get_download_size(path):
|
|||||||
return obj.size
|
return obj.size
|
||||||
|
|
||||||
# query size #
|
# query size #
|
||||||
r = requests.get(obj.url, params={"path": path, "info": 1})
|
r = requests.get(obj.url, params={"path": path, "info": 1}, auth=auth)
|
||||||
r.raise_for_status()
|
r.raise_for_status()
|
||||||
|
|
||||||
size = r.json()["size"]
|
size = r.json()["size"]
|
||||||
@@ -96,14 +96,14 @@ def get_download_size(path):
|
|||||||
|
|
||||||
return size
|
return size
|
||||||
|
|
||||||
def get_percent_filled(path):
|
def get_percent_filled(path, auth):
|
||||||
|
|
||||||
session = db.session()
|
session = db.session()
|
||||||
obj = session.query(Download).filter(Download.path==path, Download.finished==False).first()
|
obj = session.query(Download).filter(Download.path==path, Download.finished==False).first()
|
||||||
if not obj:
|
if not obj:
|
||||||
return 100 # means its finished
|
return 100 # means its finished
|
||||||
size = _bytes_to_mb(os.stat(obj.local_path).st_size)
|
size = _bytes_to_mb(os.stat(obj.local_path).st_size)
|
||||||
total_size = get_download_size(obj.path)
|
total_size = get_download_size(obj.path, auth)
|
||||||
session.close()
|
session.close()
|
||||||
|
|
||||||
if total_size == 0:
|
if total_size == 0:
|
||||||
|
|||||||
Reference in New Issue
Block a user