meta property

This commit is contained in:
jxxghp
2023-06-14 07:15:39 +08:00
parent c06122ff19
commit 1f832633ea
26 changed files with 209 additions and 188 deletions

View File

@ -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)

View File

@ -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]:

View File

@ -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:

View File

@ -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,
# 文件后缀

View File

@ -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} 不是需要的季")

View File

@ -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]:

View File

@ -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]:

View File

@ -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)

View File

@ -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}"

View File

@ -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}"

View File

@ -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]

View File

@ -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):
"""

View File

@ -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)

View File

@ -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}"