Commit graph

240 commits

Author SHA1 Message Date
Daniel Da Cunha
dcee984567 Add YouTube API key testing in settings
Allow users to test their YouTube API key directly from the settings page
by clicking a button. Uses a LiveView component that provides visual
feedback on whether the key is valid.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 21:29:16 +08:00
Felix Jancso-Szabo
67d8bd5598
Fix spelling of 'Unaffected' in help texts (#838)
Some checks failed
Docker Release / build_and_push_docker (push) Has been cancelled
Perform linting and run tests / Build, Lint, and Test (push) Has been cancelled
Noticed this while setting up pinchflat, figured I'd submit a fix.
2025-12-16 09:30:00 -08:00
Daniel Da Cunha
6cb715c1d0
Move Active Tasks to tab in Media History section (#836)
Consolidate the home page UI by moving Active Tasks from a separate
section into a third tab alongside Downloaded and Pending tabs.

Co-authored-by: Daniel <ddacunha@MacBook-Pro-14.local>
2025-12-16 09:29:32 -08:00
Edward Horsey
d38c26f6fd
Enable overflow scroll for tables inside tabs (#822) 2025-12-16 09:28:51 -08:00
Kieran
68da8bc522
[Housekeeping] Dependency updates 6-Jun-2025 (#733)
* Bumped Elixir

* Silenced mix check warnings

* Updated all deps with minor version upgrades

* Updated more deps; Refactored text components to work with phoenix_html updates
2025-06-06 13:44:14 -07:00
Kieran
1cee7a19ee
Made source sorting case-insensitive (#708) 2025-04-28 11:43:51 -07:00
Kieran
a55f17ac5f
Update the link (#697) 2025-04-10 09:39:37 -07:00
Kieran
7f56c0c802
Better copy (#696) 2025-04-10 09:20:56 -07:00
Kieran
030f5fbdfe
[Enhancement] Add setting to restrict filenames to ASCII characters (#660)
* Added a new column for restricting filenames

* Adds restrict-filenames to command runner

* Added UI to settings form
2025-03-17 14:58:25 -07:00
Kieran
ee2db3e9b7
Stopped logging healthcheck requests (#659) 2025-03-17 14:48:07 -07:00
Kieran
4554648ba7
[Enhancement] Add download rate limiting to app settings (#646)
* Added rate limit column to settings

* Added limit_rate option to command runner

* Added rate limit to settings form
2025-03-11 15:45:56 -07:00
Kieran
a97bb248e2
[Enhancement] Retry a download using cookies if doing so might help (#641)
* Sources that use cookies when_needed now retry downloads if we think it'd help

* tweaked error message we're checking on to match media_download_worker
2025-03-05 16:41:07 -08:00
Kieran
ac895944a8
[Enhancement] Add option for a source to only use cookies when needed (#640)
* Updated model with new attribute

* Update app logic to use new cookie logic

* lots of tests

* Updated UI and renamed attribute

* Updated tests
2025-03-05 15:32:15 -08:00
Kieran
b62eb2bc6b
[Bugfix] Improve YouTube shorts detection for new YouTube pants (#618)
* Update youtube shorts detection to support youtube pants

* Updates a test
2025-02-20 15:49:09 -08:00
Kieran
e7adc9d68f
[Enhancement] Record and display errors related to downloading (#610)
* Added last_error to media item table

* Error messages are now persisted to the last_error field

* Minor layout updates

* Added help tooltip to source content view

* Added error information to homepage tables

* Remove unneeded index

* Added docs to tooltip component
2025-02-12 10:17:24 -08:00
Kieran
fe5c00dbef
[Enhancement] Download failures due to videos being members-only are not immediately retried (#609) 2025-02-10 12:13:37 -08:00
rebel onion
28f0d8ca6e
[Enhancement] Support Multiple YouTube API Keys (#606)
* feat: multiple YouTube API keys

* fix: requested changes
2025-02-10 11:30:28 -08:00
Kieran
6ead29182d
[Enhancement] Auto-update yt-dlp (#589)
* Added a command for updating yt-dlp

* Added a yt-dlp update worker to run daily

* Added a new file that runs post-boot when the app is ready to serve requests; put yt-dlp updater in there

* Updated config to expose the current env globally; updated startup tasks to not run in test env

* Removes unneeded test code
2025-01-27 11:33:38 -08:00
Kieran
62214b80a6
[Enhancement] Run fast indexing on source creation and at higher priority (#583)
* Updated default job priorities for downloading queue

* Added the ability to set priority to various downloading helpers

* Sets sources to fast index on creation
2025-01-22 14:54:15 -08:00
Kieran
3dd20141e0
Ensured first indexing pass runs if a source has never been indexed before (#581) 2025-01-21 11:55:27 -08:00
Kieran
63bb4d2327
Added pending check before downloading media (#571) 2025-01-15 11:35:59 -08:00
Kieran
80406c9e0e
Change a GT to a GTE (#570) 2025-01-15 10:54:45 -08:00
Kieran
d8d7353228
[Enhancement] Add Discord link (#565)
* Add a discord link in sidebar

* Added discord link to README
2025-01-14 13:12:43 -08:00
Kieran
ca90da49f5
Add simple icons (#564) 2025-01-14 12:53:35 -08:00
Kieran
e9f6b45953
[Enhancement] Add rate limiting to yt-dlp requests; prevent saving Media Items when throttled by YouTube (#559)
* Added sleep interval to settings

* Added new sleep setting to yt-dlp runner and added tests

* Added setting for form; updated setting name

* Updated form label

* Prevented saving/updating of media items if being throttled by youtube

* Added the bot message to the list of non-retryable errors

* Fixed typo
2025-01-14 11:38:40 -08:00
Kieran
fb27988963
[Enhancement] Add Prometheus support (#556)
* Added prometheus to deps list

* WIP - screwing around with Prometheus and grafana

* Added basic prometheus config

* Updated docs in prom_ex module

* Updated README
2025-01-09 12:38:17 -08:00
Kieran
e4c186eacb
Added IDs as an option for output templates (#543) 2025-01-03 10:50:43 -08:00
Kieran
e150355874
Added the ability to mark chapters via sponsorblock (#542) 2025-01-03 09:53:38 -08:00
Kieran
9185f075ca
[Enhancement] Overhaul indexing to be more efficient (#540)
* WIP - created methods for breaking on existing media

* WIP - got everything hooked up for POC

* Add some docs, tests

* Refactors

* Updated TODO
2025-01-02 15:48:18 -08:00
Kieran Eglin
09d1653f4b
Removed testing route from router 2024-12-30 17:44:45 -08:00
Kieran
f51b219860
[Bugfix] Improve OPML route security (#535)
* WIP - moved plugs; set up a new token-protected route plug

* Added a route_token column to settings model

* Hooked up token_protected_route plug to database

* Hooked up new OPML route to UI; turned RSS and OPML feed buttons into links

* Docs, tests

* Added a note about the phoenix bug
2024-12-30 17:40:23 -08:00
Robert Kleinschuster
c9bd1ea7bd
Added OPML Endpoint for podcast rss feeds (#512)
* Added OPML Endpoint for podcast rss feeds

* changed opml route and added controller test for opml endpoint

* add copy opml feed button

* add copy opml feed button - correct url

* fix html indenting

* add indentation to opml

Co-authored-by: Kieran <kieran.eglin@gmail.com>

* use convention for unused controller params

Co-authored-by: Kieran <kieran.eglin@gmail.com>

* add test for opml_sources helper function

* change opml endpoint to be more inline with the other routes

---------

Co-authored-by: robs <git@robs.social>
Co-authored-by: Kieran <kieran.eglin@gmail.com>
2024-12-20 11:47:03 -08:00
Kieran
a2a70fcce2
[Bugfix] Respect cookies preference when performing download pre-check (#517)
* Updated get_downloadable_status to pass yt cookies

* Updated tests
2024-12-17 11:18:47 -08:00
Kieran
023f449dbe
[Housekeeping] Pass the current action when calling the yt-dlp runner (#514)
* Updated yt-dlp runner to take an action type

* Added actions to all callers of the yt-dlp runner

* [SQUASH] updated test files to use new mocking strategy

* Removed unneeded alias
2024-12-13 12:29:05 -08:00
Robert Kleinschuster
e9d365ee9e
use css truncate everywhere and remove StringUtils.truncate function (#513)
Co-authored-by: robs <git@robs.social>
2024-12-13 12:23:12 -08:00
Kieran
53e106dac2
[Enhancement] Add sorting, pagination, and new attributes to sources index table (#510)
* WIP - started improving handling of sorting for sources index table

* WIP - Added UI to table to indicate sort column and direction

* Refactored toggle liveview into a livecomponent

* Added sorting for all table attrs

* Added pagination to the sources table

* Added tests for updated liveviews and live components

* Add tests for new helper methods

* Added fancy new CSS to my sources table

* Added size to sources table

* Adds relative div to ensure that sorting arrow doesn't run away

* Fixed da tests
2024-12-13 09:49:00 -08:00
Robert Kleinschuster
e56f39a158
Separate tabs for pending and downloaded in media history (#508)
* Separate tabs for pending and downloaded in media history
 - closes #504

* correct query for pending state and remove unecessary assign

* correct pending where

---------

Co-authored-by: robs <git@robs.social>
2024-12-13 08:58:42 -08:00
Robert Kleinschuster
01c9afa1c3
truncate table columns via css (#507)
- closes #506

Co-authored-by: robs <git@robs.social>
2024-12-13 08:57:32 -08:00
Kieran
f8e7b2e42d
Added support for 1440p (#498) 2024-12-06 11:13:22 -08:00
Kieran
a5b65061f0
[Housekeeping] Bump Phoenix LiveView to 1.0.0 (#495)
* bumped liveview to 1.0.0

* Converted interpolation to new syntax
2024-12-06 10:37:15 -08:00
Kieran
0fb971dd0a
Added presets to cutoff date selector (#494) 2024-12-04 12:32:47 -08:00
Kieran
652fcccb4a
[Enhancement] Add audio track language selection to Media Profile (#487)
* Moved quality options to their own module

* Added language and format selection to quality option builder

* [WIP] migrating tests

* Added audio_lang to media_profile table

* Renamed column; added format options and tests

* Adds UI for audio_track to the media profile form

* Adds a version string to in-app streams to help with cache busting
2024-11-27 10:39:29 -08:00
Kieran
bfb27427ce
[Bugfix] Ensure livestreams aren't downloaded until they're finished processing (#485)
* Added logic to ignore downloads that aren't in the right live state

* Added tests for get_downloadable_status method

* Added tests for media downloader module

* Added tests to download worker modeule
2024-11-26 11:56:33 -08:00
Kieran
d9c48370df
[Enhancement] Adds ability to enable/disable sources (#481)
* [Unrelated] updated module name for existing liveview module

* Updated toggle component and moved MP index table to a liveview

* [WIP] reverted MP index table; added source count to MP index

* Moved new live table to sources index

* Added 'enabled' boolean to sources

* Got 'enabled' logic working re: downloading pending media

* Updated sources context to do the right thing when a source is updated

* Docs and tests

* Updated slow indexing to maintain its old schedule if re-enabled

* Hooked up the enabled toggle to the sources page

* [Unrelated] added direct links to various tabs on the sources table

* More tests

* Removed unneeded guard in

* Removed outdated comment
2024-11-21 14:38:37 -08:00
Duong Nguyen
4c8c0461be
[Enhancement] Add option to use existing Media Profile as template for new profile (#466)
* Add option to use existing Media Profile as template for new profile

* Forgot to commit the edit form too

* Reset deletion mark on Source controller

* Add test for new preload profile feature

* mix check
2024-11-20 10:25:53 -08:00
Kieran
a02f71f304
[Enhancement] Add support for yt-dlp plugins + add lifecycle script event for app boot (#465)
* Added new script type to pre-job startup tasks

* Updated Dockerfile to create the needful directories

* added tests
2024-11-08 15:38:00 -08:00
Kieran
83c10b2b00
[Enhancement] Track the predicted final filepath for indexed media items (#461)
* Added ability to pass additional yt-dlp options to indexing step

* Added predicted_filename to media struct

* WIP added ability to predict filepath to source indexing

* renamed predicted_filepath

* Added the ability to predict filepath when fast indexing

* Add predicted_media_filepath to media items table

* Addressed TODOs
2024-11-08 09:42:59 -08:00
Kieran
a5afcf168b
Went back to using original_url over webpage_url to improve short detection (#447) 2024-10-30 14:09:28 -07:00
Kieran Eglin
3c10d78e78
Updated timezone logic to prevent boot crash 2024-10-30 10:14:04 -07:00
Kieran
8c0df65c0c
Took the easy way out and removed playlist index explicitly from the update method (#442) 2024-10-28 10:26:31 -07:00