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).
54 lines
1.5 KiB
Python
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
|