Update 1.7
This commit is contained in:
parent
5e34602836
commit
7ccc718b4f
@ -7,6 +7,7 @@ import os
|
|||||||
import re
|
import re
|
||||||
import time
|
import time
|
||||||
import sys
|
import sys
|
||||||
|
from lxml import etree
|
||||||
|
|
||||||
config_file='config.ini'
|
config_file='config.ini'
|
||||||
config = ConfigParser()
|
config = ConfigParser()
|
||||||
@ -58,6 +59,12 @@ else:
|
|||||||
except:
|
except:
|
||||||
print('[-]Config.ini read failed! Please use the offical file!')
|
print('[-]Config.ini read failed! Please use the offical file!')
|
||||||
|
|
||||||
|
def getDataState(json_data): # 元数据获取失败检测
|
||||||
|
if json_data['title'] == '' or json_data['title'] == 'None' or json_data['title'] == 'null':
|
||||||
|
return 0
|
||||||
|
else:
|
||||||
|
return 1
|
||||||
|
|
||||||
def ReadMediaWarehouse():
|
def ReadMediaWarehouse():
|
||||||
return config['media']['media_warehouse']
|
return config['media']['media_warehouse']
|
||||||
|
|
||||||
@ -69,6 +76,12 @@ def UpdateCheckSwitch():
|
|||||||
return '0'
|
return '0'
|
||||||
elif check == '':
|
elif check == '':
|
||||||
return '0'
|
return '0'
|
||||||
|
|
||||||
|
def getXpathSingle(htmlcode,xpath):
|
||||||
|
html = etree.fromstring(htmlcode, etree.HTMLParser())
|
||||||
|
result1 = str(html.xpath(xpath)).strip(" ['']")
|
||||||
|
return result1
|
||||||
|
|
||||||
def get_html(url,cookies = None):#网页请求核心
|
def get_html(url,cookies = None):#网页请求核心
|
||||||
try:
|
try:
|
||||||
proxy = config['proxy']['proxy']
|
proxy = config['proxy']['proxy']
|
||||||
|
@ -15,7 +15,7 @@ os.chdir(os.getcwd())
|
|||||||
|
|
||||||
# ============global var===========
|
# ============global var===========
|
||||||
|
|
||||||
version='1.5'
|
version='1.7'
|
||||||
|
|
||||||
config = ConfigParser()
|
config = ConfigParser()
|
||||||
config.read(config_file, encoding='UTF-8')
|
config.read(config_file, encoding='UTF-8')
|
||||||
@ -35,7 +35,6 @@ def moveMovies():
|
|||||||
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:
|
||||||
print("Move file " + movie)
|
print("Move file " + movie)
|
||||||
shutil.move(movie, os.path.curdir)
|
shutil.move(movie, os.path.curdir)
|
||||||
@ -45,8 +44,8 @@ def UpdateCheck():
|
|||||||
html = json.loads(str(html2))
|
html = json.loads(str(html2))
|
||||||
|
|
||||||
if not version == html['version']:
|
if not version == html['version']:
|
||||||
print('[*] * New update ' + html['version'] + ' *')
|
print('[*] * New update ' + html['version'] + ' *')
|
||||||
print('[*] * Download *')
|
print('[*] * Download *')
|
||||||
print('[*] ' + html['download'])
|
print('[*] ' + html['download'])
|
||||||
print('[*]=====================================')
|
print('[*]=====================================')
|
||||||
else:
|
else:
|
||||||
|
49
core.py
49
core.py
@ -16,9 +16,9 @@ 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')
|
||||||
@ -89,13 +89,6 @@ def CreatFailedFolder():
|
|||||||
os._exit(0)
|
os._exit(0)
|
||||||
|
|
||||||
|
|
||||||
def getDataState(json_data): # 元数据获取失败检测
|
|
||||||
if json_data['title'] == '' or json_data['title'] == 'None' or json_data['title'] == 'null':
|
|
||||||
return 0
|
|
||||||
else:
|
|
||||||
return 1
|
|
||||||
|
|
||||||
|
|
||||||
def getDataFromJSON(file_number): # 从JSON返回元数据
|
def getDataFromJSON(file_number): # 从JSON返回元数据
|
||||||
global title
|
global title
|
||||||
global studio
|
global studio
|
||||||
@ -131,7 +124,7 @@ def getDataFromJSON(file_number): # 从JSON返回元数据
|
|||||||
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: # 如果元数据获取失败,请求番号至其他网站抓取
|
||||||
json_data = json.loads(javbus.main(file_number))
|
json_data = json.loads(javbus.main(file_number))
|
||||||
elif 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 'fc2' in file_number or 'FC2' in file_number:
|
elif 'fc2' in file_number or 'FC2' in file_number:
|
||||||
@ -308,16 +301,16 @@ def DownloadFileWithFilename(url, filename, path): # path = examle:photo , vide
|
|||||||
|
|
||||||
def imageDownload(): # 封面是否下载成功,否则移动到failed
|
def imageDownload(): # 封面是否下载成功,否则移动到failed
|
||||||
if option == 'emby':
|
if option == 'emby':
|
||||||
if DownloadFileWithFilename(cover, number + '.jpg', path) == 'failed':
|
if DownloadFileWithFilename(cover, number + c_word + '.jpg', path) == 'failed':
|
||||||
moveFailedFolder()
|
moveFailedFolder()
|
||||||
DownloadFileWithFilename(cover, number + '.jpg', path)
|
DownloadFileWithFilename(cover, number + c_word + '.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 + c_word + '.jpg')
|
||||||
new_name = os.path.join(path, number + '.jpg')
|
new_name = os.path.join(path, number + c_word + '.jpg')
|
||||||
os.rename(old_name, new_name)
|
os.rename(old_name, new_name)
|
||||||
print('[+]Image Downloaded!', path + '/' + number + '.jpg')
|
print('[+]Image Downloaded!', path + '/' + number + c_word + '.jpg')
|
||||||
else:
|
else:
|
||||||
print('[+]Image Downloaded!', path + '/' + number + '.jpg')
|
print('[+]Image Downloaded!', path + '/' + number + c_word + '.jpg')
|
||||||
elif option == 'plex':
|
elif option == 'plex':
|
||||||
if DownloadFileWithFilename(cover, 'fanart.jpg', path) == 'failed':
|
if DownloadFileWithFilename(cover, 'fanart.jpg', path) == 'failed':
|
||||||
moveFailedFolder()
|
moveFailedFolder()
|
||||||
@ -393,9 +386,9 @@ def PrintFiles():
|
|||||||
print(" <plot>" + outline + "</plot>", file=code)
|
print(" <plot>" + outline + "</plot>", file=code)
|
||||||
print(" <runtime>" + str(runtime).replace(" ", "") + "</runtime>", file=code)
|
print(" <runtime>" + str(runtime).replace(" ", "") + "</runtime>", file=code)
|
||||||
print(" <director>" + director + "</director>", file=code)
|
print(" <director>" + director + "</director>", file=code)
|
||||||
print(" <poster>" + number + ".png</poster>", file=code)
|
print(" <poster>" + number + c_word + ".png</poster>", file=code)
|
||||||
print(" <thumb>" + number + ".png</thumb>", file=code)
|
print(" <thumb>" + number + c_word + ".png</thumb>", file=code)
|
||||||
print(" <fanart>" + number + '.jpg' + "</fanart>", file=code)
|
print(" <fanart>" + number + c_word + '.jpg' + "</fanart>", file=code)
|
||||||
try:
|
try:
|
||||||
for key, value in actor_photo.items():
|
for key, value in actor_photo.items():
|
||||||
print(" <actor>", file=code)
|
print(" <actor>", file=code)
|
||||||
@ -504,19 +497,19 @@ def cutImage():
|
|||||||
elif option == 'emby':
|
elif option == 'emby':
|
||||||
if imagecut == 1:
|
if imagecut == 1:
|
||||||
try:
|
try:
|
||||||
img = Image.open(path + '/' + number + '.jpg')
|
img = Image.open(path + '/' + number + c_word + '.jpg')
|
||||||
imgSize = img.size
|
imgSize = img.size
|
||||||
w = img.width
|
w = img.width
|
||||||
h = img.height
|
h = img.height
|
||||||
img2 = img.crop((w / 1.9, 0, w, h))
|
img2 = img.crop((w / 1.9, 0, w, h))
|
||||||
img2.save(path + '/' + number + '.png')
|
img2.save(path + '/' + number + c_word + '.png')
|
||||||
except:
|
except:
|
||||||
print('[-]Cover cut failed!')
|
print('[-]Cover cut failed!')
|
||||||
elif imagecut == 0:
|
elif imagecut == 0:
|
||||||
img = Image.open(path + '/' + number + '.jpg')
|
img = Image.open(path + '/' + number + c_word + '.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')
|
||||||
elif option == 'kodi':
|
elif option == 'kodi':
|
||||||
if imagecut == 1:
|
if imagecut == 1:
|
||||||
try:
|
try:
|
||||||
@ -578,7 +571,7 @@ def copyRenameJpgToBackdrop():
|
|||||||
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')
|
||||||
if option == 'emby':
|
if option == 'emby':
|
||||||
shutil.copy(path + '/' + number + '.jpg', path + '/Backdrop.jpg')
|
shutil.copy(path + '/' + number + c_word + '.jpg', path + '/Backdrop.jpg')
|
||||||
if option == 'kodi':
|
if option == 'kodi':
|
||||||
shutil.copy(path + '/' + number + c_word + '-fanart.jpg', path + '/Backdrop.jpg')
|
shutil.copy(path + '/' + number + c_word + '-fanart.jpg', path + '/Backdrop.jpg')
|
||||||
|
|
||||||
@ -618,9 +611,9 @@ if __name__ == '__main__':
|
|||||||
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'
|
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 + "]")
|
||||||
@ -629,14 +622,14 @@ if __name__ == '__main__':
|
|||||||
moveFailedFolder()
|
moveFailedFolder()
|
||||||
else:
|
else:
|
||||||
number = argparse_get_file()[1]
|
number = argparse_get_file()[1]
|
||||||
CreatFailedFolder()
|
CreatFailedFolder() # 创建输出失败目录
|
||||||
getDataFromJSON(number) # 定义番号
|
getDataFromJSON(number) # 定义番号
|
||||||
debug_mode()
|
debug_mode() # 调试模式检测
|
||||||
creatFolder() # 创建文件夹
|
creatFolder() # 创建文件夹
|
||||||
if program_mode == '1':
|
if program_mode == '1':
|
||||||
if multi_part == 1:
|
if multi_part == 1:
|
||||||
number += part # 这时number会被附加上CD1后缀
|
number += part # 这时number会被附加上CD1后缀
|
||||||
smallCoverCheck()
|
smallCoverCheck() # 检查小封面
|
||||||
imageDownload() # creatFoder会返回番号路径
|
imageDownload() # creatFoder会返回番号路径
|
||||||
cutImage() # 裁剪图
|
cutImage() # 裁剪图
|
||||||
copyRenameJpgToBackdrop()
|
copyRenameJpgToBackdrop()
|
||||||
|
64
javdb.py
64
javdb.py
@ -69,66 +69,54 @@ def getOutline(htmlcode):
|
|||||||
return result
|
return result
|
||||||
def main(number):
|
def main(number):
|
||||||
try:
|
try:
|
||||||
a = get_html('https://javdb.com/search?q=' + number + '&f=all')
|
a = get_html('https://javdb.com/search?q=' + number + '&f=all').replace(u'\xa0', u' ')
|
||||||
html = etree.fromstring(a, etree.HTMLParser()) # //table/tr[1]/td[1]/text()
|
html = etree.fromstring(a, etree.HTMLParser()) # //table/tr[1]/td[1]/text()
|
||||||
result1 = str(html.xpath('//*[@id="videos"]/div/div/a/@href')).strip(" ['']")
|
result1 = str(html.xpath('//*[@id="videos"]/div/div/a/@href')).strip(" ['']")
|
||||||
if result1 == '':
|
b = get_html('https://javdb.com' + result1).replace(u'\xa0', u' ')
|
||||||
a = get_html('https://javdb.com/search?q=' + number.replace('-', '_') + '&f=all')
|
|
||||||
html = etree.fromstring(a, etree.HTMLParser()) # //table/tr[1]/td[1]/text()
|
|
||||||
result1 = str(html.xpath('//*[@id="videos"]/div/div/a/@href')).strip(" ['']")
|
|
||||||
b = get_html('https://javdb1.com' + result1)
|
|
||||||
soup = BeautifulSoup(b, 'lxml')
|
|
||||||
a = str(soup.find(attrs={'class': 'panel'}))
|
|
||||||
dic = {
|
dic = {
|
||||||
'actor': getActor(a),
|
'actor': getActor(a),
|
||||||
'title': getTitle(b).replace("\\n", '').replace(' ', '').replace(getActor(a), '').replace(getNum(a),
|
'title': getTitle(b).replace("\\n", '').replace(' ', '').replace(getActor(a), '').replace(getNum(a),
|
||||||
'').replace(
|
'').replace(
|
||||||
'无码', '').replace('有码', '').lstrip(' '),
|
'无码', '').replace('有码', '').lstrip(' '),
|
||||||
'studio': getStudio(a),
|
'studio': getStudio(b),
|
||||||
'outline': getOutline(a),
|
'outline': getOutline(b),
|
||||||
'runtime': getRuntime(a),
|
'runtime': getRuntime(b),
|
||||||
'director': getDirector(a),
|
'director': getDirector(b),
|
||||||
'release': getRelease(a),
|
'release': getRelease(b),
|
||||||
'number': getNum(a),
|
'number': getNum(b),
|
||||||
'cover': getCover(b),
|
'cover': getCover(b),
|
||||||
'imagecut': 0,
|
'imagecut': 0,
|
||||||
'tag': getTag(a),
|
'tag': getTag(b),
|
||||||
'label': getLabel(a),
|
'label': getLabel(b),
|
||||||
'year': getYear(getRelease(a)), # str(re.search('\d{4}',getRelease(a)).group()),
|
'year': getYear(getRelease(b)), # str(re.search('\d{4}',getRelease(a)).group()),
|
||||||
'actor_photo': '',
|
'actor_photo': '',
|
||||||
'website': 'https://javdb1.com' + result1,
|
'website': 'https://javdb.com' + result1,
|
||||||
'source': 'javdb.py',
|
'source': 'javdb.py',
|
||||||
}
|
}
|
||||||
js = json.dumps(dic, ensure_ascii=False, sort_keys=True, indent=4, separators=(',', ':'), ) # .encode('UTF-8')
|
js = json.dumps(dic, ensure_ascii=False, sort_keys=True, indent=4, separators=(',', ':'), ) # .encode('UTF-8')
|
||||||
return js
|
return js
|
||||||
except:
|
except:
|
||||||
a = get_html('https://javdb.com/search?q=' + number + '&f=all')
|
a = get_html('https://javdb.com/search?q=' + number + '&f=all').replace(u'\xa0', u' ')
|
||||||
html = etree.fromstring(a, etree.HTMLParser()) # //table/tr[1]/td[1]/text()
|
html = etree.fromstring(a, etree.HTMLParser()) # //table/tr[1]/td[1]/text()
|
||||||
result1 = str(html.xpath('//*[@id="videos"]/div/div/a/@href')).strip(" ['']")
|
result1 = str(html.xpath('//*[@id="videos"]/div/div/a/@href')).strip(" ['']")
|
||||||
if result1 == '' or result1 == 'null':
|
b = get_html('https://javdb.com' + result1).replace(u'\xa0', u' ')
|
||||||
a = get_html('https://javdb.com/search?q=' + number.replace('-', '_') + '&f=all')
|
|
||||||
html = etree.fromstring(a, etree.HTMLParser()) # //table/tr[1]/td[1]/text()
|
|
||||||
result1 = str(html.xpath('//*[@id="videos"]/div/div/a/@href')).strip(" ['']")
|
|
||||||
b = get_html('https://javdb.com' + result1)
|
|
||||||
soup = BeautifulSoup(b, 'lxml')
|
|
||||||
a = str(soup.find(attrs={'class': 'panel'}))
|
|
||||||
dic = {
|
dic = {
|
||||||
'actor': getActor(a),
|
'actor': getActor(b),
|
||||||
'title': getTitle(b).replace("\\n", '').replace(' ', '').replace(getActor(a), '').replace(
|
'title': getTitle(b).replace("\\n", '').replace(' ', '').replace(getActor(a), '').replace(
|
||||||
getNum(a),
|
getNum(b),
|
||||||
'').replace(
|
'').replace(
|
||||||
'无码', '').replace('有码', '').lstrip(' '),
|
'无码', '').replace('有码', '').lstrip(' '),
|
||||||
'studio': getStudio(a),
|
'studio': getStudio(b),
|
||||||
'outline': getOutline(a),
|
'outline': getOutline(b),
|
||||||
'runtime': getRuntime(a),
|
'runtime': getRuntime(b),
|
||||||
'director': getDirector(a),
|
'director': getDirector(b),
|
||||||
'release': getRelease(a),
|
'release': getRelease(b),
|
||||||
'number': getNum(a),
|
'number': getNum(b),
|
||||||
'cover': getCover(b),
|
'cover': getCover(b),
|
||||||
'imagecut': 0,
|
'imagecut': 0,
|
||||||
'tag': getTag(a),
|
'tag': getTag(b),
|
||||||
'label': getLabel(a),
|
'label': getLabel(b),
|
||||||
'year': getYear(getRelease(a)), # str(re.search('\d{4}',getRelease(a)).group()),
|
'year': getYear(getRelease(b)), # str(re.search('\d{4}',getRelease(a)).group()),
|
||||||
'actor_photo': '',
|
'actor_photo': '',
|
||||||
'website': 'https://javdb.com' + result1,
|
'website': 'https://javdb.com' + result1,
|
||||||
'source': 'javdb.py',
|
'source': 'javdb.py',
|
||||||
@ -136,4 +124,4 @@ def main(number):
|
|||||||
js = json.dumps(dic, ensure_ascii=False, sort_keys=True, indent=4,separators=(',', ':'), ) # .encode('UTF-8')
|
js = json.dumps(dic, ensure_ascii=False, sort_keys=True, indent=4,separators=(',', ':'), ) # .encode('UTF-8')
|
||||||
return js
|
return js
|
||||||
|
|
||||||
#print(main('061519-861'))
|
#print(get_html('https://javdb1.com/v/WwZ0Q'))
|
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"version": "1.6",
|
"version": "1.7",
|
||||||
"version_show":"1.6",
|
"version_show":"1.7",
|
||||||
"download": "https://github.com/yoshiko2/AV_Data_Capture/releases"
|
"download": "https://github.com/yoshiko2/AV_Data_Capture/releases"
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user