mirror of
https://github.com/spalencsar/bearhub.git
synced 2026-07-09 10:54:16 +02:00
retrieving URL file size correctly | improving downloaded file size format
This commit is contained in:
@@ -23,7 +23,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|||||||
- retrieving installed applications information for Ubuntu based distros
|
- retrieving installed applications information for Ubuntu based distros
|
||||||
|
|
||||||
### AppImage support
|
### AppImage support
|
||||||
- Search, install, uninstall, downgrade, launch and retrieve the applications history available in [AppImageHub](https://appimage.github.io)
|
- Search, install, uninstall, downgrade, launch and retrieve the applications history
|
||||||
|
- Supported sources: [AppImageHub](https://appimage.github.io).
|
||||||
|
- Applications with no releases published to GitHub are not available
|
||||||
- Adds desktop entries ( menu shortcuts ) for the installed applications ( **~/.local/share/applications **)
|
- Adds desktop entries ( menu shortcuts ) for the installed applications ( **~/.local/share/applications **)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -104,7 +104,9 @@ will be pre-downloaded faster ( it does **NOT** modify your **pacman** settings
|
|||||||
- Automatically makes simple package compilation improvements
|
- Automatically makes simple package compilation improvements
|
||||||
|
|
||||||
### AppImage support ( appimage gem )
|
### AppImage support ( appimage gem )
|
||||||
- The user is able to search, install, uninstall, downgrade, launch and retrieve the applications history available in [AppImageHub](https://appimage.github.io)
|
- The user is able to search, install, uninstall, downgrade, launch and retrieve the applications history
|
||||||
|
- Supported sources: [AppImageHub](https://appimage.github.io).
|
||||||
|
- Applications with no releases published to GitHub are not available
|
||||||
- Adds desktop entries ( menu shortcuts ) for the installed applications ( **~/.local/share/applications **)
|
- Adds desktop entries ( menu shortcuts ) for the installed applications ( **~/.local/share/applications **)
|
||||||
|
|
||||||
a) if **MAKEFLAGS** is not set in **/etc/makepkg.conf** and **~/.makepkg.conf** does not exist,
|
a) if **MAKEFLAGS** is not set in **/etc/makepkg.conf** and **~/.makepkg.conf** does not exist,
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ import traceback
|
|||||||
|
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
|
SIZE_MULTIPLIERS = ((0.001, 'Kb'), (0.000001, 'Mb'), (0.000000001, 'Gb'), (0.000000000001, 'Tb'))
|
||||||
|
|
||||||
|
|
||||||
class HttpClient:
|
class HttpClient:
|
||||||
|
|
||||||
@@ -43,12 +45,20 @@ class HttpClient:
|
|||||||
res = self.get(url)
|
res = self.get(url)
|
||||||
return res.json() if res else None
|
return res.json() if res else None
|
||||||
|
|
||||||
def get_content_length(self, url: str) -> int:
|
def get_content_length(self, url: str) -> str:
|
||||||
"""
|
"""
|
||||||
:param url:
|
:param url:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
res = self.session.head(url)
|
res = self.session.get(url, allow_redirects=True, stream=True)
|
||||||
|
|
||||||
if res.status_code == 200:
|
if res.status_code == 200:
|
||||||
return res.headers['content-length']
|
size = int(res.headers.get('Content-Length'))
|
||||||
|
|
||||||
|
if size is not None:
|
||||||
|
for m in SIZE_MULTIPLIERS:
|
||||||
|
size_str = str(size * m[0])
|
||||||
|
|
||||||
|
if len(size_str.split('.')[0]) < 4:
|
||||||
|
return '{0:.2f}'.format(float(size_str)) + ' ' + m[1]
|
||||||
|
return str(size)
|
||||||
|
|||||||
@@ -199,7 +199,14 @@ class AppImageManager(SoftwareManager):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
def get_info(self, pkg: AppImage) -> dict:
|
def get_info(self, pkg: AppImage) -> dict:
|
||||||
return pkg.get_data_to_cache()
|
data = pkg.get_data_to_cache()
|
||||||
|
|
||||||
|
if data.get('url_download'):
|
||||||
|
size = self.http_client.get_content_length(data['url_download'])
|
||||||
|
if size:
|
||||||
|
data['size'] = size
|
||||||
|
|
||||||
|
return data
|
||||||
|
|
||||||
def get_history(self, pkg: AppImage) -> PackageHistory:
|
def get_history(self, pkg: AppImage) -> PackageHistory:
|
||||||
history = []
|
history = []
|
||||||
|
|||||||
@@ -84,8 +84,7 @@ class AdaptableFileDownloader(FileDownloader):
|
|||||||
downloader = 'wget'
|
downloader = 'wget'
|
||||||
|
|
||||||
file_size = self.http_client.get_content_length(file_url)
|
file_size = self.http_client.get_content_length(file_url)
|
||||||
file_size = int(file_size) / (1024 ** 2) if file_size else None
|
msg = bold('[{}] ').format(downloader) + self.i18n['downloading'] + ' ' + bold(file_url.split('/')[-1]) + (' ' + file_size if file_size else '')
|
||||||
msg = bold('[{}] ').format(downloader) + self.i18n['downloading'] + ' ' + bold(file_url.split('/')[-1]) + (' ( {0:.2f} Mb )'.format(file_size) if file_size else '')
|
|
||||||
watcher.change_substatus(msg)
|
watcher.change_substatus(msg)
|
||||||
success = handler.handle(process)
|
success = handler.handle(process)
|
||||||
except:
|
except:
|
||||||
@@ -101,8 +100,6 @@ class AdaptableFileDownloader(FileDownloader):
|
|||||||
|
|
||||||
return success
|
return success
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def is_multithreaded(self) -> bool:
|
def is_multithreaded(self) -> bool:
|
||||||
return self.multithread_enabled and self.is_aria2c_available()
|
return self.multithread_enabled and self.is_aria2c_available()
|
||||||
|
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ class InfoDialog(QDialog):
|
|||||||
text.setStyleSheet("width: 400px")
|
text.setStyleSheet("width: 400px")
|
||||||
text.setReadOnly(True)
|
text.setReadOnly(True)
|
||||||
|
|
||||||
label = QLabel("{}: ".format(i18n.get(i18n_key, i18n.get(attr.lower(), attr))).capitalize())
|
label = QLabel(i18n.get(i18n_key, i18n.get(attr.lower(), attr)).capitalize())
|
||||||
label.setStyleSheet("font-weight: bold")
|
label.setStyleSheet("font-weight: bold")
|
||||||
|
|
||||||
self.gbox_info_layout.addWidget(label, idx, 0)
|
self.gbox_info_layout.addWidget(label, idx, 0)
|
||||||
|
|||||||
@@ -118,4 +118,5 @@ manage_window.bt_settings.tooltip=Click here to open extra actions
|
|||||||
downloading=Downloading
|
downloading=Downloading
|
||||||
console.install_logs.path=Installation logs can be found at {}
|
console.install_logs.path=Installation logs can be found at {}
|
||||||
author=author
|
author=author
|
||||||
source=source
|
source=source
|
||||||
|
size=size
|
||||||
@@ -120,4 +120,5 @@ manage_window.bt_settings.tooltip=Haga clic aquí para abrir acciones adicionale
|
|||||||
downloading=Descargando
|
downloading=Descargando
|
||||||
console.install_logs.path=Los registros de instalación se pueden encontrar en {}
|
console.install_logs.path=Los registros de instalación se pueden encontrar en {}
|
||||||
author=autor
|
author=autor
|
||||||
source=origen
|
source=origen
|
||||||
|
size=tamaño
|
||||||
@@ -120,4 +120,5 @@ manage_window.bt_settings.tooltip=Clique aqui para abrir ações adicionais
|
|||||||
downloading=Baixando
|
downloading=Baixando
|
||||||
console.install_logs.path=Os registros de instalação podem ser encontrados em {}
|
console.install_logs.path=Os registros de instalação podem ser encontrados em {}
|
||||||
author=autor
|
author=autor
|
||||||
source=fonte
|
source=fonte
|
||||||
|
size=tamanho
|
||||||
Reference in New Issue
Block a user