diff --git a/app/modules/qbittorrent/__init__.py b/app/modules/qbittorrent/__init__.py index 5e83af43..4a8dc618 100644 --- a/app/modules/qbittorrent/__init__.py +++ b/app/modules/qbittorrent/__init__.py @@ -165,6 +165,8 @@ class QbittorrentModule(_ModuleBase): state="paused" if torrent.get('state') == "paused" else "downloading", dlspeed=StringUtils.str_filesize(torrent.get('dlspeed')), upspeed=StringUtils.str_filesize(torrent.get('upspeed')), + left_time=StringUtils.str_secends( + (torrent.get('total_size') - torrent.get('completed')) / torrent.get('dlspeed')) )) else: return None diff --git a/app/modules/transmission/__init__.py b/app/modules/transmission/__init__.py index f055168b..df817167 100644 --- a/app/modules/transmission/__init__.py +++ b/app/modules/transmission/__init__.py @@ -151,6 +151,7 @@ class TransmissionModule(_ModuleBase): state="paused" if torrent.status == "stopped" else "downloading", dlspeed=StringUtils.str_filesize(dlspeed), upspeed=StringUtils.str_filesize(upspeed), + left_time=StringUtils.str_secends(torrent.left_until_done / dlspeed) )) else: return None diff --git a/app/plugins/mediasyncdel/__init__.py b/app/plugins/mediasyncdel/__init__.py index 84f5d0b6..12cc8f70 100644 --- a/app/plugins/mediasyncdel/__init__.py +++ b/app/plugins/mediasyncdel/__init__.py @@ -289,7 +289,7 @@ class MediaSyncDel(_PluginBase): { 'component': 'VAlert', 'props': { - 'text': '关于路径映射:' + 'text': '关于路径映射(转移后文件):' 'emby:/data/series/A.mp4,' 'moviepilot:/mnt/link/series/A.mp4。' '路径映射填/data:/mnt/link。' diff --git a/app/schemas/transfer.py b/app/schemas/transfer.py index 588f245f..740e2ad8 100644 --- a/app/schemas/transfer.py +++ b/app/schemas/transfer.py @@ -31,6 +31,7 @@ class DownloadingTorrent(BaseModel): dlspeed: Optional[str] = None media: Optional[dict] = {} userid: Optional[str] = None + left_time: Optional[str] = None class TransferInfo(BaseModel): diff --git a/app/utils/string.py b/app/utils/string.py index bfa06154..1425bdbc 100644 --- a/app/utils/string.py +++ b/app/utils/string.py @@ -63,6 +63,23 @@ class StringUtils: b, u = d[index] return str(round(time_sec / (b + 1))) + u + @staticmethod + def str_secends(time_sec: Union[str, int, float]) -> str: + """ + 将秒转为时分秒字符串 + """ + hours = time_sec // 3600 + remainder_seconds = time_sec % 3600 + minutes = remainder_seconds // 60 + seconds = remainder_seconds % 60 + + time: str = str(int(seconds)) + '秒' + if minutes: + time = str(int(minutes)) + '分' + time + if hours: + time = str(int(hours)) + '时' + time + return time + @staticmethod def is_chinese(word: Union[str, list]) -> bool: """