Commit Graph

2633 Commits

Author SHA1 Message Date
Dakota Gravitt 4efea375d6 Add explaination of new settings in Application settings page
Add 's' to AudioMultistream variables/methods to stay consistent with yt-dlp's naming of the --audio-multistream flag
2026-02-26 00:55:13 -06:00
Dakota Gravitt 1ba03489ff reduce verbose logging when yt-dlp downloads individual HLS stream 2026-02-26 00:28:07 -06:00
Dakota Gravitt 1a6c331499 change docker-compose.yml back to default 2026-02-26 00:20:23 -06:00
Dakota Gravitt 0044ca19a1 Enhance language and title extraction from metadata tags 2026-02-26 00:16:44 -06:00
Dakota Gravitt 5bdc56c865 refactor(downloads): relax mkv enforcement for audio multistream if video does not include additional audio tracks
- Remove API-level validation that rejected `audio_multistream` unless the
container was explicitly set to `mkv` in both app config and channel update endpoints.
- Update yt-dlp option building to only force MKV output when multiple audio tracks are actually selected, instead of always forcing MKV whenever multistream is enabled. This keeps multistream behavior flexible and avoids unnecessary container restrictions for single-track selections.
2026-02-25 23:53:40 -06:00
Dakota Gravitt 776cc2bea1 Clear channel multistream state when switching to global container if container is mp4 but channel override was previously had multistreams enabled 2026-02-25 21:25:17 -06:00
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
Dakota Gravitt 89e558207f Add `ChangeEvent` import to ChannelAbout (minor fix) 2026-02-24 20:59:22 -06:00
Dakota Gravitt 927ed0807d feat(download): enforce strict audio_multistream gating and enrich stream metadata
- Return `None` from `_get_audio_languages` when `audio_multistream` is
  not effectively enabled; `audio_languages` alone must not trigger
  multi-track downloads (strict mode)
- Remove `audio_languages` from MKV container-forcing logic in
- Extend `StreamItemSerializer` with optional `language`, `title`,
  `channels`, and `channel_layout` fields to surface per-track metadata
- Improve `_extract_audio_metadata` to extract language (normalising
  "und" → None), track title, channel layout, and fall back to BPS/MKV
  tags when a stream-level bitrate is absent
2026-02-24 16:27:09 -06:00
Dakota Gravitt d5fc906641 Fixed channel override not triggering multi-audio track MKV downloads.
Also adds proper `ValueError` handling in the channel overwrites
API view to return a structured 400 error response.
2026-02-24 10:22:02 -06:00
Dakota Gravitt 6fc2bf36b6 feat: add MKV container support and video streaming endpoint
- Add `container` config option (mp4/mkv) and `audio_languages` to
  downloads config with defaults
- Add validation to enforce mkv container when audio_multistream
  is enabled, returning a 400 error otherwise
- Add `download_container` channel-level overwrite (mp4/mkv)
- Update filesystem scanner to detect both `.mp4` and `.mkv` files
- Add video streaming API endpoint with fallback transcoding to mp4
  for unsupported formats
2026-02-24 09:33:43 -06:00
Dakota Gravitt c7962486f3 fix audio_multistream to audio_multistreams 2026-02-24 00:53:35 -06:00
Dakota Gravitt f8e4f65628 Add support for --audio-multistream flag 2026-02-24 00:18:27 -06:00
Cameron Horn c0d9db856a
allow replicas (#1116) 2026-02-21 09:24:37 +07:00
Simon 9bc1303d7f
bump requirements 2026-02-21 09:22:32 +07:00
Simon b9ce0259f9
dynamic ES pagination pit for meta embed task 2026-02-21 09:20:27 +07:00
Simon c4ac6441bd
remove old POT help text 2026-02-08 18:15:09 +07:00
Simon 161e8ba9dd
remove old pot manual field 2026-02-08 18:04:00 +07:00
Cameron Horn dbab82dfab
index names now variable (#1115) 2026-02-08 17:31:21 +07:00
Simon c491e3654f Merge branch 'fix/index-migrations-improvements' into develop 2026-02-08 17:21:38 +07:00
Cameron Horn 81d1da3c7b
use appropriate alias creation api (#1114) 2026-02-08 17:21:17 +07:00
Simon 382e81d727
simplify env file logic 2026-02-08 17:03:50 +07:00
Michael Wagner 25d7237a57
Add Get Password From File (#1093)
* Add Get Password From File

* Add Password From File Env Check
2026-02-08 16:46:40 +07:00
Simon fcd97f55bd
fix handle unneeded alias overwrite, additional migration edge cases 2026-02-08 16:18:22 +07:00
Simon afb3582bcf
bump TA_VERSION 2026-02-07 09:28:41 +07:00
Simon 2c09d6b28b
bump ES image 2026-02-07 09:28:05 +07:00
Simon 1171001ec3
fix empty playlist desc serializer 2026-02-06 18:01:35 +07:00
Simon 3a8cd9c4fe
add LLM policy 2026-02-06 17:40:51 +07:00
Simon 395de16974
handle scientific timestamp string parsing 2026-02-06 11:31:51 +07:00
Simon 1e06c40a2c
handle utf8 error embedding, #1113 2026-02-06 10:12:20 +07:00
Simon 61efc2dcac
fix manual import restoring artwork after archiving file 2026-02-06 09:55:11 +07:00
Simon a01c0b9458
Experimental migration skip, #build
Changed:
- Add experimental migration skip env var
- Fix nginx double chaching header
2026-02-05 19:11:40 +07:00
Simon 38f9f25fae
add experimental migration check skip env var 2026-02-05 19:05:12 +07:00
Simon 7ff95b168c
bump dependencies 2026-02-05 19:03:35 +07:00
Matthew Momjian 99568e0a74
Refactor Nginx config to remove redundant Expires headers (#1112)
Removed redundant 'add_header Expires 0;' lines and ensured 'expires 0;' is used consistently.

Co-authored-by: Simon <simobilleter@gmail.com>
2026-02-05 18:46:34 +07:00
Simon df19f44394
Fix startup migration, #build
Changed:
- Fixed startup migration for nested dict update by query
- Added pot provider plugin noop default
- Fixed timeout in json backups fetching
- Fixed date parser fload in search processing
2026-01-30 19:40:42 +07:00
Isaac Sanders 67b0bf3339
fix: Handles floats in more places (#1110) 2026-01-30 19:37:41 +07:00
Simon ff26c4c713
add a note about dev env contributions 2026-01-30 19:36:15 +07:00
Simon e667591af8
handle pot plugin noop 2026-01-30 19:25:56 +07:00
Simon 5f593ada73
fix nested update query in artwork migration 2026-01-30 17:46:05 +07:00
Simon 9badd3b073
add timeout overwrite in es get, extend in zip backups 2026-01-30 17:43:03 +07:00
Simon d7ba4bc924
update yt-dlp 2026-01-30 17:25:44 +07:00
Simon 107f124ee2
add membership socket connection status 2026-01-26 22:35:30 +07:00
Simon f337a3c89d
Fix obs merge, #build
Change:
- Fix merging default yt-dlp obs with user provided obs
2026-01-26 18:41:19 +07:00
Simon 546128fd23
fix nested dict merging for ytobs 2026-01-26 18:15:05 +07:00
Simon 0948ff231e
Error handling fixes, #build
Changed:
- Fix embedding missing description
- Fix embedding artwork in file not found
2026-01-25 18:27:34 +07:00
Simon ef44323bbe
fix embedding missing description 2026-01-25 18:27:11 +07:00
Simon c00f3888d9
fix handle embedding file not found 2026-01-25 18:26:50 +07:00
Simon 8b3db0e78f
Revamped index setup, #build
Changed:
- Changed index setup and migrations handling
- Use index aliaes on mapping update
- Detect what needs a mapping refresh
- Fix several inconsitent indexing issues and serialization
- Add PO token provider URL
- Add temporary cookie persistence
2026-01-25 14:53:19 +07:00
Simon 6adae31641
fix unittests, empty cookiefile 2026-01-25 14:45:11 +07:00