diff --git a/ADC_function.py b/ADC_function.py index dca3148..a7dc831 100755 --- a/ADC_function.py +++ b/ADC_function.py @@ -7,6 +7,7 @@ import os import re import time import sys +from lxml import etree config_file='config.ini' config = ConfigParser() @@ -58,6 +59,12 @@ else: except: 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(): return config['media']['media_warehouse'] @@ -69,6 +76,12 @@ def UpdateCheckSwitch(): return '0' elif check == '': 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):#网页请求核心 try: proxy = config['proxy']['proxy'] diff --git a/AV_Data_Capture.py b/AV_Data_Capture.py index 7eccc3e..a0ad772 100755 --- a/AV_Data_Capture.py +++ b/AV_Data_Capture.py @@ -15,7 +15,7 @@ os.chdir(os.getcwd()) # ============global var=========== -version='1.5' +version='1.7' config = ConfigParser() config.read(config_file, encoding='UTF-8') @@ -35,7 +35,6 @@ def moveMovies(): movieFiles = movieFiles + [os.path.join(dirpath, f) for dirpath, dirnames, files in os.walk(fromPath) for f in fnmatch.filter(files, '*.' + fm)] - print(movieFiles) for movie in movieFiles: print("Move file " + movie) shutil.move(movie, os.path.curdir) @@ -45,8 +44,8 @@ def UpdateCheck(): html = json.loads(str(html2)) if not version == html['version']: - print('[*] * New update ' + html['version'] + ' *') - print('[*] * Download *') + print('[*] * New update ' + html['version'] + ' *') + print('[*] * Download *') print('[*] ' + html['download']) print('[*]=====================================') else: diff --git a/core.py b/core.py index 03e8b00..f0c83ed 100755 --- a/core.py +++ b/core.py @@ -16,9 +16,9 @@ import siro import avsox import javbus import javdb - # =========website======== + # 初始化全局变量 Config = ConfigParser() Config.read(config_file, encoding='UTF-8') @@ -89,13 +89,6 @@ def CreatFailedFolder(): 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返回元数据 global title global studio @@ -131,7 +124,7 @@ def getDataFromJSON(file_number): # 从JSON返回元数据 json_data = json.loads(siro.main(file_number)) if getDataState(json_data) == 0: # 如果元数据获取失败,请求番号至其他网站抓取 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)) # == 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 if option == 'emby': - if DownloadFileWithFilename(cover, number + '.jpg', path) == 'failed': + if DownloadFileWithFilename(cover, number + c_word + '.jpg', path) == 'failed': moveFailedFolder() - DownloadFileWithFilename(cover, number + '.jpg', path) + DownloadFileWithFilename(cover, number + c_word + '.jpg', path) if multi_part == 1: - old_name = os.path.join(path, number + '.jpg') - new_name = os.path.join(path, number + '.jpg') + old_name = os.path.join(path, number + c_word + '.jpg') + new_name = os.path.join(path, number + c_word + '.jpg') os.rename(old_name, new_name) - print('[+]Image Downloaded!', path + '/' + number + '.jpg') + print('[+]Image Downloaded!', path + '/' + number + c_word + '.jpg') else: - print('[+]Image Downloaded!', path + '/' + number + '.jpg') + print('[+]Image Downloaded!', path + '/' + number + c_word + '.jpg') elif option == 'plex': if DownloadFileWithFilename(cover, 'fanart.jpg', path) == 'failed': moveFailedFolder() @@ -393,9 +386,9 @@ def PrintFiles(): print(" " + outline + "", file=code) print(" " + str(runtime).replace(" ", "") + "", file=code) print(" " + director + "", file=code) - print(" " + number + ".png", file=code) - print(" " + number + ".png", file=code) - print(" " + number + '.jpg' + "", file=code) + print(" " + number + c_word + ".png", file=code) + print(" " + number + c_word + ".png", file=code) + print(" " + number + c_word + '.jpg' + "", file=code) try: for key, value in actor_photo.items(): print(" ", file=code) @@ -504,19 +497,19 @@ def cutImage(): elif option == 'emby': if imagecut == 1: try: - img = Image.open(path + '/' + number + '.jpg') + img = Image.open(path + '/' + number + c_word + '.jpg') imgSize = img.size w = img.width h = img.height img2 = img.crop((w / 1.9, 0, w, h)) - img2.save(path + '/' + number + '.png') + img2.save(path + '/' + number + c_word + '.png') except: print('[-]Cover cut failed!') elif imagecut == 0: - img = Image.open(path + '/' + number + '.jpg') + img = Image.open(path + '/' + number + c_word + '.jpg') w = img.width h = img.height - img.save(path + '/' + number + '.png') + img.save(path + '/' + number + c_word + '.png') elif option == 'kodi': if imagecut == 1: try: @@ -578,7 +571,7 @@ def copyRenameJpgToBackdrop(): shutil.copy(path + '/fanart.jpg', path + '/Backdrop.jpg') shutil.copy(path + '/poster.png', path + '/thumb.png') if option == 'emby': - shutil.copy(path + '/' + number + '.jpg', path + '/Backdrop.jpg') + shutil.copy(path + '/' + number + c_word + '.jpg', path + '/Backdrop.jpg') if option == 'kodi': shutil.copy(path + '/' + number + c_word + '-fanart.jpg', path + '/Backdrop.jpg') @@ -618,9 +611,9 @@ if __name__ == '__main__': part = get_part(filepath) if '-c.' in filepath or '-C.' in filepath or '中文' in filepath or '字幕' in filepath: cn_sub = '1' - c_word = '-C' + c_word = '-C' #中文字幕影片后缀 - if argparse_get_file()[1] == '': # 获取手动拉去影片获取的番号 + if argparse_get_file()[1] == '': # 如果第二个运行参数为空,获取从第一个参数影片路径的番号 try: number = str(re.findall(r'(.+?)\.', str(re.search('([^<>/\\\\|:""\\*\\?]+)\\.\\w+$', filepath).group()))).strip("['']").replace('_', '-') print("[!]Making Data for [" + number + "]") @@ -629,14 +622,14 @@ if __name__ == '__main__': moveFailedFolder() else: number = argparse_get_file()[1] - CreatFailedFolder() + CreatFailedFolder() # 创建输出失败目录 getDataFromJSON(number) # 定义番号 - debug_mode() + debug_mode() # 调试模式检测 creatFolder() # 创建文件夹 if program_mode == '1': if multi_part == 1: number += part # 这时number会被附加上CD1后缀 - smallCoverCheck() + smallCoverCheck() # 检查小封面 imageDownload() # creatFoder会返回番号路径 cutImage() # 裁剪图 copyRenameJpgToBackdrop() diff --git a/javdb.py b/javdb.py index 9deae67..c32cfeb 100755 --- a/javdb.py +++ b/javdb.py @@ -69,66 +69,54 @@ def getOutline(htmlcode): return result def main(number): 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() result1 = str(html.xpath('//*[@id="videos"]/div/div/a/@href')).strip(" ['']") - if result1 == '': - 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'})) + b = get_html('https://javdb.com' + result1).replace(u'\xa0', u' ') dic = { 'actor': getActor(a), 'title': getTitle(b).replace("\\n", '').replace(' ', '').replace(getActor(a), '').replace(getNum(a), '').replace( '无码', '').replace('有码', '').lstrip(' '), - 'studio': getStudio(a), - 'outline': getOutline(a), - 'runtime': getRuntime(a), - 'director': getDirector(a), - 'release': getRelease(a), - 'number': getNum(a), + 'studio': getStudio(b), + 'outline': getOutline(b), + 'runtime': getRuntime(b), + 'director': getDirector(b), + 'release': getRelease(b), + 'number': getNum(b), 'cover': getCover(b), 'imagecut': 0, - 'tag': getTag(a), - 'label': getLabel(a), - 'year': getYear(getRelease(a)), # str(re.search('\d{4}',getRelease(a)).group()), + 'tag': getTag(b), + 'label': getLabel(b), + 'year': getYear(getRelease(b)), # str(re.search('\d{4}',getRelease(a)).group()), 'actor_photo': '', - 'website': 'https://javdb1.com' + result1, + 'website': 'https://javdb.com' + result1, 'source': 'javdb.py', } js = json.dumps(dic, ensure_ascii=False, sort_keys=True, indent=4, separators=(',', ':'), ) # .encode('UTF-8') return js 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() result1 = str(html.xpath('//*[@id="videos"]/div/div/a/@href')).strip(" ['']") - if result1 == '' or result1 == 'null': - 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'})) + b = get_html('https://javdb.com' + result1).replace(u'\xa0', u' ') dic = { - 'actor': getActor(a), + 'actor': getActor(b), 'title': getTitle(b).replace("\\n", '').replace(' ', '').replace(getActor(a), '').replace( - getNum(a), + getNum(b), '').replace( '无码', '').replace('有码', '').lstrip(' '), - 'studio': getStudio(a), - 'outline': getOutline(a), - 'runtime': getRuntime(a), - 'director': getDirector(a), - 'release': getRelease(a), - 'number': getNum(a), + 'studio': getStudio(b), + 'outline': getOutline(b), + 'runtime': getRuntime(b), + 'director': getDirector(b), + 'release': getRelease(b), + 'number': getNum(b), 'cover': getCover(b), 'imagecut': 0, - 'tag': getTag(a), - 'label': getLabel(a), - 'year': getYear(getRelease(a)), # str(re.search('\d{4}',getRelease(a)).group()), + 'tag': getTag(b), + 'label': getLabel(b), + 'year': getYear(getRelease(b)), # str(re.search('\d{4}',getRelease(a)).group()), 'actor_photo': '', 'website': 'https://javdb.com' + result1, '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') return js -#print(main('061519-861')) \ No newline at end of file +#print(get_html('https://javdb1.com/v/WwZ0Q')) \ No newline at end of file diff --git a/update_check.json b/update_check.json index b609e8b..80e87ba 100644 --- a/update_check.json +++ b/update_check.json @@ -1,5 +1,5 @@ { - "version": "1.6", - "version_show":"1.6", + "version": "1.7", + "version_show":"1.7", "download": "https://github.com/yoshiko2/AV_Data_Capture/releases" }