Files
project-kino/nextcloud-import/backend-nextcloud-variant/app/schemas.py
Hermes Agent 884c198783 Import remaining Nextcloud Kino-Projekt material into git
Moves git-compatible content from Nextcloud
(Botomir/Projekte/Angefangen/Kino-Projekt) into this repo per cleanup
request, under nextcloud-import/ to avoid colliding with the actively
maintained backend/frontend/worker layout:

- status/planning docs (Botomir-Status.md, Plan-Botomir.md, Projektbeschreibung.md)
- docs/ (deployment.md, provider-policy.md)
- backend-nextcloud-variant/ (older app/ layout, kept for reference only)
- plugin.video.xstream/, script.module.xstreamscraper/ (vendored Kodi addon source)

A third-party Firefox extension folder was intentionally left in Nextcloud
(unrelated vendor code, not project source).
2026-08-17 10:47:13 +02:00

54 lines
1.5 KiB
Python

from datetime import datetime
from pydantic import AnyHttpUrl, BaseModel, Field
class ProbeRequest(BaseModel):
url: AnyHttpUrl
class ProbeResponse(BaseModel):
provider: str
title: str | None = None
description: str | None = None
thumbnail: str | None = None
duration_seconds: int | None = None
external_id: str | None = None
allowed: bool = True
class ImportRequest(BaseModel):
url: AnyHttpUrl
target_profile: str = Field(default="clip", pattern="^(film|serie|clip)$")
title: str | None = Field(default=None, max_length=180)
year: int | None = Field(default=None, ge=1888, le=2200)
series_title: str | None = Field(default=None, max_length=180)
season: int | None = Field(default=None, ge=1, le=200)
episode: int | None = Field(default=None, ge=1, le=1000)
episode_title: str | None = Field(default=None, max_length=180)
target_library: str | None = Field(default=None, max_length=80) # legacy API alias
max_height: int = Field(default=1080, ge=144, le=2160)
audio_only: bool = False
class ImportJobResponse(BaseModel):
id: int
source_id: int
status: str
target_library: str
target_path: str | None = None
progress: float
error: str | None = None
created_at: datetime
updated_at: datetime
class SourceResponse(BaseModel):
id: int
kind: str
url: str
title: str | None = None
provider: str | None = None
external_id: str | None = None
created_at: datetime