fix(ingest): raise ref cap to 50 and clarify invalid bvid error
This commit is contained in:
1 parent
b5bf7d9b8f
commit
b0c53e8a2f
7 files changed
+107
-9
No files matched your search
@@ -11,7 +11,11 @@ import time
|
||||
from dataclasses import dataclass, field
|
||||
from typing import Any
|
||||
|
||||
from ..bilibili.client import BilibiliError, BilibiliProtocolError
|
||||
from ..bilibili.client import (
|
||||
BilibiliAPIError,
|
||||
BilibiliError,
|
||||
BilibiliProtocolError,
|
||||
)
|
||||
from ..config import ConfigStore
|
||||
from ..repository import Repository
|
||||
from ..timeutil import shanghai_date
|
||||
@@ -42,6 +46,7 @@ class IngestResult:
|
||||
class ManualIngestResult:
|
||||
refs: int = 0
|
||||
added: int = 0
|
||||
truncated: int = 0
|
||||
results: list[IngestResult] = field(default_factory=list)
|
||||
|
||||
@property
|
||||
@@ -52,6 +57,7 @@ class ManualIngestResult:
|
||||
return {
|
||||
"refs": self.refs,
|
||||
"added": self.added,
|
||||
"truncated": self.truncated,
|
||||
"ok": self.ok,
|
||||
"results": [result.as_dict() for result in self.results],
|
||||
}
|
||||
@@ -180,16 +186,30 @@ class LibraryService:
|
||||
# ------------------------------------------------------------ manual
|
||||
|
||||
def ingest_text(self, text: object) -> ManualIngestResult:
|
||||
refs = extract_video_refs(text, limit=self.max_refs)
|
||||
result = ManualIngestResult(refs=len(refs))
|
||||
if not refs:
|
||||
all_refs = extract_video_refs(text, limit=None)
|
||||
result = ManualIngestResult(refs=len(all_refs))
|
||||
if not all_refs:
|
||||
return result
|
||||
if len(all_refs) > self.max_refs:
|
||||
result.truncated = len(all_refs) - self.max_refs
|
||||
all_refs = all_refs[: self.max_refs]
|
||||
result.refs = len(all_refs)
|
||||
|
||||
client = self.read_provider.get()
|
||||
ups: list[tuple[int | None, str]] = []
|
||||
for ref in refs:
|
||||
for ref in all_refs:
|
||||
try:
|
||||
detail = self._resolve_ref(client, ref)
|
||||
except BilibiliAPIError as exc:
|
||||
message = (
|
||||
"无法解析该视频引用:BV 号/av 号无效或视频不存在(code=-400)"
|
||||
if exc.code == -400 else str(exc)
|
||||
)
|
||||
result.results.append(IngestResult(
|
||||
ok=False, aid=None, state="error", message=message,
|
||||
))
|
||||
self._log("warning", "ingest.manual_failed", error=str(exc))
|
||||
continue
|
||||
except BilibiliError as exc:
|
||||
result.results.append(IngestResult(
|
||||
ok=False, aid=None, state="error", message=str(exc),
|
||||
|
||||
Reference in new issue
Block a user