Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
  • This project
    • Loading...
  • Sign in / Register
T
Tidal
  • Overview
    • Overview
    • Details
    • Activity
    • Cycle Analytics
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Charts
  • Issues 0
    • Issues 0
    • List
    • Board
    • Labels
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
    • Charts
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • PLN
  • Tidal
  • Repository

Switch branch/tag
  • Tidal
  • armada
  • api
  • config.py
Find file
BlameHistoryPermalink
  • PLN (Algolia)'s avatar
    feat(audio-api): /sources (#29) + artifact store (#27) · c7e5392b
    Two links of the heavy chain, built on the #25 job backbone. Both ship the CODE
    now; they go live the moment erable ssh is back (yt-dlp install) — no GPU needed.
    
    #27 — artifact store (artifacts.py). Big binaries (fetched sources, later stems/
    loops) live content-addressed on local disk under FOURIER_ARTIFACTS, tracked as
    ordinary cache rows (kind→result_ref), so the existing LRU cache.gc() already
    evicts the coldest under a cap. Freebox was the original SSOT plan — deferred per
    PLN; erable-local for now. Serving is zero-copy via nginx X-Accel-Redirect
    (FOURIER_X_ACCEL), FileResponse fallback in dev. resolve() refuses path traversal
    / anything outside the root.
    
    #29 — /sources (engines/sources.py + POST /sources). The worker shells out to
    yt-dlp → bestaudio → 44.1k WAV (analysis-ready for /separate, /loops, features),
    content-addresses it, stores it, and aliases url→content_id so a repeat URL is an
    idempotent born-done job (no re-download). Submit returns 202 {job_id}; poll
    /jobs/{id}. URL scope is OPEN (any http(s)) per PLN — gated by the platform apikey
    + nechapi monitoring — but we still hard-block the SSRF footguns (non-http(s),
    localhost, RFC1918/link-local/reserved IPs; incl. the 169.254.169.254 metadata
    classic). The fetch is a thin seam so tests mock the network with a synthetic WAV.
    
    Also: GET /artifacts/{cid}/{name} serving endpoint; healthz reports yt-dlp
    presence; _meter now counts by ROUTE TEMPLATE not concrete path (else /jobs/{id}
    & /artifacts/{id} would mint unbounded Prometheus series). OpenAPI refreshed
    13→17 ops, @nech/api regenerated (submitSource/getArtifact/getJob/cancelJob).
    yt-dlp added to requirements-deploy; DEPLOY.md §5b documents the yt-dlp+ffmpeg
    install and the nginx internal location. 78→95 tests green.
    PLN (Algolia) authored Jun 29, 2026
    c7e5392b
config.py 5.14 KB
EditWeb IDE
×

Replace config.py

Attach a file by drag & drop or click to upload


Cancel
A new branch will be created in your fork and a new merge request will be started.