Skip to content

Commit fd50934

Browse files
authored
Merge pull request #101 from shinonomeow/shino_aio
add database and fix parser error
2 parents 77d81fe + 0ad1596 commit fd50934

94 files changed

Lines changed: 1917 additions & 1291 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,4 +221,3 @@ backend/src/.vscode/
221221

222222
# test file
223223
test.*
224-
test_*

backend/pyproject.toml

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
2-
name = "backend"
3-
version = "0.1.0"
2+
name = "Auto_Bangumi"
3+
version = "3.2.0"
44
description = "Add your description here"
55
readme = "README.md"
66
requires-python = ">=3.11"
@@ -113,7 +113,7 @@ exclude = [
113113
per-file-ignores = {}
114114

115115
# Same as Black.
116-
line-length = 88
116+
line-length = 120
117117

118118
# Allow unused variables when underscore-prefixed.
119119
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
@@ -126,11 +126,8 @@ target-version = "py311"
126126
max-complexity = 10
127127

128128
[tool.black]
129-
line-length = 88
129+
line-length = 120
130130
target-version = ['py311']
131131

132132
[dependency-groups]
133-
dev = [
134-
"pytest>=8.4.1",
135-
"pytest-asyncio>=1.1.0",
136-
]
133+
dev = ["pytest>=8.4.1", "pytest-asyncio>=1.1.0"]

backend/src/main.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,8 @@
3131

3232
def create_app() -> FastAPI:
3333
app = FastAPI(lifespan=lifespan)
34-
3534
# mount routers
3635
app.include_router(v1, prefix="/api")
37-
3836
return app
3937

4038

backend/src/module/api/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from .search import router as search_router
1111
from .torrent import router as torrent_router
1212

13-
__all__ = ["v1","lifespan"]
13+
__all__ = ["v1", "lifespan"]
1414

1515
# API 1.0
1616
v1 = APIRouter(prefix="/v1")

backend/src/module/api/auth.py

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -31,28 +31,20 @@ async def login(response: Response, form_data=Depends(OAuth2PasswordRequestForm)
3131
msg_zh="用户名或密码错误",
3232
)
3333
else:
34-
token = create_access_token(
35-
data={"sub": user.username}, expires_delta=timedelta(days=1)
36-
)
34+
token = create_access_token(data={"sub": user.username}, expires_delta=timedelta(days=1))
3735
response.set_cookie(key="token", value=token, httponly=True, max_age=86400)
3836
return {"access_token": token, "token_type": "bearer"}
3937
return u_response(resp)
4038

4139

42-
@router.get(
43-
"/refresh_token", response_model=dict, dependencies=[Depends(get_current_user)]
44-
)
40+
@router.get("/refresh_token", response_model=dict, dependencies=[Depends(get_current_user)])
4541
async def refresh(response: Response):
46-
token = create_access_token(
47-
data={"sub": active_user[0]}, expires_delta=timedelta(days=1)
48-
)
42+
token = create_access_token(data={"sub": active_user[0]}, expires_delta=timedelta(days=1))
4943
response.set_cookie(key="token", value=token, httponly=True, max_age=86400)
5044
return {"access_token": token, "token_type": "bearer"}
5145

5246

53-
@router.get(
54-
"/logout", response_model=APIResponse, dependencies=[Depends(get_current_user)]
55-
)
47+
@router.get("/logout", response_model=APIResponse, dependencies=[Depends(get_current_user)])
5648
async def logout(response: Response):
5749
active_user.clear()
5850
response.delete_cookie(key="token")
@@ -66,9 +58,7 @@ async def logout(response: Response):
6658
async def update_user(user_data: UserUpdate, response: Response):
6759
old_user = active_user[0]
6860
if update_user_info(user_data, old_user):
69-
token = create_access_token(
70-
data={"sub": old_user}, expires_delta=timedelta(days=1)
71-
)
61+
token = create_access_token(data={"sub": old_user}, expires_delta=timedelta(days=1))
7262
response.set_cookie(
7363
key="token",
7464
value=token,

backend/src/module/api/bangumi.py

Lines changed: 5 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
from module.database import Database, engine
88
from module.manager import BangumiManager
9-
from module.models import APIResponse, Bangumi, BangumiUpdate, ResponseModel,Torrent
9+
from module.models import APIResponse, Bangumi, ResponseModel
1010
from module.security.api import get_current_user
1111

1212
from .response import u_response
@@ -15,11 +15,7 @@
1515
logger = logging.getLogger(__name__)
1616

1717

18-
19-
20-
@router.get(
21-
"/get/all", response_model=list[Bangumi], dependencies=[Depends(get_current_user)]
22-
)
18+
@router.get("/get/all", response_model=list[Bangumi], dependencies=[Depends(get_current_user)])
2319
async def get_all_data():
2420
with Database() as db:
2521
return db.bangumi.search_all()
@@ -49,9 +45,9 @@ async def get_data(bangumi_id: str):
4945
)
5046
async def update_rule(
5147
bangumi_id: int,
52-
data: BangumiUpdate,
48+
data: Bangumi,
5349
):
54-
resp = await BangumiManager().update_rule(bangumi_id, data)
50+
resp = await BangumiManager().update_rule(data)
5551
if resp:
5652
resp = ResponseModel(
5753
status_code=200,
@@ -211,9 +207,7 @@ async def refresh_single_poster(bangumi_id: int):
211207
return u_response(resp)
212208

213209

214-
@router.get(
215-
"/reset/all", response_model=APIResponse, dependencies=[Depends(get_current_user)]
216-
)
210+
@router.get("/reset/all", response_model=APIResponse, dependencies=[Depends(get_current_user)])
217211
async def reset_all():
218212
with Database(engine) as db:
219213
db.bangumi.delete_all()
@@ -224,30 +218,3 @@ async def reset_all():
224218
"msg_zh": "重置所有规则成功。",
225219
},
226220
)
227-
228-
229-
# @router.get("/get_torrent", response_model=list[Torrent], dependencies=[Depends(get_current_user)])
230-
# async def manage_bangumi(_id:int):
231-
# """
232-
# 管理对应 Bangumi 的规则
233-
# """
234-
# try:
235-
# resp = await BangumiManager().fetch_all_bangumi_torrents(_id)
236-
# return resp
237-
# except Exception as e:
238-
# logger.error(f"[Bangumi] Error managing bangumi: {e}")
239-
# return []
240-
#
241-
# @router.get("/download_torrent", response_model=APIResponse, dependencies=[Depends(get_current_user)])
242-
# async def download_bangumi(_id:int, torrent:Torrent):
243-
# """
244-
# 手动下载对应 Bangumi 的种子
245-
# """
246-
# try:
247-
# resp = BangumiManager().download_torrent(_id,torrent)
248-
# return resp
249-
# except Exception as e:
250-
# logger.error(f"[Bangumi] Error downloading bangumi: {e}")
251-
# return []
252-
253-

backend/src/module/api/config.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,14 @@
1616
async def get_config():
1717
return settings
1818

19+
1920
# 测试通知的是否生效
2021
@router.post("/test_notify", response_model=APIResponse, dependencies=[Depends(get_current_user)])
2122
async def test_notify(config: Notification):
2223
try:
2324
from module.notification.notification import PostNotification
2425
from module.models import Message
26+
2527
print(config)
2628

2729
title = "AB通知测试"
@@ -47,9 +49,7 @@ async def test_notify(config: Notification):
4749
)
4850

4951

50-
@router.patch(
51-
"/update", response_model=APIResponse, dependencies=[Depends(get_current_user)]
52-
)
52+
@router.patch("/update", response_model=APIResponse, dependencies=[Depends(get_current_user)])
5353
async def update_config(config: Config):
5454
try:
5555
settings.save(config_dict=config.model_dump())

backend/src/module/api/log.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,7 @@ async def get_log():
2727
return Response("Log file not found", status_code=404)
2828

2929

30-
@router.get(
31-
"/clear", response_model=APIResponse, dependencies=[Depends(get_current_user)]
32-
)
30+
@router.get("/clear", response_model=APIResponse, dependencies=[Depends(get_current_user)])
3331
async def clear_log():
3432
if LOG_PATH.exists():
3533
LOG_PATH.write_text("")

backend/src/module/api/program.py

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,7 @@ async def lifespan(app: FastAPI):
2929
await program.stop()
3030

3131

32-
@router.get(
33-
"/restart", response_model=APIResponse, dependencies=[Depends(get_current_user)]
34-
)
32+
@router.get("/restart", response_model=APIResponse, dependencies=[Depends(get_current_user)])
3533
async def restart():
3634
try:
3735
await program.restart()
@@ -55,9 +53,7 @@ async def restart():
5553
)
5654

5755

58-
@router.get(
59-
"/start", response_model=APIResponse, dependencies=[Depends(get_current_user)]
60-
)
56+
@router.get("/start", response_model=APIResponse, dependencies=[Depends(get_current_user)])
6157
async def start():
6258
try:
6359
await program.start()
@@ -81,9 +77,7 @@ async def start():
8177
)
8278

8379

84-
@router.get(
85-
"/stop", response_model=APIResponse, dependencies=[Depends(get_current_user)]
86-
)
80+
@router.get("/stop", response_model=APIResponse, dependencies=[Depends(get_current_user)])
8781
async def stop():
8882
await program.stop()
8983
return u_response(
@@ -112,9 +106,7 @@ async def program_status():
112106
}
113107

114108

115-
@router.get(
116-
"/shutdown", response_model=APIResponse, dependencies=[Depends(get_current_user)]
117-
)
109+
@router.get("/shutdown", response_model=APIResponse, dependencies=[Depends(get_current_user)])
118110
async def shutdown_program():
119111
await program.stop()
120112
logger.info("Shutting down program...")

backend/src/module/api/rss.py

Lines changed: 21 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
Bangumi,
88
ResponseModel,
99
RSSItem,
10-
RSSUpdate,
1110
Torrent,
1211
)
1312
from module.rss import RSSAnalyser, RSSEngine, RSSManager, RSSRefresh
@@ -21,16 +20,12 @@
2120
collector = SeasonCollector()
2221

2322

24-
@router.get(
25-
path="", response_model=list[RSSItem], dependencies=[Depends(get_current_user)]
26-
)
23+
@router.get(path="", response_model=list[RSSItem], dependencies=[Depends(get_current_user)])
2724
async def get_rss():
2825
return RSSManager().search_all()
2926

3027

31-
@router.post(
32-
path="/add", response_model=APIResponse, dependencies=[Depends(get_current_user)]
33-
)
28+
@router.post(path="/add", response_model=APIResponse, dependencies=[Depends(get_current_user)])
3429
# 此为聚合用
3530
async def add_rss(rss: RSSItem):
3631
manager = RSSManager()
@@ -156,12 +151,8 @@ async def disable_many_rss(rss_ids: list[int]):
156151
response_model=APIResponse,
157152
dependencies=[Depends(get_current_user)],
158153
)
159-
async def update_rss(
160-
rss_id: int, data: RSSUpdate, current_user=Depends(get_current_user)
161-
):
162-
if not current_user:
163-
raise UNAUTHORIZED
164-
if RSSManager().update(rss_id, data):
154+
async def update_rss(rss_id: int, data: RSSItem):
155+
if RSSManager().update(data):
165156
return JSONResponse(
166157
status_code=200,
167158
content={
@@ -192,21 +183,21 @@ async def refresh_all():
192183
)
193184

194185

195-
@router.get(
196-
path="/refresh/{rss_id}",
197-
response_model=APIResponse,
198-
dependencies=[Depends(get_current_user)],
199-
)
200-
async def refresh_rss(rss_id: int):
201-
# TODO: 还没做
202-
await engine.refresh_rss(rss_id=rss_id)
203-
return JSONResponse(
204-
status_code=200,
205-
content={
206-
"msg_en": "Refresh RSS successfully.",
207-
"msg_zh": "刷新 RSS 成功。",
208-
},
209-
)
186+
# @router.get(
187+
# path="/refresh/{rss_id}",
188+
# response_model=APIResponse,
189+
# dependencies=[Depends(get_current_user)],
190+
# )
191+
# async def refresh_rss(rss_id: int):
192+
# # TODO: 还没做
193+
# await engine.refresh_rss(rss_id=rss_id)
194+
# return JSONResponse(
195+
# status_code=200,
196+
# content={
197+
# "msg_en": "Refresh RSS successfully.",
198+
# "msg_zh": "刷新 RSS 成功。",
199+
# },
200+
# )
210201

211202

212203
@router.get(
@@ -220,9 +211,7 @@ async def get_torrent(
220211
return RSSManager().get_rss_torrents(rss_id)
221212

222213

223-
@router.post(
224-
"/analysis", response_model=Bangumi, dependencies=[Depends(get_current_user)]
225-
)
214+
@router.post("/analysis", response_model=Bangumi, dependencies=[Depends(get_current_user)])
226215
async def analysis(rss: RSSItem):
227216
torrents = await RSSRefresh(rss).pull_rss()
228217
if not torrents:
@@ -250,9 +239,7 @@ async def analysis(rss: RSSItem):
250239
)
251240

252241

253-
@router.post(
254-
"/collect", response_model=APIResponse, dependencies=[Depends(get_current_user)]
255-
)
242+
@router.post("/collect", response_model=APIResponse, dependencies=[Depends(get_current_user)])
256243
async def download_collection(data: Bangumi):
257244
resp = await engine.download_bangumi(bangumi=data)
258245

0 commit comments

Comments
 (0)