meta property
This commit is contained in:
@ -98,9 +98,9 @@ class DoubanModule(_ModuleBase):
|
||||
if settings.SEARCH_SOURCE != "douban":
|
||||
return None
|
||||
|
||||
if not meta.get_name():
|
||||
if not meta.name:
|
||||
return []
|
||||
result = self.doubanapi.search(meta.get_name())
|
||||
result = self.doubanapi.search(meta.name)
|
||||
if not result:
|
||||
return []
|
||||
# 返回数据
|
||||
@ -128,7 +128,7 @@ class DoubanModule(_ModuleBase):
|
||||
if not title:
|
||||
continue
|
||||
meta = MetaInfo(title)
|
||||
if meta.get_name() == name and (not season or meta.begin_season == season):
|
||||
if meta.name == name and (not season or meta.begin_season == season):
|
||||
return item_obj
|
||||
return {}
|
||||
|
||||
@ -148,7 +148,7 @@ class DoubanModule(_ModuleBase):
|
||||
logger.info(f"开始刮削媒体库文件:{file} ...")
|
||||
try:
|
||||
meta = MetaInfo(file.stem)
|
||||
if not meta.get_name():
|
||||
if not meta.name:
|
||||
continue
|
||||
# 根据名称查询豆瓣数据
|
||||
doubaninfo = self.match(name=mediainfo.title, year=mediainfo.year, season=meta.begin_season)
|
||||
|
@ -41,7 +41,7 @@ class EmbyModule(_ModuleBase):
|
||||
if mediainfo.type == MediaType.MOVIE:
|
||||
movies = self.emby.get_movies(title=mediainfo.title, year=mediainfo.year)
|
||||
if not movies:
|
||||
logger.info(f"{mediainfo.get_title_string()} 在媒体库中不存在")
|
||||
logger.info(f"{mediainfo.title_year} 在媒体库中不存在")
|
||||
return None
|
||||
else:
|
||||
logger.info(f"媒体库中已存在:{movies}")
|
||||
@ -51,10 +51,10 @@ class EmbyModule(_ModuleBase):
|
||||
year=mediainfo.year,
|
||||
tmdb_id=mediainfo.tmdb_id)
|
||||
if not tvs:
|
||||
logger.info(f"{mediainfo.get_title_string()} 在媒体库中不存在")
|
||||
logger.info(f"{mediainfo.title_year} 在媒体库中不存在")
|
||||
return None
|
||||
else:
|
||||
logger.info(f"{mediainfo.get_title_string()} 媒体库中已存在:{tvs}")
|
||||
logger.info(f"{mediainfo.title_year} 媒体库中已存在:{tvs}")
|
||||
return ExistMediaInfo(type=MediaType.TV, seasons=tvs)
|
||||
|
||||
def refresh_mediaserver(self, mediainfo: MediaInfo, file_path: Path) -> Optional[bool]:
|
||||
|
@ -38,7 +38,7 @@ class FanartModule(_ModuleBase):
|
||||
else:
|
||||
result = self.__request_fanart(mediainfo.type, mediainfo.tvdb_id)
|
||||
if not result or result.get('status') == 'error':
|
||||
logger.warn(f"没有获取到 {mediainfo.get_title_string()} 的Fanart图片数据")
|
||||
logger.warn(f"没有获取到 {mediainfo.title_year} 的Fanart图片数据")
|
||||
return
|
||||
for name, images in result.items():
|
||||
if not images:
|
||||
|
@ -137,11 +137,11 @@ class FileTransferModule(_ModuleBase):
|
||||
if (org_path.stem == Path(sub_file_name).stem) or \
|
||||
(sub_metainfo.cn_name and sub_metainfo.cn_name == metainfo.cn_name) \
|
||||
or (sub_metainfo.en_name and sub_metainfo.en_name == metainfo.en_name):
|
||||
if metainfo.get_season_string() \
|
||||
and metainfo.get_season_string() != sub_metainfo.get_season_string():
|
||||
if metainfo.season \
|
||||
and metainfo.season != sub_metainfo.season:
|
||||
continue
|
||||
if metainfo.get_episode_string() \
|
||||
and metainfo.get_episode_string() != sub_metainfo.get_episode_string():
|
||||
if metainfo.episode \
|
||||
and metainfo.episode != sub_metainfo.episode:
|
||||
continue
|
||||
new_file_type = ""
|
||||
# 兼容jellyfin字幕识别(多重识别), emby则会识别最后一个后缀
|
||||
@ -444,11 +444,11 @@ class FileTransferModule(_ModuleBase):
|
||||
# 原语种标题
|
||||
"original_title": mediainfo.original_title,
|
||||
# 识别名称
|
||||
"name": meta.get_name(),
|
||||
"name": meta.name,
|
||||
# 年份
|
||||
"year": mediainfo.year,
|
||||
# 版本
|
||||
"edition": meta.get_edtion_string(),
|
||||
"edition": meta.edtion,
|
||||
# 分辨率
|
||||
"videoFormat": meta.resource_pix,
|
||||
# 制作组/字幕组
|
||||
@ -464,11 +464,11 @@ class FileTransferModule(_ModuleBase):
|
||||
# IMDBID
|
||||
"imdbid": mediainfo.imdb_id,
|
||||
# 季号
|
||||
"season": meta.get_season_seq(),
|
||||
"season": meta.season_seq,
|
||||
# 集号
|
||||
"episode": meta.get_episode_seqs(),
|
||||
"episode": meta.episode_seqs,
|
||||
# 季集 SxxExx
|
||||
"season_episode": "%s%s" % (meta.get_begin_season_string(), meta.get_episode_strings()),
|
||||
"season_episode": "%s%s" % (meta.season_name, meta.episode),
|
||||
# 段/节
|
||||
"part": meta.part,
|
||||
# 文件后缀
|
||||
|
@ -105,12 +105,12 @@ class FilterModule(_ModuleBase):
|
||||
seasons = season_episodes.keys()
|
||||
meta = MetaInfo(title=torrent.title, subtitle=torrent.description)
|
||||
# 种子季
|
||||
torrent_seasons = meta.get_season_list()
|
||||
torrent_seasons = meta.season_list
|
||||
if not torrent_seasons:
|
||||
# 按第一季处理
|
||||
torrent_seasons = [1]
|
||||
# 种子集
|
||||
torrent_episodes = meta.get_episode_list()
|
||||
torrent_episodes = meta.episode_list
|
||||
if not set(torrent_seasons).issubset(set(seasons)):
|
||||
# 种子季不在过滤季中
|
||||
logger.info(f"种子 {torrent.title} 不是需要的季")
|
||||
|
@ -41,7 +41,7 @@ class JellyfinModule(_ModuleBase):
|
||||
if mediainfo.type == MediaType.MOVIE:
|
||||
movies = self.jellyfin.get_movies(title=mediainfo.title, year=mediainfo.year)
|
||||
if not movies:
|
||||
logger.info(f"{mediainfo.get_title_string()} 在媒体库中不存在")
|
||||
logger.info(f"{mediainfo.title_year} 在媒体库中不存在")
|
||||
return None
|
||||
else:
|
||||
logger.info(f"媒体库中已存在:{movies}")
|
||||
@ -51,10 +51,10 @@ class JellyfinModule(_ModuleBase):
|
||||
year=mediainfo.year,
|
||||
tmdb_id=mediainfo.tmdb_id)
|
||||
if not tvs:
|
||||
logger.info(f"{mediainfo.get_title_string()} 在媒体库中不存在")
|
||||
logger.info(f"{mediainfo.title_year} 在媒体库中不存在")
|
||||
return None
|
||||
else:
|
||||
logger.info(f"{mediainfo.get_title_string()} 媒体库中已存在:{tvs}")
|
||||
logger.info(f"{mediainfo.title_year} 媒体库中已存在:{tvs}")
|
||||
return ExistMediaInfo(type=MediaType.TV, seasons=tvs)
|
||||
|
||||
def refresh_mediaserver(self, mediainfo: MediaInfo, file_path: Path) -> Optional[bool]:
|
||||
|
@ -41,7 +41,7 @@ class PlexModule(_ModuleBase):
|
||||
if mediainfo.type == MediaType.MOVIE:
|
||||
movies = self.plex.get_movies(title=mediainfo.title, year=mediainfo.year)
|
||||
if not movies:
|
||||
logger.info(f"{mediainfo.get_title_string()} 在媒体库中不存在")
|
||||
logger.info(f"{mediainfo.title_year} 在媒体库中不存在")
|
||||
return None
|
||||
else:
|
||||
logger.info(f"媒体库中已存在:{movies}")
|
||||
@ -50,10 +50,10 @@ class PlexModule(_ModuleBase):
|
||||
tvs = self.plex.get_tv_episodes(title=mediainfo.title,
|
||||
year=mediainfo.year)
|
||||
if not tvs:
|
||||
logger.info(f"{mediainfo.get_title_string()} 在媒体库中不存在")
|
||||
logger.info(f"{mediainfo.title_year} 在媒体库中不存在")
|
||||
return None
|
||||
else:
|
||||
logger.info(f"{mediainfo.get_title_string()} 媒体库中已存在:{tvs}")
|
||||
logger.info(f"{mediainfo.title_year} 媒体库中已存在:{tvs}")
|
||||
return ExistMediaInfo(type=MediaType.TV, seasons=tvs)
|
||||
|
||||
def refresh_mediaserver(self, mediainfo: MediaInfo, file_path: Path) -> Optional[bool]:
|
||||
|
@ -71,11 +71,11 @@ class QbittorrentModule(_ModuleBase):
|
||||
file_id = torrent_file.get("id")
|
||||
file_name = torrent_file.get("name")
|
||||
meta_info = MetaInfo(file_name)
|
||||
if not meta_info.get_episode_list() \
|
||||
or not set(meta_info.get_episode_list()).issubset(episodes):
|
||||
if not meta_info.episode_list \
|
||||
or not set(meta_info.episode_list).issubset(episodes):
|
||||
file_ids.append(file_id)
|
||||
else:
|
||||
sucess_epidised = list(set(sucess_epidised).union(set(meta_info.get_episode_list())))
|
||||
sucess_epidised = list(set(sucess_epidised).union(set(meta_info.episode_list)))
|
||||
if sucess_epidised and file_ids:
|
||||
# 选择文件
|
||||
self.qbittorrent.set_files(torrent_hash=torrent_hash, file_ids=file_ids, priority=0)
|
||||
|
@ -177,13 +177,13 @@ class Slack:
|
||||
index = 1
|
||||
for media in medias:
|
||||
if media.get_poster_image():
|
||||
if media.get_star_string():
|
||||
text = f"{index}. *<{media.get_detail_url()}|{media.get_title_string()}>*" \
|
||||
if media.vote_star:
|
||||
text = f"{index}. *<{media.detail_link}|{media.title_year}>*" \
|
||||
f"\n类型:{media.type.value}" \
|
||||
f"\n{media.get_star_string()}" \
|
||||
f"\n{media.vote_star}" \
|
||||
f"\n{media.get_overview_string(50)}"
|
||||
else:
|
||||
text = f"{index}. *<{media.get_detail_url()}|{media.get_title_string()}>*" \
|
||||
text = f"{index}. *<{media.detail_link}|{media.title_year}>*" \
|
||||
f"\n类型:{media.type.value}" \
|
||||
f"\n{media.get_overview_string(50)}"
|
||||
blocks.append(
|
||||
@ -196,7 +196,7 @@ class Slack:
|
||||
"accessory": {
|
||||
"type": "image",
|
||||
"image_url": f"{media.get_poster_image()}",
|
||||
"alt_text": f"{media.get_title_string()}"
|
||||
"alt_text": f"{media.title_year}"
|
||||
}
|
||||
}
|
||||
)
|
||||
@ -261,9 +261,9 @@ class Slack:
|
||||
site_name = torrent.site_name
|
||||
meta = MetaInfo(torrent.title, torrent.description)
|
||||
link = torrent.page_url
|
||||
title = f"{meta.get_season_episode_string()} " \
|
||||
f"{meta.get_resource_type_string()} " \
|
||||
f"{meta.get_resource_team_string()}"
|
||||
title = f"{meta.season_episode} " \
|
||||
f"{meta.resource} " \
|
||||
f"{meta.release_team}"
|
||||
title = re.sub(r"\s+", " ", title).strip()
|
||||
free = torrent.get_volume_factor_string()
|
||||
seeder = f"{torrent.seeders}↑"
|
||||
|
@ -109,15 +109,15 @@ class Telegram(metaclass=Singleton):
|
||||
if media.vote_average:
|
||||
caption = "%s\n%s. [%s](%s)\n_%s,%s_" % (caption,
|
||||
index,
|
||||
media.get_title_string(),
|
||||
media.get_detail_url(),
|
||||
media.title_year,
|
||||
media.detail_link,
|
||||
f"类型:{media.type.value}",
|
||||
f"评分:{media.vote_average}")
|
||||
else:
|
||||
caption = "%s\n%s. [%s](%s)\n_%s_" % (caption,
|
||||
index,
|
||||
media.get_title_string(),
|
||||
media.get_detail_url(),
|
||||
media.title_year,
|
||||
media.detail_link,
|
||||
f"类型:{media.type.value}")
|
||||
index += 1
|
||||
|
||||
@ -148,9 +148,9 @@ class Telegram(metaclass=Singleton):
|
||||
site_name = torrent.site_name
|
||||
meta = MetaInfo(torrent.title, torrent.description)
|
||||
link = torrent.page_url
|
||||
title = f"{meta.get_season_episode_string()} " \
|
||||
f"{meta.get_resource_type_string()} " \
|
||||
f"{meta.get_resource_team_string()}"
|
||||
title = f"{meta.season_episode} " \
|
||||
f"{meta.resource} " \
|
||||
f"{meta.release_team}"
|
||||
title = re.sub(r"\s+", " ", title).strip()
|
||||
free = torrent.get_volume_factor_string()
|
||||
seeder = f"{torrent.seeders}↑"
|
||||
|
@ -60,38 +60,38 @@ class TheMovieDbModule(_ModuleBase):
|
||||
# 直接查询详情
|
||||
info = self.tmdb.get_info(mtype=mtype, tmdbid=tmdbid)
|
||||
else:
|
||||
logger.info(f"正在识别 {meta.get_name()} ...")
|
||||
logger.info(f"正在识别 {meta.name} ...")
|
||||
if meta.type == MediaType.UNKNOWN and not meta.year:
|
||||
info = self.tmdb.match_multi(meta.get_name())
|
||||
info = self.tmdb.match_multi(meta.name)
|
||||
else:
|
||||
if meta.type == MediaType.TV:
|
||||
# 确定是电视
|
||||
info = self.tmdb.match(name=meta.get_name(),
|
||||
info = self.tmdb.match(name=meta.name,
|
||||
year=meta.year,
|
||||
mtype=meta.type,
|
||||
season_year=meta.year,
|
||||
season_number=meta.begin_season)
|
||||
if meta.year:
|
||||
# 非严格模式下去掉年份再查一次
|
||||
info = self.tmdb.match(name=meta.get_name(),
|
||||
info = self.tmdb.match(name=meta.name,
|
||||
mtype=meta.type)
|
||||
else:
|
||||
# 有年份先按电影查
|
||||
info = self.tmdb.match(name=meta.get_name(),
|
||||
info = self.tmdb.match(name=meta.name,
|
||||
year=meta.year,
|
||||
mtype=MediaType.MOVIE)
|
||||
# 没有再按电视剧查
|
||||
if not info:
|
||||
info = self.tmdb.match(name=meta.get_name(),
|
||||
info = self.tmdb.match(name=meta.name,
|
||||
year=meta.year,
|
||||
mtype=MediaType.TV)
|
||||
if not info:
|
||||
# 非严格模式下去掉年份和类型再查一次
|
||||
info = self.tmdb.match_multi(name=meta.get_name())
|
||||
info = self.tmdb.match_multi(name=meta.name)
|
||||
|
||||
if not info:
|
||||
# 从网站查询
|
||||
info = self.tmdb.match_web(name=meta.get_name(),
|
||||
info = self.tmdb.match_web(name=meta.name,
|
||||
mtype=meta.type)
|
||||
# 补充全量信息
|
||||
if info and not info.get("genres"):
|
||||
@ -102,11 +102,11 @@ class TheMovieDbModule(_ModuleBase):
|
||||
else:
|
||||
# 使用缓存信息
|
||||
if cache_info.get("title"):
|
||||
logger.info(f"{meta.get_name()} 使用识别缓存:{cache_info.get('title')}")
|
||||
logger.info(f"{meta.name} 使用识别缓存:{cache_info.get('title')}")
|
||||
info = self.tmdb.get_info(mtype=cache_info.get("type"),
|
||||
tmdbid=cache_info.get("id"))
|
||||
else:
|
||||
logger.info(f"{meta.get_name()} 使用识别缓存:无法识别")
|
||||
logger.info(f"{meta.name} 使用识别缓存:无法识别")
|
||||
info = None
|
||||
|
||||
if info:
|
||||
@ -118,12 +118,12 @@ class TheMovieDbModule(_ModuleBase):
|
||||
# 赋值TMDB信息并返回
|
||||
mediainfo = MediaInfo(tmdb_info=info)
|
||||
mediainfo.set_category(cat)
|
||||
logger.info(f"{meta.get_name()} 识别结果:{mediainfo.type.value} "
|
||||
f"{mediainfo.get_title_string()} "
|
||||
logger.info(f"{meta.name} 识别结果:{mediainfo.type.value} "
|
||||
f"{mediainfo.title_year} "
|
||||
f"{mediainfo.tmdb_id}")
|
||||
return mediainfo
|
||||
else:
|
||||
logger.info(f"{meta.get_name()} 未匹配到媒体信息")
|
||||
logger.info(f"{meta.name} 未匹配到媒体信息")
|
||||
|
||||
return None
|
||||
|
||||
@ -137,15 +137,15 @@ class TheMovieDbModule(_ModuleBase):
|
||||
if settings.SEARCH_SOURCE != "themoviedb":
|
||||
return None
|
||||
|
||||
if not meta.get_name():
|
||||
if not meta.name:
|
||||
return []
|
||||
if meta.type == MediaType.UNKNOWN and not meta.year:
|
||||
results = self.tmdb.search_multiis(meta.get_name())
|
||||
results = self.tmdb.search_multiis(meta.name)
|
||||
else:
|
||||
if meta.type == MediaType.UNKNOWN:
|
||||
results = list(
|
||||
set(self.tmdb.search_movies(meta.get_name(), meta.year))
|
||||
.union(set(self.tmdb.search_tv_tmdbinfos(meta.get_name(), meta.year)))
|
||||
set(self.tmdb.search_movies(meta.name, meta.year))
|
||||
.union(set(self.tmdb.search_tv_tmdbinfos(meta.name, meta.year)))
|
||||
)
|
||||
# 组合结果的情况下要排序
|
||||
results = sorted(
|
||||
@ -154,9 +154,9 @@ class TheMovieDbModule(_ModuleBase):
|
||||
reverse=True
|
||||
)
|
||||
elif meta.type == MediaType.MOVIE:
|
||||
results = self.tmdb.search_movies(meta.get_name(), meta.year)
|
||||
results = self.tmdb.search_movies(meta.name, meta.year)
|
||||
else:
|
||||
results = self.tmdb.search_tv_tmdbinfos(meta.get_name(), meta.year)
|
||||
results = self.tmdb.search_tv_tmdbinfos(meta.name, meta.year)
|
||||
|
||||
return [MediaInfo(tmdb_info=info) for info in results]
|
||||
|
||||
|
@ -48,7 +48,7 @@ class TmdbCache(metaclass=Singleton):
|
||||
"""
|
||||
获取缓存KEY
|
||||
"""
|
||||
return f"[{meta.type.value if meta.type else '未知'}]{meta.get_name()}-{meta.year}-{meta.begin_season}"
|
||||
return f"[{meta.type.value if meta.type else '未知'}]{meta.name}-{meta.year}-{meta.begin_season}"
|
||||
|
||||
def get(self, meta: MetaBase):
|
||||
"""
|
||||
|
@ -59,9 +59,9 @@ class TransmissionModule(_ModuleBase):
|
||||
file_id = torrent_file.id
|
||||
file_name = torrent_file.name
|
||||
meta_info = MetaInfo(file_name)
|
||||
if not meta_info.get_episode_list():
|
||||
if not meta_info.episode_list:
|
||||
continue
|
||||
selected = set(meta_info.get_episode_list()).issubset(set(episodes))
|
||||
selected = set(meta_info.episode_list).issubset(set(episodes))
|
||||
if not selected:
|
||||
continue
|
||||
file_ids.append(file_id)
|
||||
|
@ -170,14 +170,14 @@ class WeChat(metaclass=Singleton):
|
||||
index = 1
|
||||
for media in medias:
|
||||
if media.vote_average:
|
||||
title = f"{index}. {media.get_title_string()}\n类型:{media.type.value},评分:{media.vote_average}"
|
||||
title = f"{index}. {media.title_year}\n类型:{media.type.value},评分:{media.vote_average}"
|
||||
else:
|
||||
title = f"{index}. {media.get_title_string()}\n类型:{media.type.value}"
|
||||
title = f"{index}. {media.title_year}\n类型:{media.type.value}"
|
||||
articles.append({
|
||||
"title": title,
|
||||
"description": "",
|
||||
"picurl": media.get_message_image() if index == 1 else media.get_poster_image(),
|
||||
"url": media.get_detail_url()
|
||||
"url": media.detail_link
|
||||
})
|
||||
index += 1
|
||||
|
||||
@ -214,9 +214,9 @@ class WeChat(metaclass=Singleton):
|
||||
torrent = context.torrent_info
|
||||
meta = MetaInfo(title=torrent.title, subtitle=torrent.description)
|
||||
torrent_title = f"{index}.【{torrent.site_name}】" \
|
||||
f"{meta.get_season_episode_string()} " \
|
||||
f"{meta.get_resource_type_string()} " \
|
||||
f"{meta.get_resource_team_string()} " \
|
||||
f"{meta.season_episode} " \
|
||||
f"{meta.resource} " \
|
||||
f"{meta.release_team} " \
|
||||
f"{StringUtils.str_filesize(torrent.size)} " \
|
||||
f"{torrent.get_volume_factor_string()} " \
|
||||
f"{torrent.seeders}↑"
|
||||
|
Reference in New Issue
Block a user