feat: english title from tmdb

This commit is contained in:
Edward 2024-02-18 07:40:59 +00:00 committed by GitHub
parent 59acda5dec
commit 89a8625817
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 46 additions and 0 deletions

View File

@ -129,6 +129,7 @@ MoviePilot需要配套下载器和媒体服务器配合使用。
`MOVIE_RENAME_FORMAT`支持的配置项:
> `title` TMDB/豆瓣中的标题
> `en_title` TMDB中的英文标题 (暂不支持豆瓣)
> `original_title` TMDB/豆瓣中的原语种标题
> `name` 从文件名中识别的名称(同时存在中英文时,优先使用中文)
> `en_name`:从文件名中识别的英文名称(可能为空)

View File

@ -135,6 +135,8 @@ class MediaInfo:
type: MediaType = None
# 媒体标题
title: str = None
# 英文标题
en_title: str = None
# 年份
year: str = None
# 季
@ -368,6 +370,8 @@ class MediaInfo:
self.genre_ids = info.get('genre_ids') or []
# 原语种
self.original_language = info.get('original_language')
# 英文标题
self.en_title = info.get('en_title')
if self.type == MediaType.MOVIE:
# 标题
self.title = info.get('title')
@ -439,6 +443,9 @@ class MediaInfo:
# 标题
if not self.title:
self.title = info.get("title")
# 英文标题,暂时不支持
if not self.en_title:
self.en_title = info.get('original_title')
# 原语种标题
if not self.original_title:
self.original_title = info.get("original_title")

View File

@ -580,6 +580,8 @@ class FileTransferModule(_ModuleBase):
return {
# 标题
"title": __convert_invalid_characters(mediainfo.title),
# 英文标题
"en_title": __convert_invalid_characters(mediainfo.en_title),
# 原语种标题
"original_title": __convert_invalid_characters(mediainfo.original_title),
# 原文件名

View File

@ -555,6 +555,8 @@ class TmdbHelper:
tmdb_info['names'] = self.__get_names(tmdb_info)
# 转换中文标题
self.__update_tmdbinfo_cn_title(tmdb_info)
# 转换英文标题
self.__update_tmdbinfo_en_title(tmdb_info)
return tmdb_info
@ -595,6 +597,38 @@ class TmdbHelper:
else:
tmdb_info['name'] = cn_title
@staticmethod
def __update_tmdbinfo_en_title(tmdb_info: dict):
"""
更新TMDB信息中的英文名称
"""
def __get_tmdb_english_title(tmdbinfo):
"""
从别名中获取英文标题
"""
if not tmdbinfo:
return None
translations = tmdb_info.get("translations", {}).get("translations", [])
for translation in translations:
if translation.get("iso_3166_1") == "US":
return translation.get("data", {}).get("title") if tmdbinfo.get("media_type") == MediaType.MOVIE \
else translation.get("data", {}).get("name")
return None
# 查找英文名
org_title = (
tmdb_info.get("original_title")
if tmdb_info.get("media_type") == MediaType.MOVIE
else tmdb_info.get("original_name")
)
if tmdb_info.get("original_language") == "en":
tmdb_info['en_title'] = org_title
# TODO: 对于日文标题,使用罗马字作为英文标题可能更合适?
else:
en_title = __get_tmdb_english_title(tmdb_info)
tmdb_info['en_title'] = en_title or org_title
def __get_movie_detail(self,
tmdbid: int,
append_to_response: str = "images,"

View File

@ -67,6 +67,8 @@ class MediaInfo(BaseModel):
type: Optional[str] = None
# 媒体标题
title: Optional[str] = None
# 英文标题
en_title: Optional[str] = None
# 年份
year: Optional[str] = None
# 标题(年份)