Files
siftlode/backend/alembic/versions/0058_dl_default_720p.py
T
peter b1832afd18 style: apply ruff format across backend + scripts (line-length 100)
Mechanical, whole-tree `ruff format` pass — no behaviour change. Recorded in
.git-blame-ignore-revs (next commit) so git blame skips it.
2026-08-23 07:43:06 +02:00

73 lines
2.3 KiB
Python

"""reset builtin download profiles: 720p is now the default (first) preset
Revision ID: 0058_dl_default_720p
Revises: 0057_plex_ppl_enriched
Create Date: 2026-07-22
The download dialog preselects the first builtin (lowest sort_order). Make 720p that default —
it plays everywhere, downloads faster, and is plenty for the shared /watch player — with 1080p and
Best still one click away. Re-seeds the builtin rows so fresh installs and existing DBs converge
(same mechanism as 0040). Existing jobs are unaffected (they snapshot their spec; a profile_id that
pointed at a replaced row just SET NULLs).
"""
from typing import Sequence, Union
import sqlalchemy as sa
from alembic import op
revision: str = "0058_dl_default_720p"
down_revision: Union[str, None] = "0057_plex_ppl_enriched"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def _spec(mode, height=None, container=None, audio_format=None):
return {
"mode": mode,
"max_height": height,
"container": container,
"audio_format": audio_format,
"vcodec": None,
"embed_subs": False,
"embed_chapters": False,
"embed_thumbnail": False,
"sponsorblock": False,
}
# 720p first (the default preselection), then 1080p, Best, then the rest.
_BUILTINS = [
("720p (MP4)", _spec("av", 720, "mp4"), 10),
("1080p (MP4)", _spec("av", 1080, "mp4"), 20),
("Best (MP4)", _spec("av", None, "mp4"), 30),
("Audio (M4A)", _spec("a", None, None, "m4a"), 40),
("Audio (MP3)", _spec("a", None, None, "mp3"), 50),
("Video only (MP4)", _spec("v", None, "mp4"), 60),
]
_profiles = sa.table(
"download_profiles",
sa.column("user_id", sa.Integer),
sa.column("name", sa.String),
sa.column("spec", sa.JSON),
sa.column("is_builtin", sa.Boolean),
sa.column("sort_order", sa.Integer),
)
def upgrade() -> None:
op.execute("DELETE FROM download_profiles WHERE is_builtin = true")
op.bulk_insert(
_profiles,
[
{"user_id": None, "name": n, "spec": s, "is_builtin": True, "sort_order": o}
for n, s, o in _BUILTINS
],
)
def downgrade() -> None:
# No-op: the previous builtin set (1080p first) was seeded by 0040; not worth reconstructing.
pass