do hi-res/lo-res detection even when there's other files lying around

This commit is contained in:
xenofem 2024-04-01 22:07:21 -04:00
parent 25e98489c0
commit f83f6a7449

View file

@ -32,7 +32,7 @@ DLSITE_ID_REGEX = re.compile('^[BR]J[0-9]+$')
FANZA_ID_REGEX = re.compile('^d_[0-9]+$') FANZA_ID_REGEX = re.compile('^d_[0-9]+$')
FAKKU_ID_REGEX = re.compile('.*_FAKKU$') FAKKU_ID_REGEX = re.compile('.*_FAKKU$')
HI_RES_REGEX = re.compile('高解像度|原寸', re.I) HI_RES_REGEX = re.compile('高解像度|原寸|大サイズ', re.I)
NO_TONE_REGEX = re.compile('トーン(効果)?[な無]し|グレースケール', re.I) NO_TONE_REGEX = re.compile('トーン(効果)?[な無]し|グレースケール', re.I)
TONE_REGEX = re.compile('トーン(版|(効果)?[有あ]り)', re.I) TONE_REGEX = re.compile('トーン(版|(効果)?[有あ]り)', re.I)
COLOR_REGEX = re.compile('カラー', re.I) COLOR_REGEX = re.compile('カラー', re.I)
@ -441,20 +441,22 @@ class Collator:
if select_language is not False: if select_language is not False:
return select_language return select_language
if len(srcs) == 2 and all(src.is_dir() for src in srcs): dirs = [src for src in srcs if src.is_dir()]
if len(dirs) == 2:
for quality in IMAGE_QUALITY_REGEXES: for quality in IMAGE_QUALITY_REGEXES:
def a_not_b(a, b, src): def a_not_b(a, b, src):
if a in quality: if a in quality:
return quality[a].search(nname(src)) return quality[a].search(nname(src))
else: else:
return not quality[b].search(nname(src)) return not quality[b].search(nname(src))
better_srcs = [src for src in srcs if a_not_b('better', 'worse', src)] better_srcs = [src for src in dirs if a_not_b('better', 'worse', src)]
worse_srcs = [src for src in srcs if a_not_b('worse', 'better', src)] worse_srcs = [src for src in dirs if a_not_b('worse', 'better', src)]
if len(better_srcs) == 1 and len(worse_srcs) == 1 and better_srcs[0] != worse_srcs[0]: if len(better_srcs) == 1 and len(worse_srcs) == 1 and better_srcs[0] != worse_srcs[0]:
better = better_srcs[0] better = better_srcs[0]
worse = worse_srcs[0] worse = worse_srcs[0]
if len(descendant_files_ignore(better, self.exclude)) == len(descendant_files_ignore(worse, self.exclude)): if len(descendant_files_ignore(better, self.exclude)) == len(descendant_files_ignore(worse, self.exclude)):
return self.collate_from_paths([better]) non_dirs = [src for src in srcs if not src.is_dir()]
return self.collate_from_paths([better] + non_dirs)
images_vs_pdf = self.try_collate_images_vs_pdf(srcs) images_vs_pdf = self.try_collate_images_vs_pdf(srcs)
if images_vs_pdf is not False: if images_vs_pdf is not False: