mirror of https://github.com/Nezreka/SoulSync.git
Foundation for the isolated video download settings. The Downloads tab is almost entirely music-specific, so on the video side the music download sections are hidden (video-side.css) and a data-video-only 'Video Download Folders' section takes their place — an input (download) and output (transfer/library) folder, stored SEPARATELY from the music soulseek.* paths in video.db's video_settings KV table. - api/video/downloads.py: GET/POST /api/video/downloads/config (download_path, transfer_path), registered in the video blueprint. Imports nothing from music. - video-settings.js: loadDownloads/saveDownloads wired into onPageShown + the video save-button chain. - The shared 'Indexers & Downloaders' tab is left untouched (identical for both). 2 tests (round-trip + the isolation guard). Quality profile, video hybrid, and the shared slskd block are the next phases.video
parent
8c2f66bea9
commit
8392de9207
@ -0,0 +1,46 @@
|
||||
"""Video-side download SETTINGS (isolated).
|
||||
|
||||
Persists the video download configuration in video.db's ``video_settings`` KV
|
||||
table — fully separate from the music ``soulseek.*`` paths so the two libraries
|
||||
never share a folder or collide. The actual download fulfillment engine (wishlist
|
||||
→ search → grab) is a later roadmap phase; these endpoints just store/serve the
|
||||
config the Settings → Downloads tab edits.
|
||||
|
||||
Keys persisted here (all under video.db):
|
||||
- ``download_path`` : input folder a video download lands in
|
||||
- ``transfer_path`` : output folder finished video files move to (video library)
|
||||
|
||||
Connection settings that are genuinely SHARED with music (the slskd instance, the
|
||||
torrent/usenet clients, Prowlarr indexers) are NOT stored here — those live in the
|
||||
music config_manager and are surfaced on the shared Indexers tab + shared slskd
|
||||
block (a deliberate shared boundary, since they're one physical resource).
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from flask import jsonify, request
|
||||
|
||||
from utils.logging_config import get_logger
|
||||
|
||||
logger = get_logger("video_api.downloads")
|
||||
|
||||
# Video-specific path keys (vs. the shared connection settings).
|
||||
_PATH_KEYS = ("download_path", "transfer_path")
|
||||
|
||||
|
||||
def register_routes(bp):
|
||||
@bp.route("/downloads/config", methods=["GET"])
|
||||
def video_downloads_config():
|
||||
from . import get_video_db
|
||||
db = get_video_db()
|
||||
return jsonify({k: db.get_setting(k) or "" for k in _PATH_KEYS})
|
||||
|
||||
@bp.route("/downloads/config", methods=["POST"])
|
||||
def video_downloads_config_save():
|
||||
from . import get_video_db
|
||||
db = get_video_db()
|
||||
body = request.get_json(silent=True) or {}
|
||||
for key in _PATH_KEYS:
|
||||
if key in body:
|
||||
db.set_setting(key, (str(body.get(key) or "")).strip())
|
||||
return jsonify({"status": "saved"})
|
||||
Loading…
Reference in new issue