github jmbannon/ytdl-sub 2023.10.17
ytdl-sub 2023.10.17

latest releases: 2024.11.06, 2024.11.05, 2024.10.31...
12 months ago

[FEATURE] Beautiful subscriptions migration support (#758)

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"

Step 5 (optional)

If your subscription uses multiple urls in the form of overrides, or has any extras besides a simple name: url mapping, you can do:

tv_show:
  "Rick A":  # regular preset syntax works under subscription name
    overrides:
       url: "https://www.youtube.com/channel/UCuAXFkgsw1L7xaCfnd5JJOw"
       url2: "https://www.youtube.com/channel/FSDFsdfasdf23fasdfsadJsal"

Or if you use the download section explicitly:

music_discography:
  "Rick A":
    download:
      - "https://www.youtube.com/channel/UCuAXFkgsw1L7xaCfnd5JJOw"
      - "https://www.youtube.com/channel/FSDFsdfasdf23fasdfsadJsal"

Don't miss a new ytdl-sub release

NewReleases is sending notifications on new releases.