feat 演职人员优先使用TMDB中的中文名

This commit is contained in:
jxxghp 2023-09-28 20:24:47 +08:00
parent 087fcd340a
commit 01fd56a019
2 changed files with 47 additions and 4 deletions

View File

@ -12,6 +12,7 @@ from app.schemas.types import MediaType
from app.utils.common import retry from app.utils.common import retry
from app.utils.dom import DomUtils from app.utils.dom import DomUtils
from app.utils.http import RequestUtils from app.utils.http import RequestUtils
from app.utils.string import StringUtils
class TmdbScraper: class TmdbScraper:
@ -121,11 +122,29 @@ class TmdbScraper:
except Exception as e: except Exception as e:
logger.error(f"{file_path} 刮削失败:{e}") logger.error(f"{file_path} 刮削失败:{e}")
@staticmethod def __gen_common_nfo(self, mediainfo: MediaInfo, doc, root):
def __gen_common_nfo(mediainfo: MediaInfo, doc, root):
""" """
生成公共NFO 生成公共NFO
""" """
def __get_chinese_name(person: dict):
"""
获取TMDB别名中的中文名
"""
if not person.get("id"):
return ""
try:
personinfo = self.tmdb.get_person_detail(person.get("id"))
if personinfo:
also_known_as = personinfo.get("also_known_as") or []
if also_known_as:
for name in also_known_as:
if name and StringUtils.is_chinese(name):
return name
except Exception as err:
logger.error(f"获取人物中文名失败:{err}")
return person.get("name") or ""
# 添加时间 # 添加时间
DomUtils.add_node(doc, root, "dateadded", DomUtils.add_node(doc, root, "dateadded",
time.strftime('%Y-%m-%d %H:%M:%S', time.strftime('%Y-%m-%d %H:%M:%S',
@ -155,12 +174,16 @@ class TmdbScraper:
xoutline.appendChild(doc.createCDATASection(mediainfo.overview or "")) xoutline.appendChild(doc.createCDATASection(mediainfo.overview or ""))
# 导演 # 导演
for director in mediainfo.directors: for director in mediainfo.directors:
xdirector = DomUtils.add_node(doc, root, "director", director.get("name") or "") # 获取中文名
cn_name = __get_chinese_name(director)
xdirector = DomUtils.add_node(doc, root, "director", cn_name)
xdirector.setAttribute("tmdbid", str(director.get("id") or "")) xdirector.setAttribute("tmdbid", str(director.get("id") or ""))
# 演员 # 演员
for actor in mediainfo.actors: for actor in mediainfo.actors:
# 获取中文名
cn_name = __get_chinese_name(actor)
xactor = DomUtils.add_node(doc, root, "actor") xactor = DomUtils.add_node(doc, root, "actor")
DomUtils.add_node(doc, xactor, "name", actor.get("name") or "") DomUtils.add_node(doc, xactor, "name", cn_name)
DomUtils.add_node(doc, xactor, "type", "Actor") DomUtils.add_node(doc, xactor, "type", "Actor")
DomUtils.add_node(doc, xactor, "role", actor.get("character") or actor.get("role") or "") DomUtils.add_node(doc, xactor, "role", actor.get("character") or actor.get("role") or "")
DomUtils.add_node(doc, xactor, "order", actor.get("order") if actor.get("order") is not None else "") DomUtils.add_node(doc, xactor, "order", actor.get("order") if actor.get("order") is not None else "")

View File

@ -1136,6 +1136,26 @@ class TmdbHelper:
def get_person_detail(self, person_id: int) -> dict: def get_person_detail(self, person_id: int) -> dict:
""" """
获取人物详情 获取人物详情
{
"adult": false,
"also_known_as": [
"Michael Chen",
"Chen He",
"陈赫"
],
"biography": "陈赫xxx",
"birthday": "1985-11-09",
"deathday": null,
"gender": 2,
"homepage": "https://movie.douban.com/celebrity/1313841/",
"id": 1397016,
"imdb_id": "nm4369305",
"known_for_department": "Acting",
"name": "Chen He",
"place_of_birth": "FuzhouFujian ProvinceChina",
"popularity": 9.228,
"profile_path": "/2Bk39zVuoHUNHtpZ7LVg7OgkDd4.jpg"
}
""" """
if not self.person: if not self.person:
return {} return {}