Commit graph

330 commits

Author SHA1 Message Date
Jesse Bannon
4789035821
[BACKEND] Default overrides for indent variables (#785)
For music presets, adds `track_genre_default` as an override variable (defaults to Unset)

For TV show presets, adds `tv_show_genre_default` and `tv_show_content_rating_default`, which default to 'ytdl-sub' and 'TV-14'
2023-10-25 12:37:49 -07:00
Jesse Bannon
11be119261
[BUGFIX] Do not set music_directory in prebuilt presets (#783)
New music prebuilt presets had set `music_directory`, which is bad practice since it's not visible to the user which directory it would use. This forces `music_directory` to be set either in the user's config or subscription file
2023-10-25 11:36:51 -07:00
Jesse Bannon
852347dc7e
[BUGFIX] Have __preset__ override nested preset keys (#784)
With the new preset nesting support, `__preset__` would have lower precedence which isn't ideal since it's meant to serve as a 'apply to all presets in this file'. Now the order of priority is:

`inherited presets (top-to-bottom) -> preset itself -> nested subscription presets -> __preset__ -> subscription values`
2023-10-25 11:35:52 -07:00
Jesse Bannon
d810291e7c
[BUGFIX] Write music multi-tags correctly (#782)
Music multi-tags (artists, albumartists, etc) were not writing correctly. Fix it by explicitly checking to see if the tag is multi or not in the codebase.
2023-10-25 10:37:24 -07:00
Jesse Bannon
ff857c84af
[FEATURE] Prebuilt music presets (#780)
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
2023-10-24 09:23:05 -07:00
Jesse Bannon
83ecd19c77
[FEATURE] Process all subscriptions even if one or more error (#771)
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.
2023-10-21 12:25:38 -07:00
Jesse Bannon
1cb70e4520
[DEV] Refactor entrypoint file (#765) 2023-10-18 23:33:25 -07:00
Jesse Bannon
4105c2ed40
[FEATURE] No longer require a config.yaml (#763)
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
2023-10-18 09:58:37 -07:00
Jesse Bannon
545f186c46
[FEATURE][BUGFIX] Beautiful subscriptions syntax update + fix (#758)
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
2023-10-17 16:30:50 -07:00
Jesse Bannon
309f259464
[FEATURE] Ability to migrate download archive files (#751)
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"
```
2023-10-03 16:08:14 -07:00
Jesse Bannon
ae3739cdd3
[DEV] Do not hash .info.json files in expected download summaries (#752) 2023-10-03 13:22:19 -07:00
Jesse Bannon
c255f40348
[FEATURE] Subscription nesting (#747)
Closes Feature Request: https://github.com/jmbannon/ytdl-sub/issues/743

Subscriptions support using presets as keys, and using keys to set override variables as values.
For example:

```
tv_show:
  only_recent:
    [News]:
      "Breaking News": "https://www.youtube.com/@SomeBreakingNews"

  [Tech]:
    "Two Minute Papers": "https://www.youtube.com/@TwoMinutePapers"
```
Will create two subscriptions named "Breaking News" and "Two Minute Papers", equivalent to:

```
"Breaking News":
  preset:
    - "tv_show"
    - "only_recent"

  overrides:
    subscription_indent_1: "News"
    subscription_name: "Breaking News"
    subscription_value: "https://www.youtube.com/@SomeBreakingNews"

"Two Minute Papers":
  preset:
    - "tv_show"

  overrides:
    subscription_indent_1: "Tech"
    subscription_name: "Two Minute Papers"     subscription_value: "https://www.youtube.com/@TwoMinutePapers"
```

You can provide as many parent presets in the form of keys, and subscription indents as ``[keys]``.
This can drastically simplify subscription definitions by setting things you want configurable like so in your
parent preset:

```
presets:
  tv_show_name:
    overrides:
      tv_show_name: "{subscription_name}"
      url: "{subscription_value}"
      genre: "{subscription_indent_1}"
```

NOTE!!!
Changing your subscription name from 'legacy' subscriptions will need their download archive file migrated to a new name. A future update will assist in this migration process. Either wait until then or, if you consider yourself a ytdl-sub expert, keep a backup of your subscription file before migrating.
2023-10-02 16:07:48 -07:00
Jesse Bannon
3e41e0f59e
[FEATURE] Ability to add subscription value via config (#744)
`Subscription Value` is the mechanism used to achieve one-liner subscriptions. It works by having the subscription `"Subscription Name": "value"`, and assigning `"value"` to an override variable via setting the subscription value to that override variable's name.

This feature allows you to set subscription value within the config. In the near future, ytdl-sub will strive to make subscription files simpler by hiding most of the "under-the-hood" logic within the config file.
2023-09-27 21:37:36 -07:00
Jesse Bannon
6615e1d1ac
[BACKEND] Always filter out live, post_live, and upcoming videos on download (#742)
Closes Issue: https://github.com/jmbannon/ytdl-sub/issues/729

Add a new field to the match_filter plugin: `download_match_filters`. This set of filters will be applied at the download stage (as opposed to `filters` which get applied at the metadata stage). By default, always set `"!is_live & !is_upcoming & !post_live"` as a download filter. This prevents ytdl-sub from hanging when trying to grab live and upcoming videos.

Docs on match-filters: https://ytdl-sub.readthedocs.io/en/latest/config.html#match-filters
2023-09-24 06:24:21 -07:00
Jesse Bannon
3d9c35519d
[BACKEND] More explicit error message for PermissionError (#736)
Do not print the full stack trace when a PermissionError occurs
2023-09-21 23:06:57 -07:00
Jesse Bannon
0008bf3aca
[FEATURE] More verbose error logs when using ytdl-sub commands (#717)
Add a more informative error message when the config file is missing, and when no command is supplied (i.e. sub, dl, view)
2023-09-15 12:35:34 -07:00
Jesse Bannon
a48efdc84c
[FEATURE] format plugin to set yt-dlp format easier (#714)
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 😉
2023-09-13 00:02:19 -07:00
Jesse Bannon
792da1ba86
[BACKEND] Set merge_output_format to file_convert file type (#699)
Adds a small optimization to potentially avoid an additional remux by setting yt-dlp's merge output format to the desired format in the `file_convert` plugin (https://ytdl-sub.readthedocs.io/en/latest/config.html#file-convert)
2023-09-02 11:18:04 -07:00
Jesse Bannon
da70c725fc
[FEATURE] Support best codec type in audio_extract (#700)
Adds support to the `audio_extract` plugin (https://ytdl-sub.readthedocs.io/en/latest/config.html#audio-extract) to the following to grab the best audio format available:

```
audio_extract:
  codec: "best"
```
2023-09-02 00:50:26 -07:00
Jesse Bannon
ac7b366530
[DEV] Fix split-by-chapters test (#702)
Fixing the split_by_chapters test suite. Also do not make releases for commits with [DEV] in them. If you see this, it didn't work 😅
2023-09-02 00:04:37 -07:00
Jesse Bannon
85c98f2eb8
[BACKEND] Include yaml exception in error (#678)
* [BACKEND] Include yaml exception in error

* unit test

* escape
2023-07-29 23:05:34 -07:00
Jesse Bannon
5f9b8afc4b
[BUGFIX] Do not hard-fail if the thumbnail fails to download/convert (#675)
* [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
2023-07-28 13:12:46 -07:00
Jesse Bannon
a9e6a80111
[REFACTOR] Support simple download (#671)
* [REFACTOR] Support simple `download`

* fix test

* asdfas
2023-07-26 09:00:00 -07:00
Jesse Bannon
598b1da8a4
[REFACTOR] Purge download_strategy from configs + tests (#670) 2023-07-25 20:26:04 -07:00
Jesse Bannon
d24048bb01
[REFACTOR] No more download strategy (#669)
* [REFACTOR] No more download strategy

* remove more
2023-07-25 19:51:50 -07:00
Jesse Bannon
3c0d05a383
[REFACTOR] Single download options (#668)
* [REFACTOR] Single download options

* update

* fix unit test msg
2023-07-25 14:41:33 -07:00
Jesse Bannon
77487aee86
[FEATURE] Simplify `video_tags` (#661)
* [FEATURE] Simplify ``video_tags``

* video tags old

* change for episode

* deprecation notice
2023-07-24 18:18:53 -07:00
Jesse Bannon
cc38db9c7a
[FEATURE] Simplify `music_tags` plugin (#660)
* [FEATURE] Simplify ``music_tags`` plugin

* docs

* more compatible

* check old format better

* better dict instantiate
2023-07-24 18:05:54 -07:00
Jesse Bannon
0cbd2af4d3
[FEATURE] embed_thumbnail plugin (#659)
* [REFACTOR] OptionsValidator + OptionsDictValidator

* more

* [FEATURE] Dedicated embed_thumbnail plugin

* tests

* fix test

* docs

* deprecation notices

* priority to run after file convert

* naming

* fixtures
2023-07-24 12:07:36 -07:00
Jesse Bannon
8d2999c2b2
[BACKEND] Upgrade yt-dlp version (#654)
* [BACKEND] Upgrade yt-dlp version

* downgrade pyyaml

* update mediafile

* update fixtures
2023-07-17 14:05:51 -07:00
Jesse Bannon
7a43b0a90b
[FEATURE] Add __value__ to subscription files to be able to create one-liner subs (#641)
* [FEATURE] Add __value__ to subscription files to create one-liner subs

* docs
2023-06-29 23:57:54 -07:00
Jesse Bannon
557854fc83
[FEATURE] release_date source variables (#638)
* [FEATURE] `release_date` source variables

* lint
2023-06-24 23:01:18 -07:00
Jesse Bannon
a993beff0e
[FEATURE] Ability to use overrides in regex plugin (#631)
* [FEATURE] Ability to use overrides in regex plugin

* lint

* more tests

* more docs

* docs
2023-06-17 13:02:35 -07:00
Jesse Bannon
ac5561cb2e
[FEATURE] Content rating override variable (#626)
* [FEATURE] Content rating override variable

* docs
2023-06-03 07:42:16 -07:00
Jesse Bannon
ec447cfbd7
[FEATURE] exclude field in regex plugin (#620)
* [FEATURE] `exclude` field in regex plugin

* tests

* excludes doc
2023-05-22 10:23:00 -07:00
Jesse Bannon
0497f2b749
[FEATURE] Perform match-filter on download, not metadata pull (#612)
* [FEATURE] Apply match-filter on download instead of metadata

* correct ytdl_option ordering

* lint

* test that downloads
2023-05-18 09:52:24 -07:00
Jesse Bannon
a2f1a2ba94
[FEATURE] Add subscription_name override variable by default (#599)
* [FEATURE] Add `subscription_name` override variable by default

* docs for it

* lint

* only test non-cli video test
2023-04-28 19:36:20 -07:00
Benjamin Hsieh
14c7865165
[FEATURE] channel_id source variable (#575) 2023-03-31 21:25:13 -07:00
Benjamin Hsieh
e1f2e37858
[FEATURE] creator_sanitized source variable (#574) 2023-03-31 20:47:44 -07:00
Jesse Bannon
fa6eae7423
[FEATURE] creator source variable (#572) 2023-03-31 15:37:06 -07:00
Jesse Bannon
1965bc0a40
[FEATURE] Multiple URLs supported for tv_show_by_date preset (#568)
* [BACKEND] Support empty urls for multi_url, add overrides for extra urls in tv_show_by_date preset

* need to check for missing urls in downloader

* use override in test

* docs about multi url

* wording
2023-03-30 09:28:32 -07:00
Jesse Bannon
c8de12833e
[BUGFIX] Read parent preset download strategy when partial validating (#566) 2023-03-28 20:35:07 -07:00
Jesse Bannon
4b9709aeab
[FEATURE] Configurable file_name_max_bytes (#562)
* config for max file size, need to move to defaults file

* wroking
2023-03-25 20:17:38 -07:00
Jesse Bannon
84cd611f89
[BUGFIX] File name too long with -thumb.jpg, upgrade docker alpine image (#560) 2023-03-24 11:15:54 -07:00
Jesse Bannon
7385aac1ee
[FEATURE][EXPERIMENTAL] --update-with-info-json (#557)
* [FEATURE
] Reformat existing downloads

* working?!?!

* reformat in output dir

* close, need info json enabled by default

* asdfadsfsaf

* lint

* closer

* multi created variables do not exist for update command!

* info json downloader

* [REFACTOR] Shared plugin and download options class

* more refactoring

* lint

* put in initialize plugins

* changes

* [REFACTOR] simplify enhanced download archive

* working!

* in main

* simplified, many url tests working

* ready?
2023-03-21 08:05:08 -07:00
Jesse Bannon
ecdae163f6
[FEATURE] tv_show_by_date preset to support multiple URLs (#552) 2023-03-16 20:25:10 -07:00
Jesse Bannon
7c692cda6e
[REFACTOR] BaseDownloader (#542)
* [REFACTOR] BaseDownloader

* doh

* fix mock
2023-03-14 23:42:50 -07:00
Jesse Bannon
f4807aa9a4
[BUGFIX] Do not load YAML unless dict is returned (#541) 2023-03-14 23:06:51 -07:00
Jesse Bannon
e69933d525
[REFACTOR] Split metadata and download into two separate steps (#540) 2023-03-13 22:41:09 -07:00
Jesse Bannon
1922296c31
[REFACTOR] BaseDownloader class (#539) 2023-03-13 00:42:32 -07:00
Jesse Bannon
52c1cc437d
[BACKEND] Fixed TV show name for prebuilt preset unit tests (#538) 2023-03-12 23:29:04 -07:00
Jesse Bannon
7502a76b99
[BACKEND] Enable info.json by default for TV show presets (#534) 2023-03-12 18:31:29 -07:00
Jesse Bannon
bc90348bf0
[BUGFIX] Reinitialize debug log for every test (#530) 2023-03-10 14:37:59 -08:00
Jesse Bannon
54697f6ddf
[BUGFIX] Fix flakey unit test (#529) 2023-03-10 13:21:27 -08:00
Jesse Bannon
0cd8df6e11
[BUGFIX] Fix extractor IDs in yt-dlp download archive (#528) 2023-03-10 12:48:53 -08:00
Jesse Bannon
e5949abce0
[BACKEND] partial validate test for subtitle lang variable (#527) 2023-03-10 11:54:49 -08:00
Jesse Bannon
2d2fff9a40
[FEATURE] Prebuilt presets to include title in their filename (#525) 2023-03-10 10:30:35 -08:00
Jesse Bannon
f9318b9d07
[BUGFIX] Handle truncating file names if too long (#524)
* [BUGFIX] Handle truncating file names if too long

* always import os

* test fix

* fix for windows

* lint
2023-03-10 07:20:43 -08:00
Jesse Bannon
d46829b4ab
[BUGFIX] Properly align summary numbers (#517) 2023-03-08 18:35:03 -08:00
Jesse Bannon
ce877a32f9
[BUGFIX] Fix quiet log level not showing warning logs (#516) 2023-03-08 16:30:42 -08:00
Jesse Bannon
fddf3d3088
[FEATURE] Ability to suppress or write transaction log to file (#514) 2023-03-08 13:32:07 -08:00
Jesse Bannon
fd1934b821
[BUGFIX] Create persist log directory if it does not exist (#513) 2023-03-08 10:12:52 -08:00
Jesse Bannon
648027204f
[FEATURE] Persisted subscription logs (#512) 2023-03-08 00:17:11 -08:00
Jesse Bannon
3c6fd0b4e8
[BUGFIX] Fix global options not working after sub (#500)
* [BACKEND] Error if arg after positional arg

* working

* dry-run default

* remove unused code
2023-03-03 11:07:11 -08:00
Jesse Bannon
7b7a4f8ab1
[BACKEND] Add --version arg (#499) 2023-03-02 19:32:11 -08:00
Jesse Bannon
896a9e2073
[BACKEND] Reset debug log on every subscription (#497) 2023-03-02 18:57:13 -08:00
Jesse Bannon
5d40d02eb3
[BACKEND] Make break message debug level and more clear (#496) 2023-03-02 13:01:01 -08:00
Jesse Bannon
798bbbc62c
[BACKEND] Windows support (#476) 2023-02-28 17:07:03 -08:00
Jesse Bannon
a2808fa7fe
[BACKEND] Properly sanitize recursive variables (#477)
* [BACKEND] Properly sanitize recursive variables

* lint

* update tests
2023-02-25 09:35:41 -08:00
Jesse Bannon
c39393e69a
[RELEASE] Package ytdl-sub to PyPI (#457)
* post only if > 0

* since todays date

* pypi workflow

* test token

* fix test

* long description

* simpler names

* more simple

* no test pypi in master

* publish only on master
2023-02-20 16:39:33 -08:00
Jesse Bannon
2231bd43c8
[BACKEND] Set __version__ as date, dynamically update it in make (#456)
* [BACKEND] Set python __version__ as date, dynamically update it in make

* set version dynamically

* keep empty

* git ignore __init__

* keep init

* keep

* fix unit test
2023-02-20 14:18:30 -08:00
Jesse Bannon
9b90c367a5
[DOCS] Better error message for strict override variable fields (#452)
* [DOCS] Better error message for strict override variable fields

* fix unit test
2023-02-20 10:57:40 -08:00
Jesse Bannon
4ba41c757c
[BACKEND] More verbose logging when breaking (#450)
* [BACKEND] More verbose logging when breaking

* make thumbnail id a debugger log

* mock for info log

* info
2023-02-20 10:50:04 -08:00
Jesse Bannon
73094e79bb
[FEATURE] Plex sanitized title and uid. Add into prebuilt preset (#449)
* [FEATURE] Plex sanitized title and uid. Add into prebuilt preset

* update fixtures, add fixture test

* lint
2023-02-20 10:19:44 -08:00
Jesse Bannon
f713d720e4
[DOCKER] Upgrade ffmpeg, add phantomjs (#448)
* [DOCKER] Upgrade ffmpeg, add phantomjs

* only install phantomjs for x86

* lint
2023-02-20 09:36:41 -08:00
Jesse Bannon
3106861a42
[BACKEND] Additional filtering on root parent search (#445)
* [BACKEND] Additional filtering on root parent search

* update failing test
2023-02-17 23:32:02 -08:00
Jesse Bannon
e5b5c5e638
[BACKEND] Bandcamp e2e test, update music example (#393)
* [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
2023-01-14 16:48:27 -08:00
Jesse Bannon
c828ca5978
[BUGFIX] Fix TV show collection season thumbnail path for Plex (#419) 2023-01-14 16:46:40 -08:00
Jesse Bannon
32f1398d60
[BUGFIX] Fix playlist season thumbnails not appearing (#416) 2023-01-13 14:05:56 -08:00
Jesse Bannon
30c77565bc
[BACKEND] Add playlist_uploader_sanitized var (#414) 2023-01-13 10:47:43 -08:00
Jesse Bannon
6020f27f12
[BACKEND] Better error message for music_tags recieving a video (#413)
* [BACKEND] Better error message for music_tags recieving a video

* test and better message
2023-01-13 10:25:17 -08:00
Jesse Bannon
053042b4b9
[BACKEND] Purge youtube + soundcloud download strategies (#408)
* [BACKEND] Purge youtube + soundcloud download strategies

* update unit tests

* fix missing for ffmpeg;

* try update
2023-01-11 22:05:50 -08:00
Jesse Bannon
c3d9d45c18
[BUGFIX] Invalid cross-device link workaround (#400) 2023-01-04 15:34:26 -08:00
Jesse Bannon
beaa34a367
[BUGFIX] Fix entry missing __contains__ function (#392)
* [BUGFIX] Fix missing contains function when checking entries

* remove children func

* Update failing hash
2022-12-13 00:23:16 -08:00
Jesse Bannon
e54bf7d467
[BACKEND] Add double parenthesis test for chapter extraction (#390)
* [BACKEND] Add double parenthesis test for chapter extraction

* lint
2022-12-09 07:45:51 -08:00
Jesse Bannon
c47b504cb4
[BUGFIX] Clear working directory before starting any downloads (#382)
* [BUGFIX] Clear working directory before starting any downloads

* update fixture

* fix prebuilt tests

* check if dir exists before del in fixture
2022-11-30 15:34:17 -08:00
Jesse Bannon
96e741c71d
[BACKEND] Proactively clean working directory (#379)
* 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
2022-11-30 10:36:13 -08:00
Jesse Bannon
a77885f4de
[FEATURE] Match filters plugin (#365) 2022-11-26 22:32:19 -08:00
Jesse Bannon
2f792f774c
[FEATURE] Add custom ffmpeg post-processing (#364) 2022-11-26 14:56:34 -08:00
Jesse Bannon
2edfffcc5f
[FEATURE] Include description in prebuilt TV show presets by default (#360) 2022-11-24 20:31:36 -08:00
Jesse Bannon
ead5620c5c
[FEATURE] Add mp3 id3v2.4 multi-tag support (#356)
* [FEATURE] Add mp3 id3v2.4 multi-tag support

* docs

* fix new docker issue

* update fixture
2022-11-24 00:56:23 -08:00
Jesse Bannon
5d9fe2eaae
[BUGFIX] Set multi-value music tags as a list with single value (#349)
* [BUGFIX] Set multi-value music tags as a list with single value

* update fixtures
2022-11-21 14:11:55 -08:00
Jesse Bannon
ffaf07d628
[FEATURE] Add support to scrape chapters from comments (#347)
* [FEATURE] Add support to scrape chapters from comments

* tested for comments

* remove timestamps file

* change order of docstrings
2022-11-21 11:19:17 -08:00
Jesse Bannon
70c78dc109
[FEATURE] Embed thumbnails into audio files as cover art (#345)
* [FEATURE] Embed thumbnails into audio files as cover art

* lint

* fix ytdl options
2022-11-19 23:36:15 -08:00
Jesse Bannon
20bec0c664
[BUGFIX] Fix split_by_chapter download archive not working (#344) 2022-11-19 23:08:59 -08:00
Jesse Bannon
5705a28842
[FEATURE] Add ytdl-sub view URL to view source variables (#340)
* [FEATURE] Add `ytdl-sub view URL` to view source variables

* update file path
2022-11-19 16:56:45 -08:00
Jesse Bannon
978dc36713
[BACKEND] Optimize metadata fetching (#335)
* [BACKEND] Do not fetch unnecessary metadata when grabbing .info.json files"

* update with more optimized ytdl options
2022-11-16 12:54:18 -08:00
Jesse Bannon
2128e183aa
[BACKEND] Use download strategy for soundcloud example (#316) 2022-11-12 09:59:49 -08:00
Jesse Bannon
10b58264ea
[BACKEND] Update music video example with url download strategy (#312)
* [DOCS] document file __preset__

* [REFACTOR] Use `download` type in examples

* TODO: download strategy docs, validate fixtures, fix playlist test

* playlist fixed, fixtures look good

* download strategy docs, fix tests

* better docs

* lint

* yt fixed

* split chapters fixed

* fix video

* better docs

* lint
2022-11-11 08:54:07 -08:00
Jesse Bannon
255805c871
[REFACTOR] Rename source/collection to url/multi_url (#310) 2022-11-06 17:00:26 -08:00
Jesse Bannon
da22c9a608
[REFACTOR] Rename generic download source to download (#309)
* [REFACTOR] Rename `generic` download source to `download`

* no change to download strategy
2022-11-06 16:24:06 -08:00
Jesse Bannon
032acdbb6e
[BUGFIX] Fix latest ep thumbnail showing as TV show poster (#304) 2022-10-30 22:54:46 -07:00
Jesse Bannon
44ec463ab3
[BACKEND] More strict validation for config files (#301) 2022-10-26 00:00:36 -07:00
Jesse Bannon
6125fd0efb
[FEATURE] Add subscription yaml file preset __preset__ and apply to all presets in the file (#292) 2022-10-15 23:19:54 -07:00
Jesse Bannon
8da38a806e
[FEATURE] New TV Show example config (#279) 2022-10-14 16:32:19 -07:00
Jesse Bannon
f80fa30804
[BACKEND] Update test fixtures (#284) 2022-10-14 15:58:43 -07:00
Jesse Bannon
dbe71bb1c7
[BUGFIX] Fix split_by_chapters tests, refactor ytdl option file (#278) 2022-10-08 00:20:12 -07:00
Jesse Bannon
cfc2e916aa
[BACKEND] Include genre override for tv shows (#277) 2022-10-07 22:23:07 -07:00
Jesse Bannon
9883907bf0
[BUGFIX] Use yt-dlp remuxer instead of our own (#275)
* [BUGFIX] Use yt-dlps remuxer instead of our own

* docstring
2022-10-07 17:16:54 -07:00
Jesse Bannon
5b8ee7f2de
[FEATURE] download_index source variable, new tv presets (#271) 2022-10-05 12:08:43 -07:00
Jesse Bannon
9f6b3d4647
[FEATURE] file_convert plugin (#267) 2022-10-03 15:19:24 -07:00
Jesse Bannon
713f55bb3c
[BUGFIX] Fix episode id, Kodi/Jellyfin presets to set video tags (#266) 2022-10-03 09:18:35 -07:00
Jesse Bannon
5b9a5dae50
[FEATURE] Prebuilt presets (#264) 2022-10-01 22:41:36 -07:00
Jesse Bannon
6d52177104
[BACKEND] upload_date_index source variables (#261)
* [BACKEND] `upload_date_index` source variables

* len
2022-09-30 22:41:06 -07:00
Jesse Bannon
897ea52e33
[BACKEND] Separate directory files in transaction log (#260) 2022-09-30 13:59:43 -07:00
Jesse Bannon
359731e1f3
[BACKEND] Move resources to root test folder (#259) 2022-09-30 13:01:04 -07:00
Jesse Bannon
cd9a094e2c
[BACKEND] epoch and playlist_index_reversed variables (#257) 2022-09-29 15:39:53 -07:00
Jesse Bannon
7d29b72010
[BACKEND] uid_sanitized variable (#256) 2022-09-29 00:33:57 -07:00
Jesse Bannon
4b6add06e1
[BUGFIX] Fix nested parents with multiple parents (#255) 2022-09-29 00:09:56 -07:00
Jesse Bannon
06dffdb763
[BACKEND] Have generic url be overrides string formatter (#254) 2022-09-28 15:03:02 -07:00
Jesse Bannon
427d6e30fd
Revert "[FEATURE] Merged output directory nfo support (#249)" (#253)
This reverts commit a970fb9d06.
2022-09-28 14:09:00 -07:00
Jesse Bannon
839192059b
[FEATURE] Add playlist thumbnail support (#250) 2022-09-27 23:48:18 -07:00
Jesse Bannon
a970fb9d06
[FEATURE] Merged output directory nfo support (#249) 2022-09-27 22:40:39 -07:00
Jesse Bannon
ebdd6c8aec
[BACKEND] Only have single entry type (#248) 2022-09-27 20:17:10 -07:00
Jesse Bannon
32577bbad5
[BACKEND] Expose raw playlist_index and playlist_count to all download strategies (#245) 2022-09-27 17:17:56 -07:00
Jesse Bannon
1486acb421
[BACKEND] Parallelize tests, remove track and artist source variables (#246) 2022-09-27 16:51:42 -07:00
Jesse Bannon
3d0ade1141
[BACKEND] Collection thumbnail support (#241) 2022-09-18 11:16:25 -07:00
Jesse Bannon
64d4be0a42
[BACKEND] output_directory_nfo_tags to support source vars (#239) 2022-09-17 11:11:37 -07:00
Jesse Bannon
46c14bd842
[BACKEND] uploader variables (#238) 2022-09-17 09:04:49 -07:00
Jesse Bannon
3ace86435d
[BACKEND] Defined kwarg strings. Add playlist/source description variable (#237) 2022-09-17 08:09:09 -07:00
Jesse Bannon
3894625479
[BACKEND] Remove split_video download strategy (#232) 2022-09-14 22:03:44 -07:00
Jesse Bannon
c08ea64b5a
[BACKEND] Add generic.collection download strategy, use it for soundcloud, youtube channel/playlist (#230) 2022-09-14 15:36:14 -07:00
Jesse Bannon
c33eed5a64
[BUGFIX] Fix source vars containing variable-like syntax (#231) 2022-09-14 08:36:56 -07:00
Jesse Bannon
5488501bed
[BACKEND] File lock working directory to prevent multiple instances from polluting it (#227) 2022-09-08 23:41:09 -07:00
Jesse Bannon
d0cbd57a7f
[BUGFIX] Fix preset ordering (#226) 2022-09-08 15:43:09 -07:00
Jesse Bannon
2c86d640a4
[FEATURE] Have notion of modified files. Do not include files that have not changed (#225) 2022-09-08 12:24:46 -07:00
Jesse Bannon
4b6c79caef
[FEATURE] Add webpage_url source variable (#224) 2022-09-08 09:54:57 -07:00
Jesse Bannon
f24860c729
[BUGFIX] Properly sanitize override variables after it is resolved (#223)
* [BUGFIX] Properly sanitize override variables after it is resolved

* fixtures
2022-09-08 07:47:55 -07:00
Jesse Bannon
819bddc9d0
[FEATURE] Support duplicate NFO keys (#220) 2022-09-07 14:06:13 -07:00
Jesse Bannon
6383d133dc
[BUGFIX] Retry channel image downloads, continue if it fails (#218) 2022-09-06 16:12:28 -07:00
Jesse Bannon
3e801c56eb
[BUGFIX] Fix overrides failing validation in datetime vars (#209) 2022-09-02 14:41:51 -07:00
Jesse Bannon
6d84e52467
[FEATURE] Add multiple preset inheritance (#204) 2022-09-01 10:43:07 -07:00
Jesse Bannon
5782445366
[FEATURE] Add ability for downloaders to add new override variables. Add source_title, source_uploader, and source_description for YouTube channels and playlists (#203) 2022-09-01 00:25:01 -07:00
Jesse Bannon
ca0ac787b0
[FEATURE] Ability to write .info.json files (#201) 2022-08-29 22:50:42 -07:00
Jesse Bannon
73be77c500
[FEATURE] date_range plugin, supports Override variables (#199) 2022-08-28 11:09:11 -07:00
Jesse Bannon
9ea1be4c5f
[FEATURE] NFO/XML attribute support (#198) 2022-08-28 00:56:51 -07:00
Jesse Bannon
d79e94e7e6
[BACKEND] Use native xml library, remove dicttoxml (#196) 2022-08-27 15:01:14 -07:00
Jesse Bannon
0642ddf3b7
[BACKEND] Use Ubuntu 22.04 for CI, update all expected download hashes (#197) 2022-08-27 00:56:01 -07:00
Jesse Bannon
61c5a22933
[REFACTOR] Move chapter timestamps support into chapter plugin, remove from youtube.video (#193)
Introduces breaking changes to youtube.video.chapter_timestamps. Please use chapters.embed_chapter_timestamps instead to embed timestamps into a video
2022-08-26 23:08:53 -07:00
Jesse Bannon
553862fdad
[FEATURE] Add day_of_year variables (#195) 2022-08-24 09:59:34 -07:00