2.5.7 fix rename module

This commit is contained in:
EstrellaXD
2022-07-07 18:10:00 +08:00
parent 508a300456
commit 80714e2d60
14 changed files with 71 additions and 45 deletions

1
.gitignore vendored
View File

@@ -171,3 +171,4 @@ cython_debug/
/auto_bangumi/parser/analyser/tmdb.py
/auto_bangumi/run_debug.sh

View File

@@ -18,6 +18,6 @@ def qb_connect_failed_wait(func):
except Exception as e:
logger.debug(f"URL: {args[0]}")
logger.warning("Cannot connect to qBittorrent. Wait 5 min and retry...")
time.sleep(3)
time.sleep(300)
times += 1
return wrapper

View File

@@ -31,6 +31,12 @@ def get_data():
return data
@app.get("/api/v1/log")
def get_log():
with open(settings.log_path, "r") as f:
return f.read()
@app.get("/api/v1/resetRule")
def reset_rule():
data = {}
@@ -46,7 +52,7 @@ class RuleName(BaseModel):
def remove_rule(name: RuleName):
datas = json_config.load(settings.info_path)["bangumi_info"]
for data in datas:
if re.search(name.name, data["raw_title"]) is not None:
if re.search(name.name.lower(), data["title_raw"].lower()) is not None:
datas.remove(data)
json_config.save(settings.info_path, datas)
return "Success"

View File

@@ -1,7 +1,7 @@
# -*- encoding: utf-8 -*-
DEFAULT_SETTINGS = {
"version": "2.5.5",
"version": "2.5.6",
"data_version": 4.0,
"host_ip": "localhost:8080",
"sleep_time": 7200,
@@ -26,7 +26,8 @@ DEFAULT_SETTINGS = {
"socks": None,
"enable_rss_collector": True,
"enable_rename": True,
"reset_folder": False
"reset_folder": False,
"log_path": "/config/log.txt",
}
ENV_TO_ATTR = {

View File

@@ -7,6 +7,8 @@ def setup_logger():
DATE_FORMAT = "%Y-%m-%d %X"
LOGGING_FORMAT = "%(asctime)s %(levelname)s: %(message)s"
logging.basicConfig(
filename=settings.log_path,
filemode="w",
level=level,
datefmt=DATE_FORMAT,
format=LOGGING_FORMAT,

View File

@@ -63,7 +63,6 @@ class Renamer:
continue
except:
logger.warning(f"{path_name} rename failed")
logger.debug(f"origin: {name}")
if settings.remove_bad_torrent:
self.client.delete_torrent(torrent_hash)
self.print_result(torrent_count, rename_count)

View File

@@ -20,7 +20,6 @@ class RSSAnalyser:
rss_titles = self._request.get_titles(settings.rss_link)
self._request.close_session()
for raw_title in rss_titles:
logger.debug(raw_title)
extra_add = True
if bangumi_info is not []:
for d in bangumi_info:
@@ -47,7 +46,6 @@ class RSSAnalyser:
download_client.add_rules(bangumi_info, rss_link=settings.rss_link)
except Exception as e:
logger.debug(e)
logger.info("Connection error.")
logger.info("Finished")

View File

@@ -27,7 +27,6 @@ CHINESE_NUMBER_MAP = {
class RawParser:
@staticmethod
def get_group(name: str) -> str:
return re.split(r"[\[\]]", name)[1]
@@ -66,7 +65,7 @@ class RawParser:
@staticmethod
def name_process(name: str):
name = name.strip()
split = re.split("/| |- ", name.replace("(仅限港澳台地区)", ""))
split = re.split("/|\s{2}|-\s{2}", name.replace("(仅限港澳台地区)", ""))
while "" in split:
split.remove("")
if len(split) == 1:
@@ -79,22 +78,19 @@ class RawParser:
r"([^\x00-\xff]{1,})(\s)([\x00-\xff]{4,})", name)
if match_obj is not None:
return match_obj.group(3), split
compare = 0
for name in split:
compare, compare_idx = 0, 0
for idx, name in list(enumerate(split)):
l = re.findall("[aA-zZ]{1}", name).__len__()
if l > compare:
compare = l
for name in split:
if re.findall("[aA-zZ]{1}", name).__len__() == compare:
return name.strip(), split
raise ValueError()
compare_idx = idx
return split[compare_idx], split
@staticmethod
def find_tags(other):
elements = re.sub(r"[\[\]()]", " ", other).split(" ")
# find CHT
sub, resolution, source = None, None, None
for element in filter(lambda x: x != "", elements):
if SUB_RE.search(element):
sub = element
@@ -152,12 +148,9 @@ class RawParser:
return None
info = Episode()
info.title = name
info.season_info.number = season
info.season_info.raw = sr
info.season_info.number, info.season_info.raw = season, sr
info.ep_info.number = episode
info.subtitle = sub
info.dpi = dpi
info.source = source
info.subtitle, info.dpi, info.source = sub, dpi, source
info.title_info.group = ng
info.group = group
return info
@@ -165,5 +158,5 @@ class RawParser:
if __name__ == "__main__":
test = RawParser()
ep = test.analyse("[Lilith-Raws] 神渣☆偶像 / Kami Kuzu☆Idol - 01 [Baha][WEB-DL][1080p][AVC AAC][CHT][MP4]")
ep = test.analyse("[ANi] Classroom of the Elite S2 - 欢迎来到实力至上主义的教室 第二季 - 01 [1080P][Baha][WEB-DL][AAC AVC][CHT][MP4]")
print(ep.title, ep.dpi)

View File

@@ -18,7 +18,9 @@ class DownloadParser:
r"(.*)第(\d*\.*\d*)話(?:END)?(.*)",
]
def rename_normal(self, name, season):
def rename_normal(self, info_dict):
name = info_dict["name"]
season = info_dict["season"]
for rule in self.rules:
match_obj = re.match(rule, name, re.I)
if match_obj is not None:
@@ -26,7 +28,9 @@ class DownloadParser:
new_name = f"{title} S{season}E{match_obj.group(2)}{match_obj.group(3)}"
return new_name
def rename_pn(self, name, season):
def rename_pn(self, info_dict):
name = info_dict["name"]
season = info_dict["season"]
n = re.split(r"[\[\]()【】()]", name)
file_name = name.replace(f"[{n[1]}]", "")
if season < 10:
@@ -42,7 +46,10 @@ class DownloadParser:
)
return new_name
def rename_advance(self, name, folder_name, season):
def rename_advance(self, info_dict):
name = info_dict["name"]
folder_name = info_dict["folder_name"]
season = info_dict["season"]
n = re.split(r"[\[\]()【】()]", name)
file_name = name.replace(f"[{n[1]}]", "")
if season < 10:
@@ -57,7 +64,8 @@ class DownloadParser:
)
return new_name
def rename_no_season_pn(self, name):
def rename_no_season_pn(self, info_dict):
name = info_dict["name"]
n = re.split(r"[\[\]()【】()]", name)
file_name = name.replace(f"[{n[1]}]", "")
for rule in self.rules:
@@ -72,20 +80,33 @@ class DownloadParser:
return new_name
def download_rename(self, name, folder_name, season, method):
if method.lower() == "pn":
return self.rename_pn(name, season)
elif method.lower() == "normal":
return self.rename_normal(name, season)
elif method.lower() == "none":
return name
elif method.lower() == "advance":
return self.rename_advance(name, folder_name, season)
elif method.lower() == "no_season_pn":
return self.rename_no_season_pn(name)
info_dict = {
"name": name,
"folder_name": folder_name,
"season": season,
}
method_dict = {
"normal": self.rename_normal,
"pn": self.rename_pn,
"advance": self.rename_advance,
"no_season_pn": self.rename_no_season_pn,
}
logger.debug(f"Name: {folder_name}, File type: {path.splitext(name)[-1]}, Season {season}")
return method_dict[method](info_dict)
# if method.lower() == "pn":
# return self.rename_pn(name, season)
# elif method.lower() == "normal":
# return self.rename_normal(name, season)
# elif method.lower() == "none":
# return name
# elif method.lower() == "advance":
# return self.rename_advance(name, folder_name, season)
# elif method.lower() == "no_season_pn":
# return self.rename_no_season_pn(name)
if __name__ == "__main__":
name = "[Nekomoe kissaten][Summer Time Rendering - 11 [1080p][JPTC][9900E95].mp4"
name = "[NC-Raws] 來自深淵 烈日的黃金鄉 - 01 (Baha 1920x1080 AVC AAC MP4) [89D4923F].mp4"
rename = DownloadParser()
new_name = rename.rename_pn(name, 1)
new_name = rename.download_rename(name, "Made abyess", 1, "pn")
print(new_name)

View File

@@ -46,6 +46,7 @@ class TitleParser:
"added": False,
"eps_collect": True if settings.eps_complete else False,
}
logger.debug(f"RAW:{raw} >> {episode.title}")
return data
except Exception as e:
logger.debug(e)

View File

@@ -41,6 +41,8 @@ services:
- auto_bangumi
volumes:
- auto_bangumi:/config
ports:
- 7892:7892
dns:
- 8.8.8.8
- 223.5.5.5

View File

@@ -18,6 +18,8 @@ services:
- AB_SEASON_ONE=True
networks:
- auto_bangumi
ports:
- 7892:7892
volumes:
- auto_bangumi:/config
dns:

View File

@@ -36,11 +36,12 @@ services:
- AB_RSS=${RSS}
- AB_DEBUG_MODE=False
- AB_EP_COMPLETE=False
- AB_SEASON_ONE=True
volumes:
- auto_bangumi:/config
networks:
- auto_bangumi
ports:
- 7892:7892
dns:
- 8.8.8.8
- 223.5.5.5

View File

@@ -1,7 +1,8 @@
anyio==3.6.1
beautifulsoup4==4.11.1
lxml
certifi==2022.6.15
charset-normalizer==2.1.0
charset-normalizer
click==8.1.3
fastapi==0.78.0
h11==0.13.0
@@ -9,12 +10,10 @@ idna==3.3
pydantic==1.9.1
PySocks==1.7.1
qbittorrent-api==2022.5.32
requests==2.28.1
requests
six==1.16.0
sniffio==1.2.0
soupsieve==2.3.2.post1
starlette==0.19.1
thefuzz==0.19.0
soupsieve
typing_extensions==4.3.0
urllib3==1.26.9
uvicorn==0.18.2
uvicorn