Skip to content

Commit 66d2412

Browse files
authored
Merge pull request #86 from shinonomeow/shino_aio
fix download error
2 parents 8313fcf + ff52400 commit 66d2412

6 files changed

Lines changed: 78 additions & 50 deletions

File tree

.github/workflows/build.yml

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ on:
55
types:
66
- closed
77
branches:
8-
- aio_test
8+
- main
99
push:
1010

1111
jobs:
@@ -14,7 +14,7 @@ jobs:
1414
steps:
1515
- uses: actions/checkout@v4
1616
- name: Set up Python 3.11
17-
uses: actions/setup-python@v4
17+
uses: actions/setup-python@v3
1818
with:
1919
python-version: "3.11"
2020
- name: Install dependencies
@@ -121,10 +121,12 @@ jobs:
121121
steps:
122122
- name: Checkout
123123
uses: actions/checkout@v4
124+
124125
- name: Install Node.js
125126
uses: actions/setup-node@v4
126127
with:
127128
node-version: 20
129+
128130
- uses: pnpm/action-setup@v4
129131
name: Install pnpm
130132
with:
@@ -152,7 +154,7 @@ jobs:
152154
cd webui && pnpm build
153155
154156
- name: Upload artifact
155-
uses: actions/upload-artifact@v4
157+
uses: actions/upload-artifact@v3
156158
with:
157159
name: dist
158160
path: webui/dist
@@ -183,7 +185,7 @@ jobs:
183185
uses: docker/metadata-action@v4
184186
with:
185187
images: |
186-
shinonomeow/auto_bangumi
188+
estrellaxd/auto_bangumi
187189
ghcr.io/${{ github.repository }}
188190
tags: |
189191
type=raw,value=${{ needs.version-info.outputs.version }}
@@ -195,7 +197,7 @@ jobs:
195197
uses: docker/metadata-action@v4
196198
with:
197199
images: |
198-
shinonomeow/auto_bangumi
200+
estrellaxd/auto_bangumi
199201
ghcr.io/${{ github.repository }}
200202
tags: |
201203
type=raw,value=${{ needs.version-info.outputs.version }}
@@ -217,7 +219,7 @@ jobs:
217219
password: ${{ secrets.ACCESS_TOKEN }}
218220

219221
- name: Download artifact
220-
uses: actions/download-artifact@v4
222+
uses: actions/download-artifact@v3
221223
with:
222224
name: dist
223225
path: backend/src/dist
@@ -256,7 +258,7 @@ jobs:
256258
builder: ${{ steps.buildx.output.name }}
257259
platforms: linux/amd64,linux/arm64,linux/arm/v7
258260
push: false
259-
tags: shinonomeow/auto_bangumi:test
261+
tags: estrellaxd/auto_bangumi:test
260262
cache-from: type=gha, scope=${{ github.workflow }}
261263
cache-to: type=gha, scope=${{ github.workflow }}
262264

@@ -272,7 +274,7 @@ jobs:
272274
uses: actions/checkout@v4
273275

274276
- name: Download artifact webui
275-
uses: actions/download-artifact@v4
277+
uses: actions/download-artifact@v3
276278
with:
277279
name: dist
278280
path: webui/dist
@@ -282,7 +284,7 @@ jobs:
282284
cd webui && ls -al && tree && zip -r dist.zip dist
283285
284286
- name: Download artifact app
285-
uses: actions/download-artifact@v4
287+
uses: actions/download-artifact@v3
286288
with:
287289
name: dist
288290
path: backend/src/dist
@@ -325,4 +327,17 @@ jobs:
325327
webui/dist.zip
326328
backend/app-v${{ needs.version-info.outputs.version }}.zip
327329
env:
328-
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
330+
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
331+
332+
telegram:
333+
runs-on: ubuntu-latest
334+
needs: [release]
335+
steps:
336+
- name: send telegram message on push
337+
uses: appleboy/telegram-action@master
338+
with:
339+
to: ${{ secrets.TELEGRAM_TO }}
340+
token: ${{ secrets.TELEGRAM_TOKEN }}
341+
message: |
342+
New release: ${{ needs.release.outputs.version }}
343+
Link: ${{ needs.release.outputs.url }}

backend/src/module/api/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from .rss import router as rss_router
1010
from .search import router as search_router
1111

12-
__all__ = ["v1"]
12+
__all__ = ["v1","lifespan"]
1313

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

backend/src/module/conf/log.py

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,30 @@ def setup_logger(level: int = logging.INFO, reset: bool = False):
1919
logging.addLevelName(logging.WARNING, "WARNING:")
2020
LOGGING_FORMAT = "[%(asctime)s] %(levelname)-8s %(message)s"
2121
TIME_FORMAT = "%Y-%m-%d %H:%M:%S"
22-
logging.basicConfig(
23-
level=level,
24-
format=LOGGING_FORMAT,
25-
datefmt=TIME_FORMAT,
26-
encoding="utf-8",
27-
handlers=[
28-
logging.FileHandler(LOG_PATH, encoding="utf-8"),
29-
logging.StreamHandler(),
30-
],
31-
)
22+
23+
# 获取根日志器
24+
root_logger = logging.getLogger()
25+
26+
# 如果已经有处理器且不是重置模式,则更新现有配置
27+
if root_logger.handlers and not reset:
28+
# 更新根日志器的等级
29+
root_logger.setLevel(level)
30+
# 更新所有处理器的等级
31+
for handler in root_logger.handlers:
32+
handler.setLevel(level)
33+
else:
34+
# 首次配置或重置模式,使用 basicConfig
35+
logging.basicConfig(
36+
level=level,
37+
format=LOGGING_FORMAT,
38+
datefmt=TIME_FORMAT,
39+
encoding="utf-8",
40+
handlers=[
41+
logging.FileHandler(LOG_PATH, encoding="utf-8"),
42+
logging.StreamHandler(),
43+
],
44+
force=reset, # 强制重新配置如果是重置模式
45+
)
3246
loggers_to_silence = [
3347
"httpx",
3448
"httpcore",

backend/src/module/core/program.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import logging
22

3-
from module.conf import VERSION, settings
3+
from module.conf import VERSION, settings, setup_logger
44

55
from .aiocore import app_core
66
from .status import ProgramStatus
@@ -56,6 +56,10 @@ async def start(self):
5656
logger.debug("[Program] loading settings...")
5757
settings.load()
5858
logger.debug("[Program] settings loaded.")
59+
logger.debug("[Program] applying log configuration...")
60+
# 重新应用日志配置以反映设置更改
61+
setup_logger(level=logging.DEBUG if settings.log.debug_enable else logging.INFO)
62+
logger.debug("[Program] log configuration applied.")
5963
logger.debug("[Program] starting application core...")
6064
await self.app_core.initialize()
6165
await self.app_core.start()

backend/src/module/downloader/client/qbittorrent/qbittorrent.py

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -150,24 +150,20 @@ async def torrent_info(self, hash: str) -> TorrentDownloadInfo | None:
150150
params=data,
151151
)
152152
reps.raise_for_status()
153-
if "404" in reps.text:
154-
logger.warning(f"[qbittorrent] Cannot found {hash},{reps.text}")
155-
return None
156-
else:
157-
logger.debug(f"[qbittorrent] Torrent info: {hash}")
158-
reps = reps.json()
159-
# print(reps)
160-
logger.debug(
161-
f"[qbittorrent] Torrent info: {reps['eta']=}, {reps['save_path']=}, {reps['completion_date']=}"
162-
)
163-
if reps["completion_date"] == -1:
164-
reps["completion_date"] = 0
165-
res = TorrentDownloadInfo(
166-
eta=reps["eta"],
167-
save_path=reps["save_path"],
168-
completed=reps["completion_date"],
169-
)
170-
return res
153+
logger.debug(f"[qbittorrent] Torrent info: {hash}")
154+
reps = reps.json()
155+
# print(reps)
156+
logger.debug(
157+
f"[qbittorrent] Torrent info: {reps['eta']=}, {reps['save_path']=}, {reps['completion_date']=}"
158+
)
159+
if reps["completion_date"] == -1:
160+
reps["completion_date"] = 0
161+
res = TorrentDownloadInfo(
162+
eta=reps["eta"],
163+
save_path=reps["save_path"],
164+
completed=reps["completion_date"],
165+
)
166+
return res
171167
except Exception as e:
172168
self.handle_exception(e, "torrent_info")
173169
return None

backend/src/module/downloader/download_client.py

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,11 @@
66
from typing import Any
77

88
from module.conf import settings
9-
from module.downloader.client import AuthorizationError, BaseDownloader, Downloader
109
from module.models import Torrent, TorrentDownloadInfo
1110
from module.utils import gen_save_path
1211

12+
from .client import AuthorizationError, BaseDownloader
13+
1314
logger = logging.getLogger(__name__)
1415

1516

@@ -106,7 +107,7 @@ class DownloadClient:
106107
"""
107108

108109
def __init__(self):
109-
self.downloader: BaseDownloader | None = None
110+
self.downloader: BaseDownloader = self.get_downloader()
110111
# 用于等待登陆完成
111112
self.login_success_event: asyncio.Event = asyncio.Event()
112113
self.login_timeout: int = 30 # 30秒超时
@@ -122,12 +123,7 @@ def __init__(self):
122123

123124
def initialize(self):
124125
# 根据设置动态获取下载器
125-
downloader_type = settings.downloader.type
126-
package_path = f"module.downloader.client.{downloader_type}"
127-
downloader_module = importlib.import_module(package_path)
128-
DownloaderClass = downloader_module.Downloader
129-
print(f"[Downloader Client] Using downloader: {downloader_type}")
130-
self.downloader = DownloaderClass()
126+
self.get_downloader()
131127

132128
# 初始化下载器
133129
self.downloader.initialize()
@@ -138,8 +134,11 @@ def initialize(self):
138134
def get_downloader(self) -> BaseDownloader:
139135
"""获取下载器实例"""
140136
downloader_type = settings.downloader.type
141-
142-
return self.downloader
137+
package_path = f"module.downloader.client.{downloader_type}"
138+
downloader_module = importlib.import_module(package_path)
139+
DownloaderClass = downloader_module.Downloader
140+
logger.debug(f"[Downloader Client] Using downloader: {downloader_type}")
141+
return DownloaderClass()
143142

144143
async def login(self):
145144
"""一次性登录尝试,不重试"""

0 commit comments

Comments
 (0)