mirror of
https://github.com/Benexl/FastAnime.git
synced 2025-12-25 12:24:52 -08:00
42 lines
1.7 KiB
Python
42 lines
1.7 KiB
Python
from kivy.clock import Clock
|
|
from kivy.properties import ObjectProperty
|
|
from kivy.utils import format_bytes_to_human
|
|
|
|
from ...View.base_screen import BaseScreenView
|
|
from .components.task_card import TaskCard
|
|
|
|
|
|
class DownloadsScreenView(BaseScreenView):
|
|
main_container = ObjectProperty()
|
|
progress_bar = ObjectProperty()
|
|
download_progress_label = ObjectProperty()
|
|
|
|
def new_download_task(self, filename):
|
|
Clock.schedule_once(
|
|
lambda _: self.main_container.add_widget(TaskCard(filename))
|
|
)
|
|
|
|
def on_episode_download_progress(self, data):
|
|
percentage_completion = round(
|
|
(data.get("downloaded_bytes", 0) / data.get("total_bytes", 0)) * 100
|
|
)
|
|
speed = format_bytes_to_human(data.get("speed", 0)) if data.get("speed") else 0
|
|
progress_text = f"Downloading: {data.get('filename', 'unknown')} ({format_bytes_to_human(data.get('downloaded_bytes',0)) if data.get('downloaded_bytes') else 0}/{format_bytes_to_human(data.get('total_bytes',0)) if data.get('total_bytes') else 0})\n Elapsed: {round(data.get('elapsed',0)) if data.get('elapsed') else 0}s ETA: {data.get('eta',0) if data.get('eta') else 0}s Speed: {speed}/s"
|
|
|
|
self.progress_bar.value = max(min(percentage_completion, 100), 0)
|
|
self.download_progress_label.text = progress_text
|
|
|
|
def update_layout(self, widget):
|
|
self.user_anime_list_container.add_widget(widget)
|
|
|
|
#
|
|
# d["filename"],
|
|
# d["downloaded_bytes"],
|
|
# d["total_bytes"],
|
|
# d.get("total_bytes"),
|
|
# d["elapsed"],
|
|
# d["eta"],
|
|
# d["speed"],
|
|
# d.get("percent"),
|
|
# )
|