Adds a new mechanism to limit subscriptions' number of videos to an explicit number (only supported date ranges prior to this).
Example usage:
```
output_options:
keep_max_files: 10
```
will only keep 10 videos at max.
In addition:
- `keep_max_files` is bundled into the `Only Recent` preset and can be used via setting the `only_recent_max_files` override variable (see examples or README for usage).
- Changed the `date_range` variable name to `only_recent_date_range` for more clarity. Usage of `date_range` will continue to work.
Extends the subscription.yaml syntax at the cost of introducing a breaking change.
# New Syntax
## Mix-n-match presets and indent variables
```
# Can mix/match presets and indent override variables.
# Uses presets TV Show, Only Recent and assigns Kids, TV-Y to subscription_indent_1 and _2
TV Show | = Kids | = TV-Y | Only Recent:
"Jake Trains": "https://..."
```
## Subscriptions with list-value support
```
TV Show | = Kids | = TV-Y | Only Recent:
"Jake Trains":
- "https://url.1..." # Assigns to subscription_value and subscription_value_1
- "https://url.2..." # Assigns to subscription_value_2
```
## Subscriptions with override-keys support
```
TV Show | = Kids | = TV-Y | Only Recent:
"~Jake Trains": # the ~ means "all keys underneath get assigned as override variables"
url: "https://url.1..." # Assigns to url
url2: "https://url.2..." # Assigns to url2
```
# Breaking Changes
In the TV show subscriptions example (https://github.com/jmbannon/ytdl-sub/blob/master/examples/tv_show_subscriptions.yaml), it had
```
TV Show Full Archive:
# Sets "Kids" for genre, "TV-Y" for content rating
= Kids | TV-Y:
"Jake Trains": "https://www.youtube.com/@JakeTrains"
"Kids Toys Play": "https://www.youtube.com/@KidsToysPlayChannel"
```
This must be changed to
```
TV Show Full Archive:
# Sets "Kids" for genre, "TV-Y" for content rating
= Kids | = TV-Y: # Each indent variable assignment must have an = before it
"Jake Trains": "https://www.youtube.com/@JakeTrains"
"Kids Toys Play": "https://www.youtube.com/@KidsToysPlayChannel"
```
Creates standardized prebuilt presets for music videos. Preset names are:
```
"Kodi Music Videos"
"Jellyfin Music Videos"
"Plex Music Videos"
```
Usage can be found in the `examples/` directory
Adds the following prebuilt presets:
```
"Single"
"SoundCloud Discography"
"YouTube Releases"
"YouTube Full Albums"
"Bandcamp"
```
which require no config.yaml to use. Usage examples can be found in the `/examples` directory
A follow-up to the prior commit which fixes some bugs in the 'beautiful subscriptions' implementation. A proper migration guide will be written in the wiki once it's ready
* [BUGFIX] Fix missing contains function when checking entries
* remove children func
* [BACKEND] Bandcamp e2e test, update music example
* WIP
* combine soundcloud and all music into music_audio config
* sc fixtures
* updated tests and examples
* bandcamp e2e test
* regen off
* remove url validators
* use bandcamp artist url for more parent coverage
* lint
* Updated docker to use buildx Buildkit
* Updated github actions to include QEMU/buildx to build multiarch containers
* Removed packages after build is done
* Updated documentation to set the correct default thumbnail file name
* Parallel jobs (#1)
Implemented parallel docker builds on Github Actions
* Updated default config file in Docker container
* Replaced Pillow with ffmpeg for thumbnail converting (and updated documentation to change the default thumbnail to -thumb.jpg) (#2)
* Swapped Pillow for ffmpeg for thumbnail conversion
* Further changed default thumbname to include "-thumb" (Kodi needs this to pick up the thumbnail image)
* Added ffmpeg bitexact for reproducability
* Removed extra packages needed for Pillow
* Updated ref check (#3)
* Fixed formatting on if statement for deploy job
Co-authored-by: Maka0 <bas@oddens.net>
* dry-run huge refactor
* small fixes, all tests passing
* file handler, transaction log, metadata
* dry-run actually dry running
* working tests, still have more
* Everything passing besides channel
* fix youtube channel thumbnail issue, need to fix fixtures on test
* lint 10, channel tests passing. Need dry-run for split and merge video
* all tests passing, lint 10, should test dry-run arg
* begin
* chapters class, trying to add chapter splitting and general ffmpeg metadata creation
* working split video
* so very close
* test passing, is reproducible
* lint fixed
* fix docs
* track no longer used in example
* if, then del
* multiple values
* github hash
* `ytdl_options` defaults for each download strategy
* fix docker, fix defaults getting added, add debugger test
* test playlist as well
* fix with hack
* fix full channel test
* existing
* youtube video url
* WIP, channel /user/ and /c/ should be valid
* unit tests passing
* soundcloud artist url
* soundcloud username
* break configs with name change
* Update all yamls with urls
* update all docs
* more negative url tests