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