feat: add multiply manage api.

This commit is contained in:
EstrellaXD
2023-08-11 19:44:41 +08:00
parent 1c897d8861
commit fee0b074e3
4 changed files with 54 additions and 3 deletions

View File

@@ -48,6 +48,17 @@ async def delete_rule(
return u_response(resp)
@router.delete("/delete/many/{bangumi_id}")
async def delete_many_rule(
bangumi_id: list, file: bool = False, current_user=Depends(get_current_user)
):
if not current_user:
raise UNAUTHORIZED
with TorrentManager() as manager:
for i in bangumi_id:
manager.delete_rule(i, file)
@router.delete("/disable/{bangumi_id}")
async def disable_rule(
bangumi_id: str, file: bool = False, current_user=Depends(get_current_user)
@@ -58,6 +69,17 @@ async def disable_rule(
return manager.disable_rule(bangumi_id, file)
@router.delete("/disable/many/{bangumi_id}")
async def disable_many_rule(
bangumi_id: list, file: bool = False, current_user=Depends(get_current_user)
):
if not current_user:
raise UNAUTHORIZED
with TorrentManager() as manager:
for i in bangumi_id:
manager.disable_rule(i, file)
@router.get("/enable/{bangumi_id}")
async def enable_rule(bangumi_id: str, current_user=Depends(get_current_user)):
if not current_user:

View File

@@ -1,6 +1,10 @@
from typing import Optional
from fastapi import APIRouter, Depends, HTTPException, status
from fastapi.responses import JSONResponse
from .response import u_response
from module.models import RSSItem, RSSUpdate
from module.rss import RSSEngine
from module.security.api import get_current_user, UNAUTHORIZED
@@ -18,6 +22,17 @@ async def get_rss(current_user=Depends(get_current_user)):
return engine.rss.search_all()
@router.post("/add")
async def add_rss(
url: str, name: Optional[str], combine: bool, current_user=Depends(get_current_user)
):
if not current_user:
raise UNAUTHORIZED
with RSSEngine() as engine:
result = engine.add_rss(url, name, combine)
return u_response(result)
@router.delete("/delete/{rss_id}")
async def delete_rss(rss_id: int, current_user=Depends(get_current_user)):
if not current_user:

View File

@@ -17,12 +17,13 @@ class RSSDatabase:
db_data = self.session.exec(statement).first()
if db_data:
logger.debug(f"RSS Item {data.url} already exists.")
return
return False
else:
logger.debug(f"RSS Item {data.url} not exists, adding...")
self.session.add(data)
self.session.commit()
self.session.refresh(data)
return True
def add_all(self, data: list[RSSItem]):
for item in data:

View File

@@ -3,7 +3,7 @@ import logging
from typing import Optional
from module.models import Bangumi, RSSItem, Torrent
from module.models import Bangumi, RSSItem, Torrent, ResponseModel
from module.network import RequestContent
from module.downloader import DownloadClient
@@ -33,7 +33,20 @@ class RSSEngine(Database):
with RequestContent() as req:
name = req.get_rss_title(rss_link)
rss_data = RSSItem(item_path=name, url=rss_link, combine=combine)
self.rss.add(rss_data)
if self.rss.add(rss_data):
return ResponseModel(
status=True,
status_code=200,
msg_en="RSS added successfully.",
msg_zh="RSS 添加成功。",
)
else:
return ResponseModel(
status=False,
status_code=400,
msg_en="RSS added failed.",
msg_zh="RSS 添加失败。",
)
def pull_rss(self, rss_item: RSSItem) -> list[Torrent]:
torrents = self._get_torrents(rss_item)