tubearchivist/backend
Dakota Gravitt a32e95d913 feat(transcoding): add sentinel-based transcode guard and frontend retry
- Introduce a `.transcoding` sentinel file to prevent concurrent
  ffmpeg processes for the same video; return HTTP 202 with
  `Retry-After: 5` when a transcode is already in progress
- Serve cached transcode immediately when the output file exists,
  avoiding unnecessary re-transcodes on repeat requests
- Fix transcode failure response code from 404 to 500
- Add `isTranscoding` state in VideoPlayer that triggers an
  in-UI message and auto-retries the video source after 5 s
  when the server responds with 202
- Use `retryKey` to force re-mount of the `<video>` element on retry
2026-02-25 21:02:48 -06:00
..
appsettings feat: add MKV container support and video streaming endpoint 2026-02-24 09:33:43 -06:00
channel Fixed channel override not triggering multi-audio track MKV downloads. 2026-02-24 10:22:02 -06:00
common dynamic ES pagination pit for meta embed task 2026-02-21 09:20:27 +07:00
config remove old pot manual field 2026-02-08 18:04:00 +07:00
download feat(download): enforce strict audio_multistream gating and enrich stream metadata 2026-02-24 16:27:09 -06:00
playlist fix empty playlist desc serializer 2026-02-06 18:01:35 +07:00
stats limit log to debug only 2025-11-15 11:08:33 +07:00
task remove redundant thumbnail embed task 2025-12-28 11:44:52 +07:00
user Add potoken provider (#1076) 2026-01-23 00:11:57 +07:00
video feat(transcoding): add sentinel-based transcode guard and frontend retry 2026-02-25 21:02:48 -06:00
README.md add django app overview readme 2024-08-10 16:12:06 +02:00
manage.py renamed django app folder to backend 2024-08-03 21:58:22 +02:00
requirements.txt bump requirements 2026-02-21 09:22:32 +07:00

README.md

Django Setup

Apps

The backend is split up into the following apps.

config

Root Django App. Doesn't define any views.

  • Has main settings.py
  • Has main urls.py responsible for routing to other apps

common

Functionality shared between apps.

Defines views on the root /api/* path. Has base views to inherit from.

  • Connections to ES and Redis
  • Searching
  • URL parser
  • Collection of helper functions

appsettings

Responsible for functionality from the settings pages.

Defines views at /api/appsettings/*.

  • Index setup
  • Reindexing
  • Snapshots
  • Filesystem Scan
  • Manual import

channel

Responsible for Channel Indexing functionality.

Defines views at /api/channel/* path.

download

Implements download functionality with yt-dlp.

Defines views at /api/download/*.

  • Download videos
  • Queue management
  • Thumbnails
  • Subscriptions

playlist

Implements playlist functionality.

Defines views at /api/playlist/*.

  • Index Playlists
  • Manual Playlists

stats

Builds aggregations views for the statistics dashboard.

Defines views at /api/stats/*.

task

Defines tasks for Celery.

Defines views at /api/task/*.

  • Has main tasks.py with all shared_task definitions
  • Has CustomPeriodicTask model
  • Implements apprise notifications links
  • Implements schedule functionality

user

Implements user and auth functionality.

Defines views at /api/config/*.

  • Defines custom Account model

video

Index functionality for videos.

Defines views at /api/video/*.

  • Index videos
  • Index comments
  • Index/download subtitles
  • Media stream parsing