Add tests for video linking

This commit is contained in:
2025-06-06 13:16:11 +02:00
parent 6e2743a4be
commit 489336c77a
8 changed files with 164 additions and 38 deletions

View File

@@ -7,9 +7,9 @@ from aiohttp import ClientSession
from pydantic import TypeAdapter
from .models.movie import Movie
from .models.request import Request
from .models.serie import Serie
from .models.videos import For, Resource, Video, VideoCreated, VideoInfo, VideoLink
from .requests import Request
from .utils import Singleton
logger = getLogger(__name__)
@@ -96,7 +96,7 @@ class KyooClient(metaclass=Singleton):
)
async with self._client.post(
"videos",
"videos/link",
data=TypeAdapter(list[VideoLink]).dump_json(
[map_request(x) for x in videos],
by_alias=True,

View File

@@ -0,0 +1,20 @@
from __future__ import annotations
from typing import Literal
from pydantic import Field
from .videos import Guess
from ..utils import Model
class Request(Model, extra="allow"):
pk: int | None = Field(exclude=True, default=None)
kind: Literal["episode", "movie"]
title: str
year: int | None
external_id: dict[str, str]
videos: list[Request.Video]
class Video(Model):
id: str
episodes: list[Guess.Episode]

View File

@@ -1,33 +1,18 @@
from __future__ import annotations
from asyncio import CancelledError, Event, TaskGroup
from logging import getLogger
from typing import Literal, cast
from typing import cast
from asyncpg import Connection, Pool
from pydantic import Field, TypeAdapter
from pydantic import TypeAdapter
from .client import KyooClient
from .models.videos import Guess, Resource
from .models.request import Request
from .models.videos import Resource
from .providers.provider import Provider
from .utils import Model
logger = getLogger(__name__)
class Request(Model, extra="allow"):
pk: int | None = Field(exclude=True, default=None)
kind: Literal["episode", "movie"]
title: str
year: int | None
external_id: dict[str, str]
videos: list[Request.Video]
class Video(Model):
id: str
episodes: list[Guess.Episode]
class RequestCreator:
def __init__(self, database: Connection):
self._database = database