fix torrent match
This commit is contained in:
parent
ebe2795eae
commit
cfb43b4b04
@ -464,17 +464,17 @@ class TorrentHelper(metaclass=Singleton):
|
|||||||
# 比对年份
|
# 比对年份
|
||||||
if mediainfo.year:
|
if mediainfo.year:
|
||||||
if mediainfo.type == MediaType.TV:
|
if mediainfo.type == MediaType.TV:
|
||||||
# 剧集年份,每季的年份可能不同
|
# 剧集年份,每季的年份可能不同,没年份时不比较年份(很多剧集种子不带年份)
|
||||||
if torrent_meta.year and torrent_meta.year not in [year for year in
|
if torrent_meta.year and torrent_meta.year not in [year for year in
|
||||||
mediainfo.season_years.values()]:
|
mediainfo.season_years.values()]:
|
||||||
if logerror:
|
if logerror:
|
||||||
logger.warn(f'{torrent.site_name} - {torrent.title} 年份不匹配 {mediainfo.season_years}')
|
logger.warn(f'{torrent.site_name} - {torrent.title} 年份不匹配 {mediainfo.season_years}')
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
# 电影年份,上下浮动1年
|
# 电影年份,上下浮动1年,没年份时不通过
|
||||||
if torrent_meta.year not in [str(int(mediainfo.year) - 1),
|
if not torrent_meta.year or torrent_meta.year not in [str(int(mediainfo.year) - 1),
|
||||||
mediainfo.year,
|
mediainfo.year,
|
||||||
str(int(mediainfo.year) + 1)]:
|
str(int(mediainfo.year) + 1)]:
|
||||||
if logerror:
|
if logerror:
|
||||||
logger.warn(f'{torrent.site_name} - {torrent.title} 年份不匹配 {mediainfo.year}')
|
logger.warn(f'{torrent.site_name} - {torrent.title} 年份不匹配 {mediainfo.year}')
|
||||||
return False
|
return False
|
||||||
@ -489,16 +489,20 @@ class TorrentHelper(metaclass=Singleton):
|
|||||||
return True
|
return True
|
||||||
# 标题拆分
|
# 标题拆分
|
||||||
if torrent_meta.org_string:
|
if torrent_meta.org_string:
|
||||||
titles = [StringUtils.clear_upper(t) for t in re.split(r'[\s/【】.\[\]\-]+',
|
# 只拆分出标题中的非英文单词进行匹配,英文单词容易误匹配(带空格的多个单词组合除外)
|
||||||
torrent_meta.org_string) if t]
|
titles = [StringUtils.clear_upper(t) for t in re.split(
|
||||||
|
r'[\s/【】.\[\]\-]+',
|
||||||
|
torrent_meta.org_string
|
||||||
|
) if not StringUtils.is_english_word(t)]
|
||||||
# 在标题中判断是否存在标题、原语种标题
|
# 在标题中判断是否存在标题、原语种标题
|
||||||
if media_titles.intersection(titles):
|
if media_titles.intersection(titles):
|
||||||
logger.info(f'{mediainfo.title} 通过标题匹配到资源:{torrent.site_name} - {torrent.title}')
|
logger.info(f'{mediainfo.title} 通过标题匹配到资源:{torrent.site_name} - {torrent.title}')
|
||||||
return True
|
return True
|
||||||
# 在副标题中判断是否存在标题、原语种标题、别名、译名
|
# 在副标题中(非英文单词)判断是否存在标题、原语种标题、别名、译名
|
||||||
if torrent.description:
|
if torrent.description:
|
||||||
subtitles = {StringUtils.clear_upper(t) for t in re.split(r'[\s/【】|]+',
|
subtitles = {StringUtils.clear_upper(t) for t in re.split(
|
||||||
torrent.description) if t}
|
r'[\s/【】|]+',
|
||||||
|
torrent.description) if not StringUtils.is_english_word(t)}
|
||||||
if media_titles.intersection(subtitles) or media_names.intersection(subtitles):
|
if media_titles.intersection(subtitles) or media_names.intersection(subtitles):
|
||||||
logger.info(f'{mediainfo.title} 通过副标题匹配到资源:{torrent.site_name} - {torrent.title},'
|
logger.info(f'{mediainfo.title} 通过副标题匹配到资源:{torrent.site_name} - {torrent.title},'
|
||||||
f'副标题:{torrent.description}')
|
f'副标题:{torrent.description}')
|
||||||
|
@ -137,6 +137,13 @@ class StringUtils:
|
|||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def is_english_word(word: str) -> bool:
|
||||||
|
"""
|
||||||
|
判断是否为英文单词,有空格时返回False
|
||||||
|
"""
|
||||||
|
return word.isalpha()
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def str_int(text: str) -> int:
|
def str_int(text: str) -> int:
|
||||||
"""
|
"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user