mirror of
https://github.com/EstrellaXD/Auto_Bangumi.git
synced 2026-10-28 19:25:55 +08:00
feat: support parse config file with Variable Expansion for some secret key
This commit is contained in:
14
.gitattributes
vendored
Normal file
14
.gitattributes
vendored
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# Don't allow people to merge changes to these generated files, because the result
|
||||||
|
# may be invalid. You need to run "rush update" again.
|
||||||
|
pnpm-lock.yaml merge=binary
|
||||||
|
shrinkwrap.yaml merge=binary
|
||||||
|
npm-shrinkwrap.json merge=binary
|
||||||
|
yarn.lock merge=binary
|
||||||
|
|
||||||
|
# Rush's JSON config files use JavaScript-style code comments. The rule below prevents pedantic
|
||||||
|
# syntax highlighters such as GitHub's from highlighting these comments as errors. Your text editor
|
||||||
|
# may also require a special configuration to allow comments in JSON.
|
||||||
|
#
|
||||||
|
# For more information, see this issue: https://github.com/microsoft/rushstack/issues/1088
|
||||||
|
#
|
||||||
|
*.json linguist-language=JSON-with-Comments
|
||||||
5
.gitignore
vendored
5
.gitignore
vendored
@@ -196,8 +196,11 @@ dist-ssr
|
|||||||
|
|
||||||
# Editor directories and files
|
# Editor directories and files
|
||||||
.vscode/*
|
.vscode/*
|
||||||
!.vscode/extensions.json
|
|
||||||
!.vscode/settings.json
|
!.vscode/settings.json
|
||||||
|
!.vscode/tasks.json
|
||||||
|
!.vscode/launch.json
|
||||||
|
!.vscode/extensions.json
|
||||||
|
|
||||||
.idea
|
.idea
|
||||||
.DS_Store
|
.DS_Store
|
||||||
*.suo
|
*.suo
|
||||||
|
|||||||
4
backend/dev.sh
Normal file → Executable file
4
backend/dev.sh
Normal file → Executable file
@@ -1,10 +1,10 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# This script is used to run the development environment.
|
# This script is used to run the development environment.
|
||||||
|
|
||||||
python3 -m venv venv
|
python3 -m venv venv
|
||||||
|
|
||||||
./venv/bin/python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple install -r requirements-dev.txt
|
./venv/bin/python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements-dev.txt
|
||||||
|
|
||||||
# install git-hooks for pre-commit before committing.
|
# install git-hooks for pre-commit before committing.
|
||||||
./venv/bin/pre-commit install
|
./venv/bin/pre-commit install
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ async def get_config(current_user=Depends(get_current_user)):
|
|||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=status.HTTP_401_UNAUTHORIZED, detail="invalid token"
|
status_code=status.HTTP_401_UNAUTHORIZED, detail="invalid token"
|
||||||
)
|
)
|
||||||
return settings
|
return settings.dict()
|
||||||
|
|
||||||
|
|
||||||
@router.post("/updateConfig")
|
@router.post("/updateConfig")
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import os
|
||||||
import sqlite3
|
import sqlite3
|
||||||
|
|
||||||
from .delete import Delete
|
from .delete import Delete
|
||||||
@@ -10,6 +11,10 @@ from module.conf import DATA_PATH
|
|||||||
|
|
||||||
class Connector:
|
class Connector:
|
||||||
def __init__(self, table_name: str, data: dict, database: str = DATA_PATH):
|
def __init__(self, table_name: str, data: dict, database: str = DATA_PATH):
|
||||||
|
# Create folder if not exists
|
||||||
|
if not os.path.exists(os.path.dirname(DATA_PATH)):
|
||||||
|
os.makedirs(os.path.dirname(DATA_PATH))
|
||||||
|
|
||||||
self._conn = sqlite3.connect(database)
|
self._conn = sqlite3.connect(database)
|
||||||
self._cursor = self._conn.cursor()
|
self._cursor = self._conn.cursor()
|
||||||
self.update = Update(self, table_name, data)
|
self.update = Update(self, table_name, data)
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
from os.path import expandvars
|
||||||
from pydantic import BaseModel, Field
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
# Sub config
|
# Sub config
|
||||||
@@ -12,21 +13,31 @@ class Program(BaseModel):
|
|||||||
class Downloader(BaseModel):
|
class Downloader(BaseModel):
|
||||||
type: str = Field("qbittorrent", description="Downloader type")
|
type: str = Field("qbittorrent", description="Downloader type")
|
||||||
host: str = Field("172.17.0.1:8080", description="Downloader host")
|
host: str = Field("172.17.0.1:8080", description="Downloader host")
|
||||||
username: str = Field("admin", description="Downloader username")
|
username_: str = Field("admin", alias="username", description="Downloader username")
|
||||||
password: str = Field("adminadmin", description="Downloader password")
|
password_: str = Field("adminadmin", alias="password", description="Downloader password")
|
||||||
path: str = Field("/downloads/Bangumi", description="Downloader path")
|
path: str = Field("/downloads/Bangumi", description="Downloader path")
|
||||||
ssl: bool = Field(False, description="Downloader ssl")
|
ssl: bool = Field(False, description="Downloader ssl")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def username(self):
|
||||||
|
return expandvars(self.username_)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def password(self):
|
||||||
|
return expandvars(self.password_)
|
||||||
|
|
||||||
class RSSParser(BaseModel):
|
class RSSParser(BaseModel):
|
||||||
enable: bool = Field(True, description="Enable RSS parser")
|
enable: bool = Field(True, description="Enable RSS parser")
|
||||||
type: str = Field("mikan", description="RSS parser type")
|
type: str = Field("mikan", description="RSS parser type")
|
||||||
token: str = Field("token", description="RSS parser token")
|
token_: str = Field("token", alias="token", description="RSS parser token")
|
||||||
custom_url: str = Field("mikanani.me", description="Custom RSS host url")
|
custom_url: str = Field("mikanani.me", description="Custom RSS host url")
|
||||||
parser_type: str = Field("parser", description="Parser type")
|
parser_type: str = Field("parser", description="Parser type")
|
||||||
filter: list[str] = Field(["720", r"\d+-\d"], description="Filter")
|
filter: list[str] = Field(["720", r"\d+-\d"], description="Filter")
|
||||||
language: str = "zh"
|
language: str = "zh"
|
||||||
|
|
||||||
|
@property
|
||||||
|
def token(self):
|
||||||
|
return expandvars(self.token_)
|
||||||
|
|
||||||
class BangumiManage(BaseModel):
|
class BangumiManage(BaseModel):
|
||||||
enable: bool = Field(True, description="Enable bangumi manage")
|
enable: bool = Field(True, description="Enable bangumi manage")
|
||||||
@@ -45,16 +56,31 @@ class Proxy(BaseModel):
|
|||||||
type: str = Field("http", description="Proxy type")
|
type: str = Field("http", description="Proxy type")
|
||||||
host: str = Field("", description="Proxy host")
|
host: str = Field("", description="Proxy host")
|
||||||
port: int = Field(0, description="Proxy port")
|
port: int = Field(0, description="Proxy port")
|
||||||
username: str = Field("", description="Proxy username")
|
username_: str = Field("", alias="username", description="Proxy username")
|
||||||
password: str = Field("", description="Proxy password")
|
password_: str = Field("", alias="password", description="Proxy password")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def username(self):
|
||||||
|
return expandvars(self.username_)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def password(self):
|
||||||
|
return expandvars(self.password_)
|
||||||
|
|
||||||
|
|
||||||
class Notification(BaseModel):
|
class Notification(BaseModel):
|
||||||
enable: bool = Field(False, description="Enable notification")
|
enable: bool = Field(False, description="Enable notification")
|
||||||
type: str = Field("telegram", description="Notification type")
|
type: str = Field("telegram", description="Notification type")
|
||||||
token: str = Field("", description="Notification token")
|
token_: str = Field("", alias="token", description="Notification token")
|
||||||
chat_id: str = Field("", description="Notification chat id")
|
chat_id_: str = Field("", alias="chat_id", description="Notification chat id")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def token(self):
|
||||||
|
return expandvars(self.token_)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def chat_id(self):
|
||||||
|
return expandvars(self.chat_id_)
|
||||||
|
|
||||||
class Config(BaseModel):
|
class Config(BaseModel):
|
||||||
program: Program = Program()
|
program: Program = Program()
|
||||||
@@ -64,3 +90,6 @@ class Config(BaseModel):
|
|||||||
log: Log = Log()
|
log: Log = Log()
|
||||||
proxy: Proxy = Proxy()
|
proxy: Proxy = Proxy()
|
||||||
notification: Notification = Notification()
|
notification: Notification = Notification()
|
||||||
|
|
||||||
|
def dict(self, *args, by_alias=True, **kwargs):
|
||||||
|
return super().dict(*args, by_alias=by_alias, **kwargs)
|
||||||
|
|||||||
Reference in New Issue
Block a user