Update core.py

This commit is contained in:
Feng4
2020-12-27 01:41:07 +08:00
committed by GitHub
parent 07bb677822
commit 3742294ce9

165
core.py
View File

@@ -238,6 +238,7 @@ def get_info(json_data): # 返回json里的数据
release = json_data.get('release')
number = json_data.get('number')
cover = json_data.get('cover')
trailer = json_data.get('trailer')
website = json_data.get('website')
series = json_data.get('series')
label = json_data.get('label', "")
@@ -326,6 +327,44 @@ def download_file_with_filename(url, filename, path, conf: config.Config, filepa
moveFailedFolder(filepath, failed_folder)
return
def trailer_download(trailer, c_word, number, path, filepath, conf: config.Config, failed_folder):
if download_file_with_filename(trailer, number + c_word + '-trailer.mp4', path, conf, filepath, failed_folder) == 'failed':
return
switch, _proxy, _timeout, retry, _proxytype = conf.proxy()
for i in range(retry):
if os.path.getsize(path+'/' + number + c_word + '-trailer.mp4') == 0:
print('[!]Video Download Failed! Trying again. [{}/3]', i + 1)
download_file_with_filename(trailer, number + c_word + '-trailer.mp4', path, conf, filepath, failed_folder)
continue
else:
break
if os.path.getsize(path + '/' + number + c_word + '-trailer.mp4') == 0:
return
print('[+]Video Downloaded!', path + '/' + number + c_word + '-trailer.mp4')
# 剧照下载成功否则移动到failed
def extrafanart_download(data, path, conf: config.Config, filepath, failed_folder):
j = 1
path = path + '/' + conf.get_extrafanart()
for url in data:
if download_file_with_filename(url, '/extrafanart-' + str(j)+'.jpg', path, conf, filepath, failed_folder) == 'failed':
moveFailedFolder(filepath, failed_folder)
return
switch, _proxy, _timeout, retry, _proxytype = conf.proxy()
for i in range(retry):
if os.path.getsize(path + '/extrafanart-' + str(j) + '.jpg') == 0:
print('[!]Image Download Failed! Trying again. [{}/3]', i + 1)
download_file_with_filename(url, '/extrafanart-' + str(j)+'.jpg', path, conf, filepath,
failed_folder)
continue
else:
break
if os.path.getsize(path + '/extrafanart-' + str(j) + '.jpg') == 0:
return
print('[+]Image Downloaded!', path + '/extrafanart-' + str(j) + '.jpg')
j += 1
# 封面是否下载成功否则移动到failed
def image_download(cover, number, c_word, path, conf: config.Config, filepath, failed_folder):
@@ -397,6 +436,7 @@ def print_files(path, c_word, naming_rule, part, cn_sub, json_data, filepath, fa
print(" <num>" + number + "</num>", file=code)
print(" <premiered>" + release + "</premiered>", file=code)
print(" <cover>" + cover + "</cover>", file=code)
print(" <trailer>" + trailer + "</trailer>", file=code)
print(" <website>" + website + "</website>", file=code)
print("</movie>", file=code)
print("[+]Wrote! " + path + "/" + number + part + c_word + ".nfo")
@@ -428,9 +468,70 @@ def cutImage(imagecut, path, number, c_word):
shutil.copyfile(path + '/' + number + c_word + '-fanart.jpg',path + '/' + number + c_word + '-poster.jpg')
print('[+]Image Copyed! ' + path + '/' + number + c_word + '-poster.jpg')
# 此函数从gui版copy过来用用
# 参数说明
# poster_path
# thumb_path
# cn_sub 中文字幕 参数值为 1 0
# leak 流出 参数值为 1 0
# uncensored 无码 参数值为 1 0
# ========================================================================加水印
def add_mark(poster_path, thumb_path, cn_sub, leak, uncensored, conf:config.Config):
mark_type = ''
if cn_sub:
mark_type += ',字幕'
if leak:
mark_type += ',流出'
if uncensored:
mark_type += ',无码'
add_mark_thread(thumb_path, cn_sub, leak, uncensored, conf)
print('[+]Thumb Add Mark: ' + mark_type.strip(','))
add_mark_thread(poster_path, cn_sub, leak, uncensored, conf)
print('[+]Poster Add Mark: ' + mark_type.strip(','))
def add_mark_thread(pic_path, cn_sub, leak, uncensored, conf):
size = 14
img_pic = Image.open(pic_path)
# 获取自定义位置取余配合pos达到顺时针添加的效果
# 左上 0, 右上 1, 右下 2 左下 3
count = conf.watermark_type()
if cn_sub == 1 or cn_sub == '1':
add_to_pic(pic_path, img_pic, size, count, 1) # 添加
count = (count + 1) % 4
if leak == 1 or leak == '1':
add_to_pic(pic_path, img_pic, size, count, 2)
count = (count + 1) % 4
if uncensored == 1 or uncensored == '1':
add_to_pic(pic_path, img_pic, size, count, 3)
img_pic.close()
def add_to_pic(pic_path, img_pic, size, count, mode):
mark_pic_path = ''
if mode == 1:
mark_pic_path = 'Img/SUB.png'
elif mode == 2:
mark_pic_path = 'Img/LEAK.png'
elif mode == 3:
mark_pic_path = 'Img/UNCENSORED.png'
img_subt = Image.open(mark_pic_path)
scroll_high = int(img_pic.height / size)
scroll_wide = int(scroll_high * img_subt.width / img_subt.height)
img_subt = img_subt.resize((scroll_wide, scroll_high), Image.ANTIALIAS)
r, g, b, a = img_subt.split() # 获取颜色通道保持png的透明性
# 封面四个角的位置
pos = [
{'x': 0, 'y': 0},
{'x': img_pic.width - scroll_wide, 'y': 0},
{'x': img_pic.width - scroll_wide, 'y': img_pic.height - scroll_high},
{'x': 0, 'y': img_pic.height - scroll_high},
]
img_pic.paste(img_subt, (pos[count]['x'], pos[count]['y']), mask=a)
img_pic.save(pic_path, quality=95)
# ========================结束=================================
def paste_file_to_folder(filepath, path, number, c_word, conf: config.Config): # 文件路径,番号,后缀,要移动至的位置
houzhui = str(re.search('[.](iso|ISO|AVI|RMVB|WMV|MOV|MP4|MKV|FLV|TS|WEBM|avi|rmvb|wmv|mov|mp4|mkv|flv|ts|webm)$', filepath).group())
media_res = conf.media_rule()
houzhui = str(re.search(media_res + '$', filepath).group())
file_parent_origin_path = str(pathlib.Path(filepath).parent)
try:
# 如果soft_link=1 使用软链接
@@ -438,15 +539,14 @@ def paste_file_to_folder(filepath, path, number, c_word, conf: config.Config):
os.symlink(filepath, path + '/' + number + c_word + houzhui)
else:
os.rename(filepath, path + '/' + number + c_word + houzhui)
if os.path.exists(file_parent_origin_path + '/' + number + c_word + '.srt'): # 字幕移动
os.rename(file_parent_origin_path + '/' + number + c_word + '.srt', path + '/' + number + c_word + '.srt')
print('[+]Sub moved!')
elif os.path.exists(file_parent_origin_path + '/' + number + c_word + '.ssa'):
os.rename(file_parent_origin_path + '/' + number + c_word + '.ssa', path + '/' + number + c_word + '.ssa')
print('[+]Sub moved!')
elif os.path.exists(file_parent_origin_path + '/' + number + c_word + '.sub'):
os.rename(file_parent_origin_path + '/' + number + c_word + '.sub', path + '/' + number + c_word + '.sub')
sub_res = conf.sub_rule()
for subname in sub_res:
if os.path.exists(os.getcwd() + '/' + number + c_word + subname): # 字幕移动
os.rename(os.getcwd() + '/' + number + c_word + subname, path + '/' + number + c_word + subname)
print('[+]Sub moved!')
return True
except FileExistsError:
print('[-]File Exists! Please check your movie!')
print('[-]move to the root folder of the program.')
@@ -459,23 +559,22 @@ def paste_file_to_folder(filepath, path, number, c_word, conf: config.Config):
def paste_file_to_folder_mode2(filepath, path, multi_part, number, part, c_word, conf): # 文件路径,番号,后缀,要移动至的位置
if multi_part == 1:
number += part # 这时number会被附加上CD1后缀
houzhui = str(re.search('[.](AVI|RMVB|WMV|MOV|MP4|MKV|FLV|TS|WEBM|avi|rmvb|wmv|mov|mp4|mkv|flv|ts|webm|iso|ISO)$', filepath).group())
media_res = conf.media_rule()
houzhui = str(re.search(media_res + '$', filepath).group())
file_parent_origin_path = str(pathlib.Path(filepath).parent)
try:
if conf.soft_link():
os.symlink(filepath, path + '/' + number + part + c_word + houzhui)
else:
os.rename(filepath, path + '/' + number + part + c_word + houzhui)
if os.path.exists(file_parent_origin_path + '/' + number + '.srt'): # 字幕移动
os.rename(file_parent_origin_path + '/' + number + part + c_word + '.srt', path + '/' + number + part + c_word + '.srt')
print('[+]Sub moved!')
elif os.path.exists(file_parent_origin_path + '/' + number + part + c_word + '.ass'):
os.rename(file_parent_origin_path + '/' + number + part + c_word + '.ass', path + '/' + number + part + c_word + '.ass')
print('[+]Sub moved!')
elif os.path.exists(file_parent_origin_path + '/' + number + part + c_word + '.sub'):
os.rename(file_parent_origin_path + '/' + number + part + c_word + '.sub', path + '/' + number + part + c_word + '.sub')
sub_res = conf.sub_rule()
for subname in sub_res:
if os.path.exists(os.getcwd() + '/' + number + c_word + subname): # 字幕移动
os.rename(os.getcwd() + '/' + number + c_word + subname, path + '/' + number + c_word + subname)
print('[+]Sub moved!')
print('[!]Success')
return True
except FileExistsError:
print('[-]File Exists! Please check your movie!')
print('[-]move to the root folder of the program.')
@@ -546,8 +645,19 @@ def core_main(file_path, number_th, conf: config.Config):
if '-c.' in filepath or '-C.' in filepath or '中文' in filepath or '字幕' in filepath:
cn_sub = '1'
c_word = '-C' # 中文字幕影片后缀
# 判断是否无码
if is_uncensored(number):
uncensored = 1
else:
uncensored = 0
if '流出' in filepath:
liuchu = '流出'
leak = 1
else:
leak = 0
# 调试模式检测
if conf.debug():
@@ -570,6 +680,14 @@ def core_main(file_path, number_th, conf: config.Config):
# creatFolder会返回番号路径
image_download( json_data.get('cover'), number, c_word, path, conf, filepath, conf.failed_folder())
# 下载预告片
if json_data.get('trailer'):
trailer_download(json_data.get('trailer'), c_word, number, path, filepath, conf, conf.failed_folder())
# 下载剧照 data, path, conf: config.Config, filepath, failed_folder
if json_data.get('extrafanart'):
extrafanart_download(json_data.get('extrafanart'), path, conf, filepath, conf.failed_folder())
# 裁剪图
cutImage(imagecut, path, number, c_word)
@@ -578,6 +696,17 @@ def core_main(file_path, number_th, conf: config.Config):
# 移动文件
paste_file_to_folder(filepath, path, number, c_word, conf)
poster_path = path + '/' + number + c_word + '-poster.jpg'
thumb_path = path + '/' + number + c_word + '-thumb.jpg'
if conf.is_watermark():
add_mark(poster_path, thumb_path, cn_sub, leak, uncensored, conf)
elif conf.main_mode() == 2:
# 移动文件
paste_file_to_folder_mode2(filepath, path, multi_part, number, part, c_word, conf)
poster_path = path + '/' + number + c_word + '-poster.jpg'
thumb_path = path + '/' + number + c_word + '-thumb.jpg'
if conf.is_watermark():
add_mark(poster_path, thumb_path, cn_sub, leak, uncensored, conf)