This commit is contained in:
EstrellaXD
2023-05-10 16:28:25 +08:00
parent a000641b71
commit ceeca52603
8 changed files with 66 additions and 138 deletions

View File

@@ -16,25 +16,32 @@ from module.conf.uvicorn_logging import logging_config
logger = logging.getLogger(__name__)
rss_link = settings.rss_link()
stop_event = threading.Event()
rss_link = settings.rss_link()
def show_info():
with open("icon", "r") as f:
for line in f.readlines():
logger.info(line.strip("\n"))
logger.info(
f"Version {VERSION} Author: EstrellaXD Twitter: https://twitter.com/Estrella_Pan"
)
logger.info("GitHub: https://github.com/EstrellaXD/Auto_Bangumi/")
logger.info("Starting AutoBangumi...")
def rss_loop(stop_event, rss_link: str):
rss_analyser = RSSAnalyser()
while not stop_event.is_set():
rss_analyser.run(rss_link)
logger.info("RSS loop finished.")
stop_event.wait(settings.program.rss_time)
def rename_loop(stop_event):
while not stop_event.is_set():
with Renamer() as renamer:
renamer.rename()
logger.info("Rename loop finished.")
stop_event.wait(settings.program.rename_time)
@@ -49,10 +56,37 @@ rename_thread = threading.Thread(
)
def stop_thread():
global rss_thread, rename_thread
if not stop_event.is_set():
stop_event.set()
rename_thread.join()
rss_thread.join()
def start_thread():
global rss_thread, rename_thread
if stop_event.is_set():
stop_event.clear()
time.sleep(1)
settings.load()
rss_link = settings.rss_link()
new_level = logging.DEBUG if settings.log.debug_enable else logging.INFO
setup_logger(new_level)
print(new_level)
rss_thread = threading.Thread(target=rss_loop, args=(stop_event, rss_link))
rename_thread = threading.Thread(target=rename_loop, args=(stop_event,))
rss_thread.start()
rename_thread.start()
return {"status": "ok"}
@router.on_event("startup")
async def startup():
global rss_thread, rename_thread
setup_logger()
log_level = logging.DEBUG if settings.log.debug_enable else logging.INFO
setup_logger(log_level)
show_info()
rss_thread.start()
rename_thread.start()
@@ -65,48 +99,20 @@ async def shutdown():
@router.get("/api/v1/restart", tags=["program"])
async def restart():
global rss_thread, rename_thread
if not rss_thread.is_alive():
return {"status": "Already stopped."}
stop_event.set()
logger.info("Stopping RSS analyser...")
rss_thread.join()
rename_thread.join()
stop_event.clear()
time.sleep(1)
settings.load()
rss_link = settings.rss_link()
setup_logger()
rss_thread = threading.Thread(target=rss_loop, args=(stop_event, rss_link))
rename_thread = threading.Thread(target=rename_loop, args=(stop_event,))
rss_thread.start()
rename_thread.start()
stop_thread()
start_thread()
return {"status": "ok"}
@router.get("/api/v1/start", tags=["program"])
async def start():
global rss_thread, rename_thread
if not stop_event.is_set():
return {"status": "Already started."}
rss_thread = threading.Thread(target=rss_loop, args=(stop_event, rss_link))
rename_thread = threading.Thread(target=rename_loop,args=(stop_event,))
rss_thread.start()
rename_thread.start()
start_thread()
return {"status": "ok"}
@router.get("/api/v1/stop", tags=["program"])
async def stop():
global rss_thread, rename_thread
if stop_event.is_set():
return {"status": "Already stopped."}
stop_event.set()
logger.info("Stopping program...")
rename_thread.join()
rss_thread.join()
stop_event.clear()
logger.info("Program stopped.")
stop_thread()
return {"status": "ok"}
@@ -119,9 +125,7 @@ if VERSION != "DEV_VERSION":
def index(request: Request):
context = {"request": request}
return templates.TemplateResponse("index.html", context)
else:
@router.get("/", status_code=302, tags=["html"])
def index():
return RedirectResponse("/docs")
@@ -129,5 +133,5 @@ else:
if __name__ == "__main__":
uvicorn.run(
router, host="0.0.0.0", port=settings.program.webui_port
"main:router", host="0.0.0.0", port=settings.program.webui_port, log_config=logging_config, reload=True
)

View File

@@ -34,12 +34,4 @@ async def rename_loop(renamer: Renamer, wait_time: int = 360):
await asyncio.sleep(wait_time)
def show_info():
with open("icon", "r") as f:
for line in f.readlines():
logger.info(line.strip("\n"))
logger.info(
f"Version {VERSION} Author: EstrellaXD Twitter: https://twitter.com/Estrella_Pan"
)
logger.info("GitHub: https://github.com/EstrellaXD/Auto_Bangumi/")
logger.info("Starting AutoBangumi...")

View File

@@ -1,19 +1,18 @@
import logging
from .config import settings
LOG_PATH = "data/log.txt"
def setup_logger():
level = logging.DEBUG if settings.log.debug_enable else logging.INFO
def setup_logger(level):
logging.addLevelName(logging.DEBUG, "DEBUG:")
logging.addLevelName(logging.INFO, "INFO:")
logging.addLevelName(logging.WARNING, "WARNING:")
LOGGING_FORMAT = "[%(asctime)s] %(levelname)-8s %(message)s"
TIME_FORMAT = "%Y-%m-%d %H:%M:%S"
logging.basicConfig(
level=level,
format=LOGGING_FORMAT,
datefmt=TIME_FORMAT,
encoding="utf-8",
handlers=[
logging.FileHandler(LOG_PATH, encoding="utf-8"),

View File

@@ -1,72 +0,0 @@
[loggers]
keys=root, gunicorn.error, gunicorn.access,uvicorn.error,uvicorn.access
[handlers]
keys=console, error_file, access_file, accesscustom
[formatters]
keys=generic, access, AccessFormatter
[logger_root]
level=INFO
handlers=console
propagate=1
[logger_gunicorn.error]
level=INFO
handlers=error_file
propagate=0
qualname=gunicorn.error
[logger_gunicorn.access]
level=INFO
handlers=accesscustom
propagate=0
qualname=gunicorn.access
[logger_uvicorn.error]
level=INFO
handlers=error_file
propagate=0
qualname=uvicorn.error
[logger_uvicorn.access]
level=INFO
handlers=accesscustom
propagate=0
qualname=uvicorn.access
[handler_console]
class=StreamHandler
formatter=generic
args=(sys.stdout, )
[handler_error_file]
class=StreamHandler
formatter=generic
args=(sys.stdout, )
[handler_access_file]
class=StreamHandler
formatter=access
args=(sys.stdout, )
[handler_accesscustom]
class=StreamHandler
formatter=AccessFormatter
args=(sys.stdout, )
[formatter_generic]
format=%(levelname)s: %(message)s
datefmt=%Y-%m-%dT%H:%M:%S
class=uvicorn.logging.DefaultFormatter
[formatter_access]
format=%(levelname)s: %(message)s
datefmt=%Y-%m-%dT%H:%M:%S
class=customlogger.CustomFormatter
[formatter_AccessFormatter]
format={"event":"access_log","ip":"%(h)s","status":"%(s)s","method":"%(m)s","path":"%(U)s","referer":"%(f)s","x_session_id":"%(x-session-id)s","x_google_id":"%(x-google-id)s","x_server_time":"%(x-server-time)s","agent":"%(a)s"}
datefmt=%Y-%m-%dT%H:%M:%S
class=customlogger.CustomFormatter

View File

@@ -7,7 +7,7 @@ logging_config = {
"handlers": ["default"],
"propagate": True,
},
"uvicorn.access": {
"uvicorn.asgi": { # 更改 "uvicorn.access" 为 "uvicorn.asgi"
"level": "INFO",
"handlers": ["access"],
"propagate": True,
@@ -18,18 +18,16 @@ logging_config = {
"class": "logging.StreamHandler",
"level": "INFO",
"formatter": "default",
"stream": "ext://sys.stderr",
},
"access": {
"class": "logging.StreamHandler",
"level": "INFO",
"level": "DEBUG",
"formatter": "access",
"stream": "ext://sys.stdout",
},
},
"formatters": {
"default": {
"format": "[%(asctime)s] %(levelname)s: %(message)s",
"format": "[%(asctime)s] %(levelname)-8s %(message)s",
"datefmt": "%Y-%m-%d %H:%M:%S",
},
"access": {

View File

@@ -227,10 +227,3 @@ class Renamer(DownloadClient):
)
else:
logger.warning(f"{info.name} has no media file")
if __name__ == '__main__':
from module.conf import setup_logger
setup_logger()
with Renamer() as renamer:
renamer.rename()

View File

@@ -35,6 +35,8 @@ def get_group(group_and_title) -> tuple[str | None, str]:
while "" in n:
n.remove("")
if len(n) > 1:
if re.match(r"\d+", n[1]):
return None, group_and_title
return n[0], n[1]
else:
return None, n[0]
@@ -96,3 +98,9 @@ def torrent_parser(
episode=episode,
suffix=suffix
)
if __name__ == '__main__':
name = "海盗战记 (2019) S01E01.mp4"
bf = torrent_parser(name, file_type="media")
print(bf)

View File

@@ -30,6 +30,12 @@ def test_torrent_parser():
assert bf.episode == 1082
assert bf.season == 1
file_name = "海盗战记 (2019) S01E01.mp4"
bf = torrent_parser(file_name)
assert bf.title == "海盗战记 (2019)"
assert bf.episode == 1
assert bf.season == 1
file_name = "海盗战记/海盗战记 S01E01.mp4"
bf = torrent_parser(file_name)
assert bf.title == "海盗战记"