Closes GH Issue #766, partially closes#520
Prior to this release, no other subscriptions would download if a subscription before it had an error. Now, subscriptions will continue to download even if one has an error, and will be reported in the output summary.
The only required field in a config was `working_directory`. This is now optional (defaults to `.ytdl-sub-working-directory`) making it so a config is no longer required. This sets the stage to onboard noob users who will solely use prebuilt presets in a single subscription file
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
With the recent push to 'beautify subscriptions' (see https://github.com/jmbannon/ytdl-sub/releases/tag/2023.10.02), we need the ability to change subscription names from their legacy form:
```
rick_a:
preset:
- "tv_show"
overrides:
tv_show_name: "Rick A"
url: "https://www.youtube.com/channel/UCuAXFkgsw1L7xaCfnd5JJOw"
```
into:
```
tv_show:
"Rick A": "https://www.youtube.com/channel/UCuAXFkgsw1L7xaCfnd5JJOw"
```
This however has implications from ytdl-sub's legacy download archive naming. By default, we write archives to `.ytdl-sub-{subscription_name}-download-archive.json`. If we change the subscription name, the archive will not be found, causing a complete redownload. This new feature gives us the ability to migrate download archives to a new naming schema.
# Migrating to Beautified Subscriptions
## Step 0
BACK UP ALL CONFIG + SUBSCRIPTION FILES!!!!! If something goes wrong, restore your backup and try again and/or ask for help.
## Step 1
Since we know we'll be changing our `subscripion_name` to the value of `tv_show_name`, we can use that in our newly migrated download archive name by setting this within the `tv_show` preset (or whatever your 'base' preset is).
```
presets:
tv_show:
output_options:
migrated_download_archive_name: ".{tv_show_name_sanitized}-download-archive.json"
```
## Step 2
Perform a download as usual, via `ytdl-sub sub ...`. This will load the old archive, and save it into the new archive. You should see `MIGRATION DETECTED` within the logs. Ensure it completes successfully.
Perform another download invocation and ensure you see the `MIGRATION SUCCESSFUL` within the logs.
## Step 3
Now we can set:
```
presets:
tv_show:
output_options:
# rename migrated_download_archive_name to just download_archive_name
download_archive_name: ".{tv_show_name_sanitized}-download-archive.json"
overrides:
tv_show_name: "{subscription_name}"
url: "{subscription_value}"
```
Our download archives now default to our new format, and we set `tv_show_name` + `url` to use subscription values by default.
## Step 4
We can now beautify our subscription.yaml file to:
```
tv_show:
"Rick A": "https://www.youtube.com/channel/UCuAXFkgsw1L7xaCfnd5JJOw"
```
Makes setting yt-dlp's `format` field easier by giving it its own documented plugin.
Old:
```
my_format_preset:
ytdl_options:
format: "best"
```
New:
```
my_format_preset:
format: "best"
```
The old method will still work, so do not worry about updating configs ASAP. However, the option is available to save a few lines 😉
* [BUGFIX] Do not fail with thumbnail issues
* helper
* refactor
* dry-run
* regen fixture
* download arhcive txt -> json in docs, fixtures
* return if no download thumb path
* better test
* more test coverage
* fix playlist last thumbnail move to copy
* playlist working
* channel working
* working directory getting cleaned
* working dir e2e fixture
* cleanup files in any case
* clean up if pre-split returns None
* actually working
* changed plugin format. Need unit tests, documentation, update e2e to filter
* refactor plugin name, matching now working
* description work in progress, need more intricate testing
* tests looks good, regenerate output
* e2e tested, need more failure tests, no dupe variable names, add docs
* unit tests passing again
* more fail tests
* updated with name, default, better docs
* sanitized vars created
* tests updated with new class
* fix nfo tags, no tests only manual inspection
* txt
* dry-run output tested
* readability
* all tests now have files except rolling recent
* better
* almost fixed
* updated txt files w/indents
* files updated, looking good
* rolling recent dry-run test
* Print in main
* 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
* youtube.download_strategy split_video
* almost working, need to deal with track_title and other overwrites
* working test
* ci ffmpeg
* sudo -f
* fix code block
* `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