Commit graph

35 commits

Author SHA1 Message Date
Jesse Bannon
017db953bf
[FEATURE] Automatically handle playlists ordered in reverse (#948)
Playlists have always been a pain-point with ytdl-sub. If an author adds new videos to the end of a playlist, as opposed to the front, it breaks ytdl-sub's intuition of incremental scraping by breaking on the first (oldest) video. This update now makes it possible to handle this in the prebuilt TV Show presets:
- Add each URL variable (`url`, `url2`, ...) into the `download` portion of the subscription twice
- First definition is what we all know and use, simply scrapes first-to-last, then downloads last-to-first
- Second definition does the following:
  - Check to see if a URL is a YouTube playlist URL, if so...
    - Set the field to download, but with modifications to scrape last-to-first, then download first-to-last
  - Otherwise...
    - Set the field to an empty string, which means ytdl-sub will skip it
2024-04-01 04:24:41 -07:00
Jesse Bannon
735da8b647
[BUGFIX] Actually fix subscription_name with periods in it (#861)
Prior PR did not actually work - this actually fixes the bug (https://github.com/jmbannon/ytdl-sub/issues/844) where subscription names would drop periods from them, i.e. Mr. Beast would have the name  Beast.

POTENTIAL BREAKING CHANGE
If you have a subscription with a period in its name prior to this fix, this change will make it so your download archive is not found since it uses the subscription name in the download archive file path. To fix, simply change the download archive JSON's name to have the actual subscription name, and not the dropped-period one.
2023-12-29 15:41:33 -08:00
Jesse Bannon
e92b1cd12a
[BACKEND][HUGE] Function Support in variable syntax (#838)
A complete gutting of the internals of ytdl-sub to support functions in our variable syntax, in addition to being able to access a yt-dlp entry's .info.json fields using functions. Functionally, ytdl-sub should still look and behave the same from a user-perspective.

With so many lines of code changed (+8927, -2708), no doubt there will be new issues. Please make a GH issue or reach out on Discord if your config/subscriptions break in any way/shape/form.

Details on how to use function support will come soon in the form of proper documentation in our readthedocs.
2023-12-18 16:08:15 -08:00
Jesse Bannon
f1a2187a17
[FEATURE] Add throttle_protection plugin (#799)
Provides options to make ytdl-sub look more 'human-like' to protect from throttling. For range-based values, a random number will be chosen within the range to avoid sleeps looking scripted.

Usage:
```
    throttle_protection:
      sleep_per_download_s:
        min: 2.2
        max: 10.8
      sleep_per_subscription_s:
        min: 9.0
        max: 14.1
      max_downloads_per_subscription:
        min: 10
        max: 36
      subscription_download_probability: 1.0
```
2023-11-05 08:23:12 -08: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
1236af270d
[REFACTOR] SourcePlugin (#666)
* [REFACTOR] SourcePlugin

* param name
2023-07-25 12:37:56 -07:00
Jesse Bannon
e3c662bc35
[REFACTOR] Shared plugin code (#664)
* [REFACTOR] Shared plugin code

* arg names

* all plugins have priority

* split abstract method

* lint

* lint
2023-07-25 12:11:50 -07:00
Jesse Bannon
dcd636192c
[REFACTOR] download abstraction overhaul (#663)
* [REFACTOR] `download` abstraction overhaul

* remove plugin options
2023-07-25 00:36:51 -07:00
Jesse Bannon
7e997f304d
[REFACTOR] OptionsValidator + OptionsDictValidator (#657)
* [REFACTOR] OptionsValidator + OptionsDictValidator

* more
2023-07-24 10:12:38 -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
14ddd750d9
[REFACTOR] Shared OptionsValidator, downloader plugins (#550) 2023-03-15 23:06:55 -07:00
Jesse Bannon
7c692cda6e
[REFACTOR] BaseDownloader (#542)
* [REFACTOR] BaseDownloader

* doh

* fix mock
2023-03-14 23:42:50 -07:00
Jesse Bannon
1922296c31
[REFACTOR] BaseDownloader class (#539) 2023-03-13 00:42:32 -07:00
Jesse Bannon
efb8ed5666
[DOCS] Warn if using deprecated download strategy (#321) 2022-11-13 14:08:34 -08:00
Jesse Bannon
44ec463ab3
[BACKEND] More strict validation for config files (#301) 2022-10-26 00:00:36 -07:00
Jesse Bannon
fcdcb509c4
[BACKEND] Move more logic into subscription (#283) 2022-10-14 16:53:53 -07:00
Jesse Bannon
5b9a5dae50
[FEATURE] Prebuilt presets (#264) 2022-10-01 22:41:36 -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
ebdd6c8aec
[BACKEND] Only have single entry type (#248) 2022-09-27 20:17:10 -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
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
d0cbd57a7f
[BUGFIX] Fix preset ordering (#226) 2022-09-08 15:43:09 -07:00
Jesse Bannon
819bddc9d0
[FEATURE] Support duplicate NFO keys (#220) 2022-09-07 14:06:13 -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
790c65859a
[FEATURE] Add split_by_chapters plugin (#184) 2022-08-18 23:24:03 -07:00
Jesse Bannon
1f09398ad5
[FEATURE] Subtitles support via Subtitles plugin (#169) 2022-08-12 09:58:08 -07:00
Jesse Bannon
53adbbcb22
[FEATURE] Regex capture and filtering on source variables plugin (#100)
* 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
2022-07-16 23:39:46 -07:00
Jesse Bannon
4447f456d5
Validate all preset StringFormatValidators on init (#79)
* fast fail

* update error msg in test
2022-06-28 09:34:30 -07:00
Jesse Bannon
a80a834924
Umask support, fix overrides formatter variable error message (#46)
* umask support, fix error message

* fix error location

* make pylint disable area smaller, remove int
2022-05-28 00:28:54 -07:00
Jesse Bannon
ec1cc534ea
Yaml error handling (#45) 2022-05-27 22:14:50 -07:00
Jesse Bannon
d17f677db3
Add inheritance for presets (#24) 2022-05-15 16:31:34 -07:00
jbannon
1326fbf07f linter 2022-04-29 05:09:19 +00:00
jbannon
2db2c88441 setup cfg 2022-04-26 07:19:53 +00:00
Renamed from ytdl_subscribe/config/preset.py (Browse further)