feat(event): add source tracking in download event

This commit is contained in:
InfinityPacer
2024-12-10 18:50:50 +08:00
parent eea8060182
commit 6d9595b643
3 changed files with 27 additions and 5 deletions
+6 -3
View File
@@ -345,7 +345,8 @@ class DownloadChain(ChainBase):
username=username, username=username,
channel=channel.value if channel else None, channel=channel.value if channel else None,
date=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), date=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),
media_category=media_category media_category=media_category,
note={"source": source}
) )
# 登记下载文件 # 登记下载文件
@@ -383,7 +384,8 @@ class DownloadChain(ChainBase):
"context": context, "context": context,
"username": username, "username": username,
"downloader": _downloader, "downloader": _downloader,
"episodes": episodes "episodes": episodes,
"source": source
}) })
else: else:
# 下载失败 # 下载失败
@@ -489,7 +491,8 @@ class DownloadChain(ChainBase):
logger.debug(f"Initial contexts: {len(contexts)} items, Downloader: {downloader}") logger.debug(f"Initial contexts: {len(contexts)} items, Downloader: {downloader}")
event_data = ResourceSelectionEventData( event_data = ResourceSelectionEventData(
contexts=contexts, contexts=contexts,
downloader=downloader downloader=downloader,
origin=source
) )
event = eventmanager.send_event(ChainEventType.ResourceSelection, event_data) event = eventmanager.send_event(ChainEventType.ResourceSelection, event_data)
# 如果事件修改了上下文数据,使用更新后的数据 # 如果事件修改了上下文数据,使用更新后的数据
+20 -2
View File
@@ -391,6 +391,15 @@ class SubscribeChain(ChainBase, metaclass=Singleton):
continue continue
# 自动下载 # 自动下载
source_keyword = {
'id': subscribe.id,
'name': subscribe.name,
'year': subscribe.year,
'type': subscribe.type,
'season': subscribe.season,
'tmdbid': subscribe.tmdbid
}
source = f"Subscribe|{source_keyword}"
downloads, lefts = self.downloadchain.batch_download( downloads, lefts = self.downloadchain.batch_download(
contexts=matched_contexts, contexts=matched_contexts,
no_exists=no_exists, no_exists=no_exists,
@@ -399,7 +408,7 @@ class SubscribeChain(ChainBase, metaclass=Singleton):
save_path=subscribe.save_path, save_path=subscribe.save_path,
media_category=subscribe.media_category, media_category=subscribe.media_category,
downloader=subscribe.downloader, downloader=subscribe.downloader,
source="Subscribe" source=source
) )
# 判断是否应完成订阅 # 判断是否应完成订阅
@@ -784,6 +793,15 @@ class SubscribeChain(ChainBase, metaclass=Singleton):
# 开始批量择优下载 # 开始批量择优下载
logger.info(f'{mediainfo.title_year} 匹配完成,共匹配到{len(_match_context)}个资源') logger.info(f'{mediainfo.title_year} 匹配完成,共匹配到{len(_match_context)}个资源')
source_keyword = {
'id': subscribe.id,
'name': subscribe.name,
'year': subscribe.year,
'type': subscribe.type,
'season': subscribe.season,
'tmdbid': subscribe.tmdbid
}
source = f"Subscribe|{source_keyword}"
downloads, lefts = self.downloadchain.batch_download(contexts=_match_context, downloads, lefts = self.downloadchain.batch_download(contexts=_match_context,
no_exists=no_exists, no_exists=no_exists,
userid=subscribe.username, userid=subscribe.username,
@@ -791,7 +809,7 @@ class SubscribeChain(ChainBase, metaclass=Singleton):
save_path=subscribe.save_path, save_path=subscribe.save_path,
media_category=subscribe.media_category, media_category=subscribe.media_category,
downloader=subscribe.downloader, downloader=subscribe.downloader,
source="Subscribe") source=source)
# 判断是否要完成订阅 # 判断是否要完成订阅
self.finish_subscribe_or_not(subscribe=subscribe, meta=meta, mediainfo=mediainfo, self.finish_subscribe_or_not(subscribe=subscribe, meta=meta, mediainfo=mediainfo,
downloads=downloads, lefts=lefts) downloads=downloads, lefts=lefts)
+1
View File
@@ -165,6 +165,7 @@ class ResourceSelectionEventData(BaseModel):
# 输入参数 # 输入参数
contexts: Any = Field(None, description="待选择的资源上下文列表") contexts: Any = Field(None, description="待选择的资源上下文列表")
downloader: Optional[str] = Field(None, description="下载器") downloader: Optional[str] = Field(None, description="下载器")
origin: Optional[str] = Field(None, description="来源")
# 输出参数 # 输出参数
updated: bool = Field(False, description="是否已更新") updated: bool = Field(False, description="是否已更新")