diff --git a/WebCrawler/__init__.py b/WebCrawler/__init__.py index 8a1d67f..04283e9 100644 --- a/WebCrawler/__init__.py +++ b/WebCrawler/__init__.py @@ -314,4 +314,6 @@ def special_characters_replacement(text) -> str: replace('|', 'ǀ'). # U+01C0 LATIN LETTER DENTAL CLICK @ Basic Multilingual Plane replace('‘', '‘'). # U+02018 LEFT SINGLE QUOTATION MARK replace('’', '’'). # U+02019 RIGHT SINGLE QUOTATION MARK - replace('&', '&')) + replace('&', '&'). + replace('…','…') + ) diff --git a/WebCrawler/storyline.py b/WebCrawler/storyline.py index 1da1446..4543694 100644 --- a/WebCrawler/storyline.py +++ b/WebCrawler/storyline.py @@ -27,6 +27,8 @@ class noThread(object): def getStoryline(number, title, sites: list=None): start_time = time.time() conf = config.getInstance() + if not conf.is_storyline(): + return '' debug = conf.debug() or conf.storyline_show() == 2 storyine_sites = conf.storyline_site().split(',') if sites is None else sites if is_uncensored(number): @@ -137,7 +139,7 @@ def getStoryline_airav(number, debug): def getStoryline_airavwiki(number, debug): try: kwd = number[:6] if re.match(r'\d{6}[\-_]\d{2,3}', number) else number - url = f'https://www.airav.wiki/api/video/list?barcode=GZAP-055&lang=zh-TW&search={kwd}&lng=zh-CN' + url = f'https://www.airav.wiki/api/video/list?lang=zh-TW&lng=zh-TW&search={kwd}' result, browser = get_html_by_browser(url, return_type='browser') if not result.ok: raise ValueError(f"get_html_by_browser('{url}','{number}') failed") @@ -148,7 +150,7 @@ def getStoryline_airavwiki(number, debug): for r in j["result"]: n = r['barcode'] if re.search(number, n, re.I): - link = f'/api/video/barcode/{n}?lng=zh-CN' + link = f'/api/video/barcode/{n}?lng=zh-TW' break if link is None: raise ValueError("number not found") @@ -163,6 +165,7 @@ def getStoryline_airavwiki(number, debug): raise ValueError("detail page number not match, got ->[{detail_number}]") desc = j["result"]['description'] return desc + except Exception as e: if debug: print(f"[-]MP def getStoryline_airavwiki Error: {e}, number [{number}].") @@ -196,11 +199,11 @@ def getStoryline_58avgo(number, debug): result = browser.follow_link(link) if not result.ok or 'playon.aspx' not in browser.url: raise ValueError("detail page not found") - title = browser.page.select('head > title')[0].text.strip() + title = browser.page.select_one('head > title').text.strip() detail_number = str(re.findall('\[(.*?)]', title)[0]) if not re.search(number, detail_number, re.I): raise ValueError("detail page number not match, got ->[{detail_number}]") - return browser.page.select('#ContentPlaceHolder1_Label2')[0].text.strip() + return browser.page.select_one('#ContentPlaceHolder1_Label2').text.strip() except Exception as e: if debug: print(f"[-]MP getOutline_58avgo Error: {e}, number [{number}].") diff --git a/config.ini b/config.ini index 723453f..71eff9f 100755 --- a/config.ini +++ b/config.ini @@ -1,4 +1,4 @@ -# 详细教程请看 +# 详细教程请看 # - https://github.com/yoshiko2/AV_Data_Capture/wiki#%E9%85%8D%E7%BD%AEconfigini [common] main_mode=1 @@ -83,12 +83,13 @@ water=2 ; 剧照 [extrafanart] -switch=0 +switch=1 parallel_download=5 extrafanart_folder=extrafanart ; 剧情简介 [storyline] +switch=1 ; website为javbus javdb avsox xcity carib时,site censored_site uncensored_site 为获取剧情简介信息的 ; 可选数据源站点列表。列表内站点同时并发查询,取值优先级由冒号前的序号决定,从小到大,数字小的站点没数据才会采用后面站点获得的。 ; 其中airavwiki airav avno1 58avgo是中文剧情简介,区别是airav只能查有码,avno1 airavwiki 有码无码都能查, diff --git a/config.py b/config.py index 138c9e1..20cc788 100644 --- a/config.py +++ b/config.py @@ -246,23 +246,29 @@ class Config: def debug(self) -> bool: return self.getboolean_override("debug_mode", "switch") + def is_storyline(self) -> bool: + try: + return self.conf.getboolean("storyline", "switch") + except: + return True + def storyline_site(self) -> str: try: return self.conf.get("storyline", "site") except: - return "avno1" + return "1:avno1,4:airavwiki" def storyline_censored_site(self) -> str: try: return self.conf.get("storyline", "censored_site") except: - return "airav,xcity,amazon" + return "2:airav,5:xcity,6:amazon" def storyline_uncensored_site(self) -> str: try: return self.conf.get("storyline", "uncensored_site") except: - return "58avgo" + return "3:58avgo" def storyline_show(self) -> int: try: @@ -374,9 +380,10 @@ class Config: sec14 = "storyline" conf.add_section(sec14) - conf.set(sec14, "site", "avno1") - conf.set(sec14, "censored_site", "airav,xcity,amazon") - conf.set(sec14, "uncensored_site", "58avgo") + conf.set(sec14, "switch", 1) + conf.set(sec14, "site", "1:avno1,4:airavwiki") + conf.set(sec14, "censored_site", "2:airav,5:xcity,6:amazon") + conf.set(sec14, "uncensored_site", "3:58avgo") conf.set(sec14, "show_result", 0) conf.set(sec14, "run_mode", 1)