meta property
This commit is contained in:
@@ -76,24 +76,24 @@ class DoubanSyncChain(ChainBase):
|
||||
# 查询缺失的媒体信息
|
||||
exist_flag, no_exists = self.downloadchain.get_no_exists_info(meta=meta, mediainfo=mediainfo)
|
||||
if exist_flag:
|
||||
logger.info(f'{mediainfo.get_title_string()} 媒体库中已存在')
|
||||
logger.info(f'{mediainfo.title_year} 媒体库中已存在')
|
||||
continue
|
||||
logger.info(f'{mediainfo.get_title_string()} 媒体库中不存在,开始搜索 ...')
|
||||
logger.info(f'{mediainfo.title_year} 媒体库中不存在,开始搜索 ...')
|
||||
# 搜索
|
||||
contexts = self.searchchain.process(meta=meta,
|
||||
mediainfo=mediainfo,
|
||||
no_exists=no_exists)
|
||||
if not contexts:
|
||||
logger.warn(f'{mediainfo.get_title_string()} 未搜索到资源')
|
||||
logger.warn(f'{mediainfo.title_year} 未搜索到资源')
|
||||
continue
|
||||
# 自动下载
|
||||
downloads, lefts = self.downloadchain.batch_download(contexts=contexts, need_tvs=no_exists)
|
||||
if downloads and not lefts:
|
||||
# 全部下载完成
|
||||
logger.info(f'{mediainfo.get_title_string()} 下载完成')
|
||||
logger.info(f'{mediainfo.title_year} 下载完成')
|
||||
else:
|
||||
# 未完成下载
|
||||
logger.info(f'{mediainfo.get_title_string()} 未下载未完整,添加订阅 ...')
|
||||
logger.info(f'{mediainfo.title_year} 未下载未完整,添加订阅 ...')
|
||||
# 添加订阅
|
||||
self.subscribechain.process(title=mediainfo.title,
|
||||
year=mediainfo.year,
|
||||
|
@@ -29,8 +29,8 @@ class DownloadChain(ChainBase):
|
||||
msg_text = ""
|
||||
if torrent.site_name:
|
||||
msg_text = f"站点:{torrent.site_name}"
|
||||
if meta.get_resource_type_string():
|
||||
msg_text = f"{msg_text}\n质量:{meta.get_resource_type_string()}"
|
||||
if meta.resource:
|
||||
msg_text = f"{msg_text}\n质量:{meta.resource}"
|
||||
if torrent.size:
|
||||
if str(torrent.size).isdigit():
|
||||
size = StringUtils.str_filesize(torrent.size)
|
||||
@@ -50,8 +50,8 @@ class DownloadChain(ChainBase):
|
||||
torrent.description = re.sub(r'<[^>]+>', '', description)
|
||||
msg_text = f"{msg_text}\n描述:{torrent.description}"
|
||||
|
||||
self.post_message(title=f"{mediainfo.get_title_string()}"
|
||||
f"{meta.get_season_episode_string()} 开始下载",
|
||||
self.post_message(title=f"{mediainfo.title_year}"
|
||||
f"{meta.season_episode} 开始下载",
|
||||
text=msg_text,
|
||||
image=mediainfo.get_message_image(),
|
||||
userid=userid)
|
||||
@@ -124,11 +124,11 @@ class DownloadChain(ChainBase):
|
||||
self.download_added(context=_context, torrent_path=_torrent_file)
|
||||
else:
|
||||
# 下载失败
|
||||
logger.error(f"{_media.get_title_string()} 添加下载任务失败:"
|
||||
logger.error(f"{_media.title_year} 添加下载任务失败:"
|
||||
f"{_torrent.title} - {_torrent.enclosure},{error_msg}")
|
||||
self.post_message(
|
||||
title="添加下载任务失败:%s %s"
|
||||
% (_media.get_title_string(), _meta.get_season_episode_string()),
|
||||
% (_media.title_year, _meta.get_season_episode_string()),
|
||||
text=f"站点:{_torrent.site_name}\n"
|
||||
f"种子名称:{_meta.org_string}\n"
|
||||
f"种子链接:{_torrent.enclosure}\n"
|
||||
@@ -208,8 +208,8 @@ class DownloadChain(ChainBase):
|
||||
torrent = context.torrent_info
|
||||
if media.type != MediaType.TV:
|
||||
continue
|
||||
item_season = meta.get_season_list()
|
||||
if meta.get_episode_list():
|
||||
item_season = meta.season_list
|
||||
if meta.episode_list:
|
||||
continue
|
||||
if need_tmdbid == media.tmdb_id:
|
||||
if set(item_season).issubset(set(need_season)):
|
||||
@@ -259,10 +259,10 @@ class DownloadChain(ChainBase):
|
||||
if context in downloaded_list:
|
||||
continue
|
||||
# 只处理单季含集的种子
|
||||
item_season = meta.get_season_list()
|
||||
item_season = meta.season_list
|
||||
if len(item_season) != 1 or item_season[0] != need_season:
|
||||
continue
|
||||
item_episodes = meta.get_episode_list()
|
||||
item_episodes = meta.episode_list
|
||||
if not item_episodes:
|
||||
continue
|
||||
# 为需要集的子集则下载
|
||||
@@ -301,10 +301,10 @@ class DownloadChain(ChainBase):
|
||||
break
|
||||
# 选中一个单季整季的或单季包括需要的所有集的
|
||||
if media.tmdb_id == need_tmdbid \
|
||||
and (not meta.get_episode_list()
|
||||
or set(meta.get_episode_list()).intersection(set(need_episodes))) \
|
||||
and len(meta.get_season_list()) == 1 \
|
||||
and meta.get_season_list()[0] == need_season:
|
||||
and (not meta.episode_list
|
||||
or set(meta.episode_list).intersection(set(need_episodes))) \
|
||||
and len(meta.season_list) == 1 \
|
||||
and meta.season_list[0] == need_season:
|
||||
# 检查种子看是否有需要的集
|
||||
torrent_path, torrent_files = __download_torrent(torrent)
|
||||
if not torrent_path:
|
||||
@@ -377,20 +377,20 @@ class DownloadChain(ChainBase):
|
||||
# 电影
|
||||
exists_movies: Optional[ExistMediaInfo] = self.media_exists(mediainfo)
|
||||
if exists_movies:
|
||||
logger.info(f"媒体库中已存在电影:{mediainfo.get_title_string()}")
|
||||
logger.info(f"媒体库中已存在电影:{mediainfo.title_year}")
|
||||
return True, {}
|
||||
return False, {}
|
||||
else:
|
||||
if not mediainfo.seasons:
|
||||
# 补充媒体信息
|
||||
mediainfo: MediaInfo = self.recognize_media(meta=MetaInfo(title=mediainfo.get_title_string()),
|
||||
mediainfo: MediaInfo = self.recognize_media(meta=MetaInfo(title=mediainfo.title_year),
|
||||
mtype=mediainfo.type,
|
||||
tmdbid=mediainfo.tmdb_id)
|
||||
if not mediainfo:
|
||||
logger.error(f"媒体信息识别失败!")
|
||||
return False, {}
|
||||
if not mediainfo.seasons:
|
||||
logger.error(f"媒体信息中没有季集信息:{mediainfo.get_title_string()}")
|
||||
logger.error(f"媒体信息中没有季集信息:{mediainfo.title_year}")
|
||||
return False, {}
|
||||
# 电视剧
|
||||
exists_tvs: Optional[ExistMediaInfo] = self.media_exists(mediainfo)
|
||||
@@ -399,7 +399,7 @@ class DownloadChain(ChainBase):
|
||||
for season, episodes in mediainfo.seasons.items():
|
||||
# 全季不存在
|
||||
if meta.begin_season \
|
||||
and season not in meta.get_season_list():
|
||||
and season not in meta.season_list:
|
||||
continue
|
||||
__append_no_exists(_season=season, _episodes=[], _total=len(episodes), _start=min(episodes))
|
||||
return False, no_exists
|
||||
@@ -407,7 +407,7 @@ class DownloadChain(ChainBase):
|
||||
# 存在一些,检查缺失的季集
|
||||
for season, episodes in mediainfo.seasons.items():
|
||||
if meta.begin_season \
|
||||
and season not in meta.get_season_list():
|
||||
and season not in meta.season_list:
|
||||
continue
|
||||
exist_seasons = exists_tvs.seasons
|
||||
if exist_seasons.get(season):
|
||||
|
@@ -27,7 +27,7 @@ class IdentifyChain(ChainBase):
|
||||
if not mediainfo:
|
||||
logger.warn(f'{title} 未识别到媒体信息')
|
||||
return Context(meta=metainfo)
|
||||
logger.info(f'{title} 识别到媒体信息:{mediainfo.type.value} {mediainfo.get_title_string()}')
|
||||
logger.info(f'{title} 识别到媒体信息:{mediainfo.type.value} {mediainfo.title_year}')
|
||||
# 更新媒体图片
|
||||
self.obtain_image(mediainfo=mediainfo)
|
||||
# 返回上下文
|
||||
|
@@ -110,14 +110,14 @@ class SearchChain(ChainBase):
|
||||
if torrent_meta.year != mediainfo.year:
|
||||
continue
|
||||
# 比对标题
|
||||
if torrent_meta.get_name() in [mediainfo.title, mediainfo.original_title]:
|
||||
if torrent_meta.name in [mediainfo.title, mediainfo.original_title]:
|
||||
logger.info(f'{mediainfo.title} 匹配到资源:{torrent.site_name} - {torrent.title}')
|
||||
_match_torrents.append(torrent)
|
||||
continue
|
||||
# 比对别名和译名
|
||||
for name in mediainfo.names:
|
||||
if StringUtils.clear(name).strip().upper() == \
|
||||
StringUtils.clear(torrent_meta.get_name()).strip().upper():
|
||||
StringUtils.clear(torrent_meta.name).strip().upper():
|
||||
logger.info(f'{mediainfo.title} 匹配到资源:{torrent.site_name} - {torrent.title}')
|
||||
_match_torrents.append(torrent)
|
||||
break
|
||||
|
@@ -86,17 +86,17 @@ class SubscribeChain(ChainBase):
|
||||
# 添加订阅
|
||||
sid, err_msg = self.subscribes.add(mediainfo, season=season, **kwargs)
|
||||
if not sid:
|
||||
logger.error(f'{mediainfo.get_title_string()} {err_msg}')
|
||||
logger.error(f'{mediainfo.title_year} {err_msg}')
|
||||
# 发回原用户
|
||||
self.post_message(title=f"{mediainfo.get_title_string()}{metainfo.get_season_string()} "
|
||||
self.post_message(title=f"{mediainfo.title_year}{metainfo.season} "
|
||||
f"添加订阅失败!",
|
||||
text=f"{err_msg}",
|
||||
image=mediainfo.get_message_image(),
|
||||
userid=userid)
|
||||
else:
|
||||
logger.info(f'{mediainfo.get_title_string()}{metainfo.get_season_string()} 添加订阅成功')
|
||||
logger.info(f'{mediainfo.title_year}{metainfo.season} 添加订阅成功')
|
||||
# 广而告之
|
||||
self.post_message(title=f"{mediainfo.get_title_string()}{metainfo.get_season_string()} 已添加订阅",
|
||||
self.post_message(title=f"{mediainfo.title_year}{metainfo.season} 已添加订阅",
|
||||
text=f"评分:{mediainfo.vote_average},来自用户:{username or userid}",
|
||||
image=mediainfo.get_message_image())
|
||||
# 返回结果
|
||||
@@ -132,10 +132,10 @@ class SubscribeChain(ChainBase):
|
||||
# 查询缺失的媒体信息
|
||||
exist_flag, no_exists = self.downloadchain.get_no_exists_info(meta=meta, mediainfo=mediainfo)
|
||||
if exist_flag:
|
||||
logger.info(f'{mediainfo.get_title_string()} 媒体库中已存在,完成订阅')
|
||||
logger.info(f'{mediainfo.title_year} 媒体库中已存在,完成订阅')
|
||||
self.subscribes.delete(subscribe.id)
|
||||
# 发送通知
|
||||
self.post_message(title=f'{mediainfo.get_title_string()}{meta.get_season_string()} 已完成订阅',
|
||||
self.post_message(title=f'{mediainfo.title_year}{meta.season} 已完成订阅',
|
||||
image=mediainfo.get_message_image())
|
||||
continue
|
||||
# 使用订阅的总集数和开始集数替换no_exists
|
||||
@@ -159,14 +159,14 @@ class SubscribeChain(ChainBase):
|
||||
downloads, lefts = self.downloadchain.batch_download(contexts=contexts, need_tvs=no_exists)
|
||||
if downloads and not lefts:
|
||||
# 全部下载完成
|
||||
logger.info(f'{mediainfo.get_title_string()} 下载完成,完成订阅')
|
||||
logger.info(f'{mediainfo.title_year} 下载完成,完成订阅')
|
||||
self.subscribes.delete(subscribe.id)
|
||||
# 发送通知
|
||||
self.post_message(title=f'{mediainfo.get_title_string()}{meta.get_season_string()} 已完成订阅',
|
||||
self.post_message(title=f'{mediainfo.title_year}{meta.season} 已完成订阅',
|
||||
image=mediainfo.get_message_image())
|
||||
else:
|
||||
# 未完成下载
|
||||
logger.info(f'{mediainfo.get_title_string()} 未下载未完整,继续订阅 ...')
|
||||
logger.info(f'{mediainfo.title_year} 未下载未完整,继续订阅 ...')
|
||||
|
||||
def refresh(self):
|
||||
"""
|
||||
@@ -236,10 +236,10 @@ class SubscribeChain(ChainBase):
|
||||
# 查询缺失的媒体信息
|
||||
exist_flag, no_exists = self.downloadchain.get_no_exists_info(meta=meta, mediainfo=mediainfo)
|
||||
if exist_flag:
|
||||
logger.info(f'{mediainfo.get_title_string()} 媒体库中已存在,完成订阅')
|
||||
logger.info(f'{mediainfo.title_year} 媒体库中已存在,完成订阅')
|
||||
self.subscribes.delete(subscribe.id)
|
||||
# 发送通知
|
||||
self.post_message(title=f'{mediainfo.get_title_string()}{meta.get_season_string()} 已完成订阅',
|
||||
self.post_message(title=f'{mediainfo.title_year}{meta.season} 已完成订阅',
|
||||
image=mediainfo.get_message_image())
|
||||
continue
|
||||
# 使用订阅的总集数和开始集数替换no_exists
|
||||
@@ -264,18 +264,18 @@ class SubscribeChain(ChainBase):
|
||||
if meta.begin_season and meta.begin_season != torrent_meta.begin_season:
|
||||
continue
|
||||
# 匹配成功
|
||||
logger.info(f'{mediainfo.get_title_string()} 匹配成功:{torrent_info.title}')
|
||||
logger.info(f'{mediainfo.title_year} 匹配成功:{torrent_info.title}')
|
||||
_match_context.append(context)
|
||||
logger.info(f'{mediainfo.get_title_string()} 匹配完成,共匹配到{len(_match_context)}个资源')
|
||||
logger.info(f'{mediainfo.title_year} 匹配完成,共匹配到{len(_match_context)}个资源')
|
||||
if _match_context:
|
||||
# 批量择优下载
|
||||
downloads, lefts = self.downloadchain.batch_download(contexts=_match_context, need_tvs=no_exists)
|
||||
if downloads and not lefts:
|
||||
# 全部下载完成
|
||||
logger.info(f'{mediainfo.get_title_string()} 下载完成,完成订阅')
|
||||
logger.info(f'{mediainfo.title_year} 下载完成,完成订阅')
|
||||
self.subscribes.delete(subscribe.id)
|
||||
# 发送通知
|
||||
self.post_message(title=f'{mediainfo.get_title_string()}{meta.get_season_string()} 已完成订阅',
|
||||
self.post_message(title=f'{mediainfo.title_year}{meta.season} 已完成订阅',
|
||||
image=mediainfo.get_message_image())
|
||||
else:
|
||||
# 未完成下载,计算剩余集数
|
||||
@@ -284,7 +284,7 @@ class SubscribeChain(ChainBase):
|
||||
season = season_info.get('season')
|
||||
if season == subscribe.season:
|
||||
left_episodes = season_info.get('episodes')
|
||||
logger.info(f'{mediainfo.get_title_string()} 季 {season} 未下载完整,'
|
||||
logger.info(f'{mediainfo.title_year} 季 {season} 未下载完整,'
|
||||
f'更新缺失集数为{len(left_episodes)} ...')
|
||||
self.subscribes.update(subscribe.id, {
|
||||
"lack_episode": len(left_episodes)
|
||||
|
@@ -78,7 +78,7 @@ class TransferChain(ChainBase):
|
||||
title, subtitle = torrent.title, None
|
||||
# 识别元数据
|
||||
meta: MetaBase = MetaInfo(title=title, subtitle=subtitle)
|
||||
if not meta.get_name():
|
||||
if not meta.name:
|
||||
logger.warn(f'未识别到元数据,标题:{title}')
|
||||
continue
|
||||
if not arg_mediainfo:
|
||||
@@ -91,7 +91,7 @@ class TransferChain(ChainBase):
|
||||
continue
|
||||
else:
|
||||
mediainfo = arg_mediainfo
|
||||
logger.info(f"{torrent.title} 识别为:{mediainfo.type.value} {mediainfo.get_title_string()}")
|
||||
logger.info(f"{torrent.title} 识别为:{mediainfo.type.value} {mediainfo.title_year}")
|
||||
# 更新媒体图片
|
||||
self.obtain_image(mediainfo=mediainfo)
|
||||
# 转移
|
||||
@@ -99,7 +99,7 @@ class TransferChain(ChainBase):
|
||||
if not transferinfo or not transferinfo.target_path:
|
||||
logger.warn(f"{torrent.title} 入库失败")
|
||||
self.post_message(
|
||||
title=f"{mediainfo.get_title_string()}{meta.get_season_episode_string()} 入库失败!",
|
||||
title=f"{mediainfo.title_year}{meta.season_episode} 入库失败!",
|
||||
text=f"原因:{transferinfo.message if transferinfo else '未知'}",
|
||||
image=mediainfo.get_message_image()
|
||||
),
|
||||
@@ -126,15 +126,15 @@ class TransferChain(ChainBase):
|
||||
transferinfo.target_path
|
||||
)
|
||||
)
|
||||
msg_title = f"{mediainfo.get_title_string()} 已入库"
|
||||
msg_title = f"{mediainfo.title_year} 已入库"
|
||||
if mediainfo.vote_average:
|
||||
msg_str = f"评分:{mediainfo.vote_average},类型:{mediainfo.type.value}"
|
||||
else:
|
||||
msg_str = f"类型:{mediainfo.type.value}"
|
||||
if mediainfo.category:
|
||||
msg_str = f"{msg_str},类别:{mediainfo.category}"
|
||||
if meta.get_resource_type_string():
|
||||
msg_str = f"{msg_str},质量:{meta.get_resource_type_string()}"
|
||||
if meta.resource:
|
||||
msg_str = f"{msg_str},质量:{meta.resource}"
|
||||
msg_str = f"{msg_str}, 大小:{file_size}"
|
||||
# 发送
|
||||
self.post_message(title=msg_title, text=msg_str, image=mediainfo.get_message_image())
|
||||
|
@@ -85,8 +85,8 @@ class UserMessageChain(ChainBase):
|
||||
exist_flag, no_exists = self.downloadchain.get_no_exists_info(meta=self._current_meta,
|
||||
mediainfo=self._current_media)
|
||||
if exist_flag:
|
||||
self.post_message(title=f"{self._current_media.get_title_string()}"
|
||||
f"{self._current_meta.get_season()} 媒体库中已存在",
|
||||
self.post_message(title=f"{self._current_media.title_year}"
|
||||
f"{self._current_meta.sea} 媒体库中已存在",
|
||||
userid=userid)
|
||||
return
|
||||
# 发送缺失的媒体信息
|
||||
@@ -94,11 +94,11 @@ class UserMessageChain(ChainBase):
|
||||
# 发送消息
|
||||
messages = [f"第 {no_exist.get('season')} 季缺失 {len(no_exist.get('episodes')) or no_exist.get('total_episodes')} 集"
|
||||
for no_exist in no_exists.get(mediainfo.tmdb_id)]
|
||||
self.post_message(title=f"{mediainfo.get_title_string()}:\n" + "\n".join(messages))
|
||||
self.post_message(title=f"{mediainfo.title_year}:\n" + "\n".join(messages))
|
||||
# 搜索种子,过滤掉不需要的剧集,以便选择
|
||||
logger.info(f"{mediainfo.get_title_string()} 媒体库中不存在,开始搜索 ...")
|
||||
logger.info(f"{mediainfo.title_year} 媒体库中不存在,开始搜索 ...")
|
||||
self.post_message(
|
||||
title=f"开始搜索 {mediainfo.type.value} {mediainfo.get_title_string()} ...", userid=userid)
|
||||
title=f"开始搜索 {mediainfo.type.value} {mediainfo.title_year} ...", userid=userid)
|
||||
# 开始搜索
|
||||
contexts = self.searchchain.process(meta=self._current_meta,
|
||||
mediainfo=mediainfo,
|
||||
@@ -106,7 +106,7 @@ class UserMessageChain(ChainBase):
|
||||
if not contexts:
|
||||
# 没有数据
|
||||
self.post_message(title=f"{mediainfo.title}"
|
||||
f"{self._current_meta.get_season()} 未搜索到资源!",
|
||||
f"{self._current_meta.sea} 未搜索到资源!",
|
||||
userid=userid)
|
||||
return
|
||||
# 搜索结果排序
|
||||
@@ -142,8 +142,8 @@ class UserMessageChain(ChainBase):
|
||||
exist_flag, no_exists = self.downloadchain.get_no_exists_info(meta=self._current_meta,
|
||||
mediainfo=self._current_media)
|
||||
if exist_flag:
|
||||
self.post_message(title=f"{self._current_media.get_title_string()}"
|
||||
f"{self._current_meta.get_season()} 媒体库中已存在",
|
||||
self.post_message(title=f"{self._current_media.title_year}"
|
||||
f"{self._current_meta.sea} 媒体库中已存在",
|
||||
userid=userid)
|
||||
return
|
||||
# 批量下载
|
||||
@@ -152,10 +152,10 @@ class UserMessageChain(ChainBase):
|
||||
userid=userid)
|
||||
if downloads and not lefts:
|
||||
# 全部下载完成
|
||||
logger.info(f'{self._current_media.get_title_string()} 下载完成')
|
||||
logger.info(f'{self._current_media.title_year} 下载完成')
|
||||
else:
|
||||
# 未完成下载
|
||||
logger.info(f'{self._current_media.get_title_string()} 未下载未完整,添加订阅 ...')
|
||||
logger.info(f'{self._current_media.title_year} 未下载未完整,添加订阅 ...')
|
||||
# 添加订阅
|
||||
self.subscribechain.process(title=self._current_media.title,
|
||||
year=self._current_media.year,
|
||||
@@ -286,7 +286,7 @@ class UserMessageChain(ChainBase):
|
||||
mtype, key_word, season_num, episode_num, year, title = StringUtils.get_keyword(content)
|
||||
# 识别
|
||||
meta = MetaInfo(title)
|
||||
if not meta.get_name():
|
||||
if not meta.name:
|
||||
self.post_message(title="无法识别输入内容!", userid=userid)
|
||||
return
|
||||
# 合并信息
|
||||
@@ -301,10 +301,10 @@ class UserMessageChain(ChainBase):
|
||||
# 记录当前状态
|
||||
self._current_meta = meta
|
||||
# 开始搜索
|
||||
logger.info(f"开始搜索:{meta.get_name()}")
|
||||
logger.info(f"开始搜索:{meta.name}")
|
||||
medias: Optional[List[MediaInfo]] = self.search_medias(meta=meta)
|
||||
if not medias:
|
||||
self.post_message(title=f"{meta.get_name()} 没有找到对应的媒体信息!", userid=userid)
|
||||
self.post_message(title=f"{meta.name} 没有找到对应的媒体信息!", userid=userid)
|
||||
return
|
||||
logger.info(f"搜索到 {len(medias)} 条相关媒体信息")
|
||||
self._user_cache[userid] = {
|
||||
@@ -314,7 +314,7 @@ class UserMessageChain(ChainBase):
|
||||
self._current_page = 0
|
||||
self._current_media = None
|
||||
# 发送媒体列表
|
||||
self.__post_medias_message(title=meta.get_name(),
|
||||
self.__post_medias_message(title=meta.name,
|
||||
items=medias[:self._page_size],
|
||||
userid=userid, total=len(medias))
|
||||
|
||||
|
Reference in New Issue
Block a user