Files
FastAnime/fastanime/View/DownloadsScreen/download_screen.py

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"),
# )