Update 1.4

This commit is contained in:
Yoshiko 2019-11-04 13:34:07 +08:00 committed by GitHub
parent 7beeee29e4
commit 71d44bf90c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 766 additions and 631 deletions

View File

@ -17,10 +17,15 @@ if os.path.exists(config_file):
except: except:
print('[-]Config.ini read failed! Please use the offical file!') print('[-]Config.ini read failed! Please use the offical file!')
else: else:
print('[+]config.ini: not found, creating...') print('[+]config.ini: not found, creating...',end='')
with open("config.ini", "wt", encoding='UTF-8') as code: with open("config.ini", "wt", encoding='UTF-8') as code:
print("[common]", file=code)
print("main_mode = 1", file=code)
print("failed_output_folder = failed", file=code)
print("success_output_folder = JAV_output", file=code)
print("", file=code)
print("[proxy]",file=code) print("[proxy]",file=code)
print("proxy=127.0.0.1:1080",file=code) print("proxy=127.0.0.1:1081",file=code)
print("timeout=10", file=code) print("timeout=10", file=code)
print("retry=3", file=code) print("retry=3", file=code)
print("", file=code) print("", file=code)
@ -33,16 +38,21 @@ else:
print("", file=code) print("", file=code)
print("[media]", file=code) print("[media]", file=code)
print("media_warehouse=emby", file=code) print("media_warehouse=emby", file=code)
print("#emby or plex", file=code) print("#emby plex kodi", file=code)
print("#plex only test!", file=code)
print("", file=code) print("", file=code)
print("[directory_capture]", file=code) print("[escape]", file=code)
print("switch=0", file=code) print("literals=\\", file=code)
print("directory=", file=code)
print("", file=code) print("", file=code)
print("everyone switch:1=on, 0=off", file=code) print("[movie_location]", file=code)
print("path=", file=code)
print("", file=code)
print('.',end='')
time.sleep(2) time.sleep(2)
print('.')
print('[+]config.ini: created!') print('[+]config.ini: created!')
print('[+]Please restart the program!')
time.sleep(4)
os._exit(0)
try: try:
config.read(config_file, encoding='UTF-8') config.read(config_file, encoding='UTF-8')
except: except:

View File

@ -1,4 +1,4 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import glob import glob
@ -9,23 +9,24 @@ import sys
from ADC_function import * from ADC_function import *
import json import json
import shutil import shutil
from configparser import ConfigParser
import fnmatch import fnmatch
from configparser import ConfigParser
os.chdir(os.getcwd()) os.chdir(os.getcwd())
# ============global var=========== # ============global var===========
version='1.3' version='1.4'
config = ConfigParser() config = ConfigParser()
config.read(config_file, encoding='UTF-8') config.read(config_file, encoding='UTF-8')
fromPath=config['movie']['path']
Platform = sys.platform Platform = sys.platform
# ==========global var end========= # ==========global var end=========
def moveMovies(fromPath): def moveMovies():
movieFiles = [] movieFiles = []
fromPath = config['movie_location']['path']
if Platform == 'win32': if Platform == 'win32':
movieFormat = ["avi", "rmvb", "wmv", "mov", "mp4", "mkv", "flv", "ts"] movieFormat = ["avi", "rmvb", "wmv", "mov", "mp4", "mkv", "flv", "ts"]
else: else:
@ -34,12 +35,9 @@ def moveMovies(fromPath):
movieFiles = movieFiles + [os.path.join(dirpath, f) movieFiles = movieFiles + [os.path.join(dirpath, f)
for dirpath, dirnames, files in os.walk(fromPath) for dirpath, dirnames, files in os.walk(fromPath)
for f in fnmatch.filter(files, '*.' + fm)] for f in fnmatch.filter(files, '*.' + fm)]
print(movieFiles)
for movie in movieFiles: for movie in movieFiles:
movieName = movie.split('/')[-1] print("Move file " + movie)
print("Move file " + movieName)
if (os.path.exists(os.path.curdir + '/' + movieName)):
print(movieName + "exists, skip.")
else:
shutil.move(movie, os.path.curdir) shutil.move(movie, os.path.curdir)
def UpdateCheck(): def UpdateCheck():
if UpdateCheckSwitch() == '1': if UpdateCheckSwitch() == '1':
@ -56,24 +54,12 @@ def UpdateCheck():
def movie_lists(): def movie_lists():
global exclude_directory_1 global exclude_directory_1
global exclude_directory_2 global exclude_directory_2
directory = config['directory_capture']['directory']
total=[] total=[]
file_type = ['mp4','avi','rmvb','wmv','mov','mkv','flv','ts'] file_type = ['mp4','avi','rmvb','wmv','mov','mkv','flv','ts']
exclude_directory_1 = config['common']['failed_output_folder'] exclude_directory_1 = config['common']['failed_output_folder']
exclude_directory_2 = config['common']['success_output_folder'] exclude_directory_2 = config['common']['success_output_folder']
if directory=='*':
remove_total = []
for o in file_type:
remove_total += glob.glob(r"./" + exclude_directory_1 + "/*." + o)
remove_total += glob.glob(r"./" + exclude_directory_2 + "/*." + o)
for i in os.listdir(os.getcwd()):
for a in file_type: for a in file_type:
total += glob.glob(r"./" + i + "/*." + a) total += glob.glob(r"./*." + a)
for b in remove_total:
total.remove(b)
return total
for a in file_type:
total += glob.glob(r"./" + directory + "/*." + a)
return total return total
def CreatFailedFolder(): def CreatFailedFolder():
if not os.path.exists('failed/'): # 新建failed文件夹 if not os.path.exists('failed/'): # 新建failed文件夹
@ -146,7 +132,7 @@ if __name__ =='__main__':
print('[*]=====================================') print('[*]=====================================')
CreatFailedFolder() CreatFailedFolder()
UpdateCheck() UpdateCheck()
moveMovies(fromPath) moveMovies()
os.chdir(os.getcwd()) os.chdir(os.getcwd())
count = 0 count = 0

253
core.py
View File

@ -10,49 +10,53 @@ import json
from ADC_function import * from ADC_function import *
from configparser import ConfigParser from configparser import ConfigParser
import argparse import argparse
#=========website======== # =========website========
import fc2fans_club import fc2fans_club
import siro import siro
import avsox import avsox
import javbus import javbus
import javdb import javdb
#=========website========
#初始化全局变量 # =========website========
# 初始化全局变量
Config = ConfigParser() Config = ConfigParser()
Config.read(config_file, encoding='UTF-8') Config.read(config_file, encoding='UTF-8')
try: try:
option = ReadMediaWarehouse() option = ReadMediaWarehouse()
except: except:
print('[-]Config media_warehouse read failed!') print('[-]Config media_warehouse read failed!')
title='' title = '' #标题
studio='' studio = '' #片商
year='' year = '' #年份
outline='' outline = '' #简介
runtime='' runtime = '' #运行时间
director='' director = '' #导演
actor_list=[] actor_list = [] #演员列表
actor='' actor = '' #演员
release='' release = '' #上市时间
number='' number = '' #番号
cover='' cover = '' #封面URL
imagecut='' imagecut = '' #封面裁剪指数
tag=[] tag = [] #标签
cn_sub='' cn_sub = '' #中文字幕
multi_part=0 c_word = '' #中文字幕后缀
part='' multi_part = 0 #多集
path='' part = '' #多集
houzhui='' path = '' #路径
website='' houzhui = '' #后缀
json_data={} website = '' #网站
actor_photo={} json_data = {} #元数据集合
cover_small='' actor_photo = {} #演员图片URL
naming_rule =''#eval(config['Name_Rule']['naming_rule']) cover_small = '' #小封面链接
location_rule=''#eval(config['Name_Rule']['location_rule']) naming_rule = '' #元数据内标题命名规则
program_mode = Config['common']['main_mode'] location_rule = ''#位置规则
failed_folder = Config['common']['failed_output_folder'] program_mode = Config['common']['main_mode'] #运行模式
success_folder = Config['common']['success_output_folder'] failed_folder = Config['common']['failed_output_folder'] #失败输出目录
#=====================本地文件处理=========================== success_folder = Config['common']['success_output_folder'] #成功输出目录
# =====================本地文件处理===========================
def escapePath(path): # Remove escape literals def escapePath(path): # Remove escape literals
escapeLiterals = Config['escape']['literals'] escapeLiterals = Config['escape']['literals']
@ -60,30 +64,39 @@ def escapePath(path): # Remove escape literals
for literal in escapeLiterals: for literal in escapeLiterals:
path = path.replace(backslash+literal,'') path = path.replace(backslash+literal,'')
return path return path
def moveFailedFolder(): def moveFailedFolder():
global filepath global filepath
print('[-]Move to Failed output folder') print('[-]Move to Failed output folder')
shutil.move(filepath, str(os.getcwd()) + '/' + failed_folder + '/') shutil.move(filepath, str(os.getcwd()) + '/' + failed_folder + '/')
os._exit(0) os._exit(0)
def argparse_get_file(): def argparse_get_file():
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument("--number", help="Enter Number on here", default='') parser.add_argument("--number", help="Enter Number on here", default='')
parser.add_argument("file", help="Write the file path on here") parser.add_argument("file", help="Write the file path on here")
args = parser.parse_args() args = parser.parse_args()
return (args.file, args.number) return (args.file, args.number)
def CreatFailedFolder(): def CreatFailedFolder():
if not os.path.exists(failed_folder+'/'): # 新建failed文件夹 if not os.path.exists(failed_folder + '/'): # 新建failed文件夹
try: try:
os.makedirs(failed_folder+'/') os.makedirs(failed_folder + '/')
except: except:
print("[-]failed!can not be make Failed output folder\n[-](Please run as Administrator)") print("[-]failed!can not be make Failed output folder\n[-](Please run as Administrator)")
os._exit(0) os._exit(0)
def getDataState(json_data): #元数据获取失败检测
def getDataState(json_data): # 元数据获取失败检测
if json_data['title'] == '' or json_data['title'] == 'None' or json_data['title'] == 'null': if json_data['title'] == '' or json_data['title'] == 'None' or json_data['title'] == 'null':
return 0 return 0
else: else:
return 1 return 1
def getDataFromJSON(file_number): #从JSON返回元数据
def getDataFromJSON(file_number): # 从JSON返回元数据
global title global title
global studio global studio
global year global year
@ -113,7 +126,7 @@ def getDataFromJSON(file_number): #从JSON返回元数据
json_data = json.loads(avsox.main(file_number)) json_data = json.loads(avsox.main(file_number))
if getDataState(json_data) == 0: # 如果元数据获取失败,请求番号至其他网站抓取 if getDataState(json_data) == 0: # 如果元数据获取失败,请求番号至其他网站抓取
json_data = json.loads(javdb.main(file_number)) json_data = json.loads(javdb.main(file_number))
#== # ==
elif re.match('\d+\D+', file_number): elif re.match('\d+\D+', file_number):
json_data = json.loads(siro.main(file_number)) json_data = json.loads(siro.main(file_number))
if getDataState(json_data) == 0: # 如果元数据获取失败,请求番号至其他网站抓取 if getDataState(json_data) == 0: # 如果元数据获取失败,请求番号至其他网站抓取
@ -139,7 +152,7 @@ def getDataFromJSON(file_number): #从JSON返回元数据
# ================================================网站规则添加结束================================================ # ================================================网站规则添加结束================================================
title = str(json_data['title']).replace(' ','') title = str(json_data['title']).replace(' ', '')
studio = json_data['studio'] studio = json_data['studio']
year = json_data['year'] year = json_data['year']
outline = json_data['outline'] outline = json_data['outline']
@ -152,7 +165,7 @@ def getDataFromJSON(file_number): #从JSON返回元数据
try: try:
cover_small = json_data['cover_small'] cover_small = json_data['cover_small']
except: except:
cover_small='' cover_small = ''
imagecut = json_data['imagecut'] imagecut = json_data['imagecut']
tag = str(json_data['tag']).strip("[ ]").replace("'", '').replace(" ", '').split(',') # 字符串转列表 @ tag = str(json_data['tag']).strip("[ ]").replace("'", '').replace(" ", '').split(',') # 字符串转列表 @
actor = str(actor_list).strip("[ ]").replace("'", '').replace(" ", '') actor = str(actor_list).strip("[ ]").replace("'", '').replace(" ", '')
@ -167,7 +180,6 @@ def getDataFromJSON(file_number): #从JSON返回元数据
if imagecut == '3': if imagecut == '3':
DownloadFileWithFilename() DownloadFileWithFilename()
# ====================处理异常字符====================== #\/:*?"<>| # ====================处理异常字符====================== #\/:*?"<>|
title = title.replace('\\', '') title = title.replace('\\', '')
title = title.replace('/', '') title = title.replace('/', '')
@ -185,6 +197,8 @@ def getDataFromJSON(file_number): #从JSON返回元数据
naming_rule = eval(config['Name_Rule']['naming_rule']) naming_rule = eval(config['Name_Rule']['naming_rule'])
location_rule = eval(config['Name_Rule']['location_rule']) location_rule = eval(config['Name_Rule']['location_rule'])
def smallCoverCheck(): def smallCoverCheck():
if imagecut == 3: if imagecut == 3:
if option == 'emby': if option == 'emby':
@ -195,15 +209,18 @@ def smallCoverCheck():
img = Image.open('1.jpg') img = Image.open('1.jpg')
w = img.width w = img.width
h = img.height h = img.height
img.save(path + '/' + number + '.png') img.save(path + '/' + number + c_word + '.png')
time.sleep(1) time.sleep(1)
os.remove(path + '/1.jpg') os.remove(path + '/1.jpg')
if option == 'kodi': if option == 'kodi':
DownloadFileWithFilename(cover_small, '1.jpg', path) DownloadFileWithFilename(cover_small, '1.jpg', path)
try:
img = Image.open(path + '/1.jpg') img = Image.open(path + '/1.jpg')
except Exception:
img = Image.open('1.jpg')
w = img.width w = img.width
h = img.height h = img.height
img.save(path + '/' + number + '-poster.jpg') img.save(path + '/' + number + c_word +'-poster.jpg')
time.sleep(1) time.sleep(1)
os.remove(path + '/1.jpg') os.remove(path + '/1.jpg')
if option == 'plex': if option == 'plex':
@ -216,25 +233,28 @@ def smallCoverCheck():
h = img.height h = img.height
img.save(path + '/poster.png') img.save(path + '/poster.png')
os.remove(path + '/1.jpg') os.remove(path + '/1.jpg')
def creatFolder(): #创建文件夹
def creatFolder(): # 创建文件夹
global actor global actor
global path global path
if len(os.getcwd()+path) > 240: #新建成功输出文件夹 if len(os.getcwd() + path) > 240: # 新建成功输出文件夹
path = success_folder+'/'+location_rule.replace("'actor'","'超多人'",3).replace("actor","'超多人'",3) #path为影片+元数据所在目录 path = success_folder+'/'+location_rule.replace("'actor'","'manypeople'",3).replace("actor","'manypeople'",3) #path为影片+元数据所在目录
else: else:
path = success_folder+'/'+location_rule path = success_folder + '/' + location_rule
#print(path) # print(path)
if not os.path.exists(path): if not os.path.exists(path):
path = escapePath(path) path = escapePath(path)
try: try:
os.makedirs(path) os.makedirs(path)
except: except:
path = success_folder+'/'+location_rule.replace('/['+number+']-'+title,"/number") path = success_folder + '/' + location_rule.replace('/[' + number + ']-' + title, "/number")
path = escapePath(path) path = escapePath(path)
#print(path)
os.makedirs(path) os.makedirs(path)
#=====================资源下载部分===========================
def DownloadFileWithFilename(url,filename,path): #path = examle:photo , video.in the Project Folder!
# =====================资源下载部分===========================
def DownloadFileWithFilename(url, filename, path): # path = examle:photo , video.in the Project Folder!
try: try:
proxy = Config['proxy']['proxy'] proxy = Config['proxy']['proxy']
timeout = int(Config['proxy']['timeout']) timeout = int(Config['proxy']['timeout'])
@ -250,7 +270,8 @@ def DownloadFileWithFilename(url,filename,path): #path = examle:photo , video.in
os.makedirs(path) os.makedirs(path)
headers = { headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'} 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'}
r = requests.get(url, headers=headers, timeout=timeout,proxies={"http": "http://" + str(proxy), "https": "https://" + str(proxy)}) r = requests.get(url, headers=headers, timeout=timeout,
proxies={"http": "http://" + str(proxy), "https": "https://" + str(proxy)})
if r == '': if r == '':
print('[-]Movie Data not found!') print('[-]Movie Data not found!')
os._exit(0) os._exit(0)
@ -271,48 +292,52 @@ def DownloadFileWithFilename(url,filename,path): #path = examle:photo , video.in
return return
except requests.exceptions.RequestException: except requests.exceptions.RequestException:
i += 1 i += 1
print('[-]Image Download : Connect retry '+str(i)+'/'+str(retry_count)) print('[-]Image Download : Connect retry ' + str(i) + '/' + str(retry_count))
except requests.exceptions.ConnectionError: except requests.exceptions.ConnectionError:
i += 1 i += 1
print('[-]Image Download : Connect retry '+str(i)+'/'+str(retry_count)) print('[-]Image Download : Connect retry ' + str(i) + '/' + str(retry_count))
except requests.exceptions.ProxyError: except requests.exceptions.ProxyError:
i += 1 i += 1
print('[-]Image Download : Connect retry '+str(i)+'/'+str(retry_count)) print('[-]Image Download : Connect retry ' + str(i) + '/' + str(retry_count))
except requests.exceptions.ConnectTimeout: except requests.exceptions.ConnectTimeout:
i += 1 i += 1
print('[-]Image Download : Connect retry '+str(i)+'/'+str(retry_count)) print('[-]Image Download : Connect retry ' + str(i) + '/' + str(retry_count))
print('[-]Connect Failed! Please check your Proxy or Network!') print('[-]Connect Failed! Please check your Proxy or Network!')
moveFailedFolder() moveFailedFolder()
def imageDownload(filepath): #封面是否下载成功否则移动到failed
def imageDownload(): # 封面是否下载成功否则移动到failed
if option == 'emby': if option == 'emby':
if DownloadFileWithFilename(cover, number + '.jpg', path) == 'failed': if DownloadFileWithFilename(cover, number + '.jpg', path) == 'failed':
moveFailedFolder() moveFailedFolder()
DownloadFileWithFilename(cover, number + '.jpg', path) DownloadFileWithFilename(cover, number + '.jpg', path)
if multi_part == 1: if multi_part == 1:
old_name = os.path.join(path, number + '.jpg') old_name = os.path.join(path, number + '.jpg')
new_name = os.path.join(path, number + part + '.jpg') new_name = os.path.join(path, number + '.jpg')
os.rename(old_name, new_name) os.rename(old_name, new_name)
print('[+]Image Downloaded!', path + '/' + number + part + '.jpg') print('[+]Image Downloaded!', path + '/' + number + '.jpg')
else: else:
print('[+]Image Downloaded!', path + '/' + number + '.jpg') print('[+]Image Downloaded!', path + '/' + number + '.jpg')
elif option == 'kodi':
if DownloadFileWithFilename(cover, number + '-fanart.jpg', path) == 'failed':
moveFailedFolder()
DownloadFileWithFilename(cover, number + '-fanart.jpg', path)
print('[+]Image Downloaded!', path + '/' + number + '-fanart.jpg')
elif option == 'plex': elif option == 'plex':
if DownloadFileWithFilename(cover, 'fanart.jpg', path) == 'failed': if DownloadFileWithFilename(cover, 'fanart.jpg', path) == 'failed':
moveFailedFolder() moveFailedFolder()
DownloadFileWithFilename(cover, 'fanart.jpg', path) DownloadFileWithFilename(cover, 'fanart.jpg', path)
print('[+]Image Downloaded!', path + '/fanart.jpg') print('[+]Image Downloaded!', path + '/fanart.jpg')
def PrintFiles(filepath): elif option == 'kodi':
if DownloadFileWithFilename(cover, number + '-fanart.jpg', path) == 'failed':
moveFailedFolder()
DownloadFileWithFilename(cover, number + '-fanart.jpg', path)
print('[+]Image Downloaded!', path + '/' + number + '-fanart.jpg')
def PrintFiles():
try: try:
if not os.path.exists(path): if not os.path.exists(path):
os.makedirs(path) os.makedirs(path)
if option == 'plex': if option == 'plex':
with open(path + "/" + number + ".nfo", "wt", encoding='UTF-8') as code: with open(path + "/" + number + c_word + ".nfo", "wt", encoding='UTF-8') as code:
print("<movie>", file=code) print("<movie>", file=code)
print(" <title>" + naming_rule + "</title>", file=code) print(" <title>" + naming_rule + part + "</title>", file=code)
print(" <set>", file=code) print(" <set>", file=code)
print(" </set>", file=code) print(" </set>", file=code)
print(" <studio>" + studio + "+</studio>", file=code) print(" <studio>" + studio + "+</studio>", file=code)
@ -357,9 +382,9 @@ def PrintFiles(filepath):
print("</movie>", file=code) print("</movie>", file=code)
print("[+]Writeed! " + path + "/" + number + ".nfo") print("[+]Writeed! " + path + "/" + number + ".nfo")
elif option == 'emby': elif option == 'emby':
with open(path + "/" + number + ".nfo", "wt", encoding='UTF-8') as code: with open(path + "/" + number + c_word + ".nfo", "wt", encoding='UTF-8') as code:
print("<movie>", file=code) print("<movie>", file=code)
print(" <title>" + naming_rule + "</title>", file=code) print(" <title>" + naming_rule + part + "</title>", file=code)
print(" <set>", file=code) print(" <set>", file=code)
print(" </set>", file=code) print(" </set>", file=code)
print(" <studio>" + studio + "+</studio>", file=code) print(" <studio>" + studio + "+</studio>", file=code)
@ -402,11 +427,11 @@ def PrintFiles(filepath):
print(" <cover>" + cover + "</cover>", file=code) print(" <cover>" + cover + "</cover>", file=code)
print(" <website>" + "https://www.javbus.com/" + number + "</website>", file=code) print(" <website>" + "https://www.javbus.com/" + number + "</website>", file=code)
print("</movie>", file=code) print("</movie>", file=code)
print("[+]Writeed! " + path + "/" + number + ".nfo") print("[+]Writeed! " + path + "/" + number + c_word + ".nfo")
elif option == 'kodi': elif option == 'kodi':
with open(path + "/" + number + ".nfo", "wt", encoding='UTF-8') as code: with open(path + "/" + number + c_word + ".nfo", "wt", encoding='UTF-8') as code:
print("<movie>", file=code) print("<movie>", file=code)
print(" <title>" + naming_rule + "</title>", file=code) print(" <title>" + naming_rule + part + "</title>", file=code)
print(" <set>", file=code) print(" <set>", file=code)
print(" </set>", file=code) print(" </set>", file=code)
print(" <studio>" + studio + "+</studio>", file=code) print(" <studio>" + studio + "+</studio>", file=code)
@ -448,7 +473,7 @@ def PrintFiles(filepath):
print(" <cover>" + cover + "</cover>", file=code) print(" <cover>" + cover + "</cover>", file=code)
print(" <website>" + "https://www.javbus.com/" + number + "</website>", file=code) print(" <website>" + "https://www.javbus.com/" + number + "</website>", file=code)
print("</movie>", file=code) print("</movie>", file=code)
print("[+]Writeed! " + path + "/" + number + ".nfo") print("[+]Writeed! " + path + "/" + number + c_word + ".nfo")
except IOError as e: except IOError as e:
print("[-]Write Failed!") print("[-]Write Failed!")
print(e) print(e)
@ -457,6 +482,8 @@ def PrintFiles(filepath):
print(e1) print(e1)
print("[-]Write Failed!") print("[-]Write Failed!")
moveFailedFolder() moveFailedFolder()
def cutImage(): def cutImage():
if option == 'plex': if option == 'plex':
if imagecut == 1: if imagecut == 1:
@ -505,15 +532,19 @@ def cutImage():
img = Image.open(path + '/' + number + '-fanart.jpg') img = Image.open(path + '/' + number + '-fanart.jpg')
w = img.width w = img.width
h = img.height h = img.height
try:
img = img.convert('RGB')
img.save(path + '/' + number + '-poster.jpg') img.save(path + '/' + number + '-poster.jpg')
def pasteFileToFolder(filepath, path): #文件路径,番号,后缀,要移动至的位置 except:
img = img.convert('RGB')
img.save(path + '/' + number + '-poster.jpg')
def pasteFileToFolder(filepath, path): # 文件路径,番号,后缀,要移动至的位置
global houzhui global houzhui
houzhui = str(re.search('[.](AVI|RMVB|WMV|MOV|MP4|MKV|FLV|TS|avi|rmvb|wmv|mov|mp4|mkv|flv|ts)$', filepath).group()) houzhui = str(re.search('[.](AVI|RMVB|WMV|MOV|MP4|MKV|FLV|TS|avi|rmvb|wmv|mov|mp4|mkv|flv|ts)$', filepath).group())
if part == '-CD1' and option == 'kodi':
global number
number += part
try: try:
os.rename(filepath, path + '/' + number + houzhui) os.rename(filepath, path + '/' + number + c_word + houzhui)
except FileExistsError: except FileExistsError:
print('[-]File Exists! Please check your movie!') print('[-]File Exists! Please check your movie!')
print('[-]move to the root folder of the program.') print('[-]move to the root folder of the program.')
@ -521,7 +552,28 @@ def pasteFileToFolder(filepath, path): #文件路径,番号,后缀,要移
except PermissionError: except PermissionError:
print('[-]Error! Please run as administrator!') print('[-]Error! Please run as administrator!')
os._exit(0) os._exit(0)
def renameJpgToBackdrop_copy():
def pasteFileToFolder_mode2(filepath, path): # 文件路径,番号,后缀,要移动至的位置
global houzhui
global number
if multi_part == 1:
number += part # 这时number会被附加上CD1后缀
houzhui = str(re.search('[.](AVI|RMVB|WMV|MOV|MP4|MKV|FLV|TS|avi|rmvb|wmv|mov|mp4|mkv|flv|ts)$', filepath).group())
path = success_folder + '/' + location_rule
try:
os.rename(filepath, path + '/' + number + part + c_word + houzhui)
print('[!]Success')
except FileExistsError:
print('[-]File Exists! Please check your movie!')
print('[-]move to the root folder of the program.')
os._exit(0)
except PermissionError:
print('[-]Error! Please run as administrator!')
os._exit(0)
def copyRenameJpgToBackdrop():
if option == 'plex': if option == 'plex':
shutil.copy(path + '/fanart.jpg', path + '/Backdrop.jpg') shutil.copy(path + '/fanart.jpg', path + '/Backdrop.jpg')
shutil.copy(path + '/poster.png', path + '/thumb.png') shutil.copy(path + '/poster.png', path + '/thumb.png')
@ -529,22 +581,19 @@ def renameJpgToBackdrop_copy():
shutil.copy(path + '/' + number + '.jpg', path + '/Backdrop.jpg') shutil.copy(path + '/' + number + '.jpg', path + '/Backdrop.jpg')
if option == 'kodi': if option == 'kodi':
shutil.copy(path + '/' + number + '-fanart.jpg', path + '/Backdrop.jpg') shutil.copy(path + '/' + number + '-fanart.jpg', path + '/Backdrop.jpg')
def renameBackdropToJpg_copy():
if option == 'plex':
shutil.copy(path + '/fanart.jpg', path + '/Backdrop.jpg')
shutil.copy(path + '/poster.png', path + '/thumb.png')
if option == 'emby':
shutil.copy(path + '/Backdrop.jpg', path + '/' + number + '.jpg')
print('[+]Image Downloaded!', path + '/' + number + '.jpg')
if option == 'kodi':
print('跳过分集图片下载')
def get_part(filepath): def get_part(filepath):
try: try:
if re.search('-CD\d+', filepath): if re.search('-CD\d+', filepath):
return re.findall('-CD\d+', filepath)[0] return re.findall('-CD\d+', filepath)[0]
if re.search('-cd\d+', filepath):
return re.findall('-cd\d+', filepath)[0]
except: except:
print("[-]failed!Please rename the filename again!") print("[-]failed!Please rename the filename again!")
moveFailedFolder() moveFailedFolder()
def debug_mode(): def debug_mode():
try: try:
if config['debug_mode']['switch'] == '1': if config['debug_mode']['switch'] == '1':
@ -558,19 +607,22 @@ def debug_mode():
print('[+] -', i, ':', v) print('[+] -', i, ':', v)
print('[+] ---Debug info---') print('[+] ---Debug info---')
except: except:
aaa='' aaa = ''
if __name__ == '__main__': if __name__ == '__main__':
filepath=argparse_get_file()[0] #影片的路径 filepath = argparse_get_file()[0] # 影片的路径
if '-CD' in filepath or '-cd' in filepath: if '-CD' in filepath or '-cd' in filepath:
multi_part = 1 multi_part = 1
part = get_part(filepath) part = get_part(filepath)
if '-c.' in filepath or '-C.' in filepath or '中文' in filepath or '字幕' in filepath: if '-c.' in filepath or '-C.' in filepath or '中文' in filepath or '字幕' in filepath:
cn_sub='1' cn_sub = '1'
c_word = '-C'
if argparse_get_file()[1] == '': #获取手动拉去影片获取的番号 if argparse_get_file()[1] == '': # 获取手动拉去影片获取的番号
try: try:
number = str(re.findall(r'(.+?)\.',str(re.search('([^<>/\\\\|:""\\*\\?]+)\\.\\w+$',filepath).group()))).strip("['']").replace('_','-') number = str(re.findall(r'(.+?)\.', str(re.search('([^<>/\\\\|:""\\*\\?]+)\\.\\w+$', filepath).group()))).strip("['']").replace('_', '-')
print("[!]Making Data for [" + number + "]") print("[!]Making Data for [" + number + "]")
except: except:
print("[-]failed!Please rename the filename again!") print("[-]failed!Please rename the filename again!")
@ -582,17 +634,14 @@ if __name__ == '__main__':
debug_mode() debug_mode()
creatFolder() # 创建文件夹 creatFolder() # 创建文件夹
if program_mode == '1': if program_mode == '1':
if part == '-CD1' or multi_part == 0: if multi_part == 1:
number += part # 这时number会被附加上CD1后缀
smallCoverCheck() smallCoverCheck()
imageDownload(filepath) # creatFoder会返回番号路径 imageDownload() # creatFoder会返回番号路径
if multi_part == 1 and option != 'kodi':
number += part
PrintFiles(filepath) # 打印文件
cutImage() # 裁剪图 cutImage() # 裁剪图
renameJpgToBackdrop_copy() copyRenameJpgToBackdrop()
else: PrintFiles() # 打印文件
number += part # renameBackdropToJpg_copy()
renameBackdropToJpg_copy()
pasteFileToFolder(filepath, path) # 移动文件 pasteFileToFolder(filepath, path) # 移动文件
elif program_mode == '2': elif program_mode == '2':
pasteFileToFolder(filepath, path) # 移动文件 pasteFileToFolder_mode2(filepath, path) # 移动文件

90
girl.py Normal file
View File

@ -0,0 +1,90 @@
# coding=utf-8
import csv
import re
from lxml import etree
import json
from bs4 import BeautifulSoup
from ADC_function import *
import os
import datetime
def getActorURL(htmlcode):
html = etree.fromstring(htmlcode, etree.HTMLParser()) # //table/tr[1]/td[1]/text()
result1 = html.xpath('//*[@id="waterfall"]/div/a/@href')
return result1
# =====
def getName(htmlcode):
html = etree.fromstring(htmlcode, etree.HTMLParser())
result1 = str(html.xpath('//*[@id="waterfall"]/div[1]/div/div[2]/span/text()')).strip(" ['']")
return result1
def getActorPhotoURL(htmlcode):
html = etree.fromstring(htmlcode, etree.HTMLParser())
result1 = str(html.xpath('//*[@id="waterfall"]/div[1]/div/div[1]/img/@src')).strip(" ['']")
return result1
def getBirthday(htmlcode):
html = etree.fromstring(htmlcode, etree.HTMLParser())
result1 = str(html.xpath('//p[contains(text(),"生日: ")]/text()')).strip(" ['']")
return result1
def getAge(htmlcode):
html = etree.fromstring(htmlcode, etree.HTMLParser())
result1 = str(html.xpath('//p[contains(text(),"年齡: ")]/text()')).strip(" ['']")
return result1
def getHigh(htmlcode):
html = etree.fromstring(htmlcode, etree.HTMLParser())
result1 = str(html.xpath('//p[contains(text(),"身高: ")]/text()')).strip(" ['']")
return result1
def getCup(htmlcode):
html = etree.fromstring(htmlcode, etree.HTMLParser())
result1 = str(html.xpath('//p[contains(text(),"罩杯: ")]/text()')).strip(" ['']")
return result1
def getInfo(htmlcode,xpath):
html = etree.fromstring(htmlcode, etree.HTMLParser())
result1 = str(html.xpath(xpath)).strip(" ['']")
return result1
# =====
filename = '2.csv'
def create_csv():
path = filename
with open(path, 'w') as f:
print("名称,头像URL,个人URL,生日,年龄,身高,罩杯", file=f, )
def write_csv(htmlcode, url):
path = filename
with open(path, 'a+') as f:
print(getName(htmlcode), end=',', file=f)
print(getActorPhotoURL(htmlcode), end=',', file=f)
print(url, end=',', file=f)
print(getBirthday(htmlcode).strip('生日: '), end=',', file=f)
print(getAge(htmlcode).strip('年齡: '), end=',', file=f)
print(getHigh(htmlcode).strip('身高: ').strip('cm'), end=',', file=f)
print(getCup(htmlcode).strip('罩杯: '), file=f)
def main(url):
actor_list = getActorURL(get_html(url))
b = 0
c = len(actor_list)
for i in actor_list:
try:
htmlcode = get_html(i)
write_csv(htmlcode, i)
b = b + 1
print('[' + str(b) + '/' + str(c) + ']', 'writed', getName(htmlcode))
except:
print('error')
b = b + 1
continue
if os.path.exists(filename) == False:
print('create file')
create_csv()
a = 198
while a <= 202:
print('page:', a)
main('https://www.javbus.com/actresses/' + str(a))
print(datetime.datetime.now().strftime("%Y.%m.%d-%H:%M:%S"))
a = a + 1