fix download
This commit is contained in:
parent
b6d957c7d9
commit
5ceaf94169
@ -6,9 +6,11 @@ from app import schemas
|
|||||||
from app.chain.douban import DoubanChain
|
from app.chain.douban import DoubanChain
|
||||||
from app.chain.download import DownloadChain
|
from app.chain.download import DownloadChain
|
||||||
from app.chain.media import MediaChain
|
from app.chain.media import MediaChain
|
||||||
from app.core.context import MediaInfo
|
from app.core.context import MediaInfo, Context, TorrentInfo
|
||||||
from app.core.metainfo import MetaInfo
|
from app.core.metainfo import MetaInfo
|
||||||
from app.core.security import verify_token
|
from app.core.security import verify_token
|
||||||
|
from app.db.models.user import User
|
||||||
|
from app.db.userauth import get_current_active_superuser
|
||||||
from app.schemas import NotExistMediaInfo, MediaType
|
from app.schemas import NotExistMediaInfo, MediaType
|
||||||
|
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
@ -23,6 +25,25 @@ async def read_downloading(
|
|||||||
return DownloadChain().downloading()
|
return DownloadChain().downloading()
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/", summary="添加下载", response_model=schemas.Response)
|
||||||
|
async def add_downloading(
|
||||||
|
media_in: schemas.MediaInfo,
|
||||||
|
torrent_in: schemas.TorrentInfo,
|
||||||
|
current_user: User = Depends(get_current_active_superuser)) -> Any:
|
||||||
|
"""
|
||||||
|
添加下载任务
|
||||||
|
"""
|
||||||
|
context = Context(
|
||||||
|
meta_info=MetaInfo(title=torrent_in.title, subtitle=torrent_in.description),
|
||||||
|
media_info=MediaInfo().from_dict(media_in.dict()),
|
||||||
|
torrent_info=TorrentInfo(**torrent_in.dict())
|
||||||
|
)
|
||||||
|
did = DownloadChain().download_single(context=context, userid=current_user.name)
|
||||||
|
return schemas.Response(success=True if did else False, data={
|
||||||
|
"download_id": did
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
@router.post("/notexists", summary="查询缺失媒体信息", response_model=List[NotExistMediaInfo])
|
@router.post("/notexists", summary="查询缺失媒体信息", response_model=List[NotExistMediaInfo])
|
||||||
async def exists(media_in: schemas.MediaInfo,
|
async def exists(media_in: schemas.MediaInfo,
|
||||||
_: schemas.TokenPayload = Depends(verify_token)) -> Any:
|
_: schemas.TokenPayload = Depends(verify_token)) -> Any:
|
||||||
|
@ -42,7 +42,7 @@ class DownloadChain(ChainBase):
|
|||||||
msg_text = f"{msg_text}\n种子:{torrent.title}"
|
msg_text = f"{msg_text}\n种子:{torrent.title}"
|
||||||
if torrent.seeders:
|
if torrent.seeders:
|
||||||
msg_text = f"{msg_text}\n做种数:{torrent.seeders}"
|
msg_text = f"{msg_text}\n做种数:{torrent.seeders}"
|
||||||
msg_text = f"{msg_text}\n促销:{torrent.get_volume_factor_string()}"
|
msg_text = f"{msg_text}\n促销:{torrent.volume_factor}"
|
||||||
if torrent.hit_and_run:
|
if torrent.hit_and_run:
|
||||||
msg_text = f"{msg_text}\nHit&Run:是"
|
msg_text = f"{msg_text}\nHit&Run:是"
|
||||||
if torrent.description:
|
if torrent.description:
|
||||||
|
@ -62,7 +62,7 @@ class TorrentInfo:
|
|||||||
setattr(self, key, value)
|
setattr(self, key, value)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_free_string(upload_volume_factor, download_volume_factor):
|
def get_free_string(upload_volume_factor: float, download_volume_factor: float) -> str:
|
||||||
"""
|
"""
|
||||||
计算促销类型
|
计算促销类型
|
||||||
"""
|
"""
|
||||||
@ -80,7 +80,8 @@ class TorrentInfo:
|
|||||||
}
|
}
|
||||||
return free_strs.get('%.1f %.1f' % (upload_volume_factor, download_volume_factor), "未知")
|
return free_strs.get('%.1f %.1f' % (upload_volume_factor, download_volume_factor), "未知")
|
||||||
|
|
||||||
def get_volume_factor_string(self):
|
@property
|
||||||
|
def volume_factor(self):
|
||||||
"""
|
"""
|
||||||
返回促销信息
|
返回促销信息
|
||||||
"""
|
"""
|
||||||
@ -90,6 +91,8 @@ class TorrentInfo:
|
|||||||
"""
|
"""
|
||||||
返回字典
|
返回字典
|
||||||
"""
|
"""
|
||||||
|
dicts = asdict(self)
|
||||||
|
dicts["volume_factor"] = self.volume_factor
|
||||||
return asdict(self)
|
return asdict(self)
|
||||||
|
|
||||||
|
|
||||||
|
@ -447,4 +447,5 @@ class MetaBase(object):
|
|||||||
dicts = asdict(self)
|
dicts = asdict(self)
|
||||||
dicts["type"] = self.type.value if self.type else None
|
dicts["type"] = self.type.value if self.type else None
|
||||||
dicts["season_episode"] = self.season_episode
|
dicts["season_episode"] = self.season_episode
|
||||||
|
dicts["edtion"] = self.edtion
|
||||||
return dicts
|
return dicts
|
||||||
|
@ -274,7 +274,7 @@ class Slack:
|
|||||||
f"{meta.resource_term} " \
|
f"{meta.resource_term} " \
|
||||||
f"{meta.release_group}"
|
f"{meta.release_group}"
|
||||||
title = re.sub(r"\s+", " ", title).strip()
|
title = re.sub(r"\s+", " ", title).strip()
|
||||||
free = torrent.get_volume_factor_string()
|
free = torrent.volume_factor
|
||||||
seeder = f"{torrent.seeders}↑"
|
seeder = f"{torrent.seeders}↑"
|
||||||
description = torrent.description
|
description = torrent.description
|
||||||
text = f"{index}. 【{site_name}】<{link}|{title}> " \
|
text = f"{index}. 【{site_name}】<{link}|{title}> " \
|
||||||
|
@ -152,7 +152,7 @@ class Telegram(metaclass=Singleton):
|
|||||||
f"{meta.resource_term} " \
|
f"{meta.resource_term} " \
|
||||||
f"{meta.release_group}"
|
f"{meta.release_group}"
|
||||||
title = re.sub(r"\s+", " ", title).strip()
|
title = re.sub(r"\s+", " ", title).strip()
|
||||||
free = torrent.get_volume_factor_string()
|
free = torrent.volume_factor
|
||||||
seeder = f"{torrent.seeders}↑"
|
seeder = f"{torrent.seeders}↑"
|
||||||
description = torrent.description
|
description = torrent.description
|
||||||
caption = f"{caption}\n{index}.【{site_name}】[{title}]({link}) " \
|
caption = f"{caption}\n{index}.【{site_name}】[{title}]({link}) " \
|
||||||
|
@ -218,7 +218,7 @@ class WeChat(metaclass=Singleton):
|
|||||||
f"{meta.resource_term} " \
|
f"{meta.resource_term} " \
|
||||||
f"{meta.release_group} " \
|
f"{meta.release_group} " \
|
||||||
f"{StringUtils.str_filesize(torrent.size)} " \
|
f"{StringUtils.str_filesize(torrent.size)} " \
|
||||||
f"{torrent.get_volume_factor_string()} " \
|
f"{torrent.volume_factor} " \
|
||||||
f"{torrent.seeders}↑"
|
f"{torrent.seeders}↑"
|
||||||
title = re.sub(r"\s+", " ", title).strip()
|
title = re.sub(r"\s+", " ", title).strip()
|
||||||
articles.append({
|
articles.append({
|
||||||
|
@ -177,6 +177,8 @@ class TorrentInfo(BaseModel):
|
|||||||
labels: Optional[list] = []
|
labels: Optional[list] = []
|
||||||
# 种子优先级
|
# 种子优先级
|
||||||
pri_order: Optional[int] = 0
|
pri_order: Optional[int] = 0
|
||||||
|
# 促销
|
||||||
|
volume_factor: Optional[str] = None
|
||||||
|
|
||||||
|
|
||||||
class Context(BaseModel):
|
class Context(BaseModel):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user