更新
This commit is contained in:
parent
e970f765e9
commit
2865964468
31
pikpakFs.py
31
pikpakFs.py
@ -8,6 +8,12 @@ import logging
|
||||
from enum import Enum
|
||||
import asyncio
|
||||
|
||||
class DownloadTaskStatus(Enum):
|
||||
pending = "pending"
|
||||
downloading = "downloading"
|
||||
done = "done"
|
||||
error = "error"
|
||||
stopped = "stopped"
|
||||
|
||||
class PKTaskStatus(Enum):
|
||||
pending_offline_download = "pending"
|
||||
@ -16,6 +22,7 @@ class PKTaskStatus(Enum):
|
||||
downloading = "downloading"
|
||||
done = "done"
|
||||
error = "error"
|
||||
stopped = "stopped"
|
||||
|
||||
class PkTask:
|
||||
id = 0
|
||||
@ -33,6 +40,13 @@ class PkTask:
|
||||
self.url = None
|
||||
self.pkTaskId = None
|
||||
|
||||
class DownloadTask:
|
||||
def __init__(self, nodeId : str, pkTaskId : str, status : DownloadTaskStatus = DownloadTaskStatus.pending):
|
||||
self.status = status
|
||||
self.recoverStatus = status
|
||||
self.pkTaskId = pkTaskId
|
||||
self.nodeId = nodeId
|
||||
|
||||
class PathWalker():
|
||||
def __init__(self, pathStr : str, sep : str = "/"):
|
||||
self.__pathSpots : list[str] = []
|
||||
@ -135,26 +149,23 @@ class PKFs:
|
||||
waitTime = waitTime * 1.5
|
||||
|
||||
async def _task_worker(self, task : PkTask):
|
||||
while task.status != PKTaskStatus.done and task.status != PKTaskStatus.error:
|
||||
while task.status not in {PKTaskStatus.done, PKTaskStatus.error, PKTaskStatus.stopped}:
|
||||
try:
|
||||
if task.status == PKTaskStatus.pending_offline_download:
|
||||
await self._task_pending(task)
|
||||
continue
|
||||
|
||||
if task.status == PKTaskStatus.offline_downloading:
|
||||
elif task.status == PKTaskStatus.offline_downloading:
|
||||
await self._task_offline_downloading(task)
|
||||
continue
|
||||
|
||||
if task.status == PKTaskStatus.pending_download:
|
||||
elif task.status == PKTaskStatus.pending_download:
|
||||
task.status = PKTaskStatus.done
|
||||
pass
|
||||
|
||||
else:
|
||||
break
|
||||
except Exception as e:
|
||||
logging.error(f"task failed, exception occured: {e}")
|
||||
logging.error(f"task failed, exception occurred: {e}")
|
||||
task.recoverStatus = task.status
|
||||
task.status = PKTaskStatus.error
|
||||
|
||||
|
||||
|
||||
def RunTask(self, task : PkTask):
|
||||
self.tasks.append(task)
|
||||
if task.runningTask is None or task.runningTask.done():
|
||||
|
@ -6,9 +6,12 @@ Todo:
|
||||
|
||||
- [x] 实现自定义根路径
|
||||
- [x] 异步输出频率过高会导致卡死,似乎会多创建一个线程
|
||||
- [ ] 实现Task队列管理
|
||||
- [ ] 自动刷新文件系统缓存
|
||||
- [ ] 分析以下方法的返回值:offline_file_info、offline_list
|
||||
- [x] 实现Task队列管理
|
||||
- [x] 自动刷新文件系统缓存
|
||||
- [x] 分析以下方法的返回值:offline_file_info、offline_list
|
||||
- [ ] 实现本地下载队列(多文件,文件夹)
|
||||
- [ ] 实现任务暂停、继续、恢复
|
||||
- [ ] 持久化数据
|
||||
|
||||
|
||||
### 记录
|
||||
|
Loading…
x
Reference in New Issue
Block a user