static nfo tags
This commit is contained in:
parent
0e901cab96
commit
ccc57dcc16
4 changed files with 57 additions and 73 deletions
|
|
@ -784,11 +784,48 @@ sanitization on the value when used.
|
||||||
|
|
||||||
----------------------------------------------------------------------------------------------------
|
----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
season_nfo_tags
|
split_by_chapters
|
||||||
|
-----------------
|
||||||
|
Splits a file by chapters into multiple files. Each file becomes its own entry with the
|
||||||
|
new variables
|
||||||
|
|
||||||
|
- ``chapter_title``
|
||||||
|
- ``chapter_index``
|
||||||
|
- ``chapter_index_padded``
|
||||||
|
- ``chapter_count``
|
||||||
|
|
||||||
|
Note that when using this plugin and performing dry-run, it assumes embedded chapters are being
|
||||||
|
used with no modifications.
|
||||||
|
|
||||||
|
:Usage:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
split_by_chapters:
|
||||||
|
when_no_chapters: "pass"
|
||||||
|
|
||||||
|
``when_no_chapters``
|
||||||
|
|
||||||
|
:expected type: String
|
||||||
|
:description:
|
||||||
|
Behavior to perform when no chapters are present. Supports
|
||||||
|
|
||||||
|
- "pass" (continue processing),
|
||||||
|
- "drop" (exclude it from output)
|
||||||
|
- "error" (stop processing for everything).
|
||||||
|
|
||||||
|
If a file has no chapters and is set to "pass", then ``chapter_title`` is
|
||||||
|
set to the entry's title and ``chapter_index``, ``chapter_count`` are both set to 1.
|
||||||
|
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
static_nfo_tags
|
||||||
---------------
|
---------------
|
||||||
Adds a single NFO file in the season directory. An NFO file is simply an XML file with a
|
Adds an NFO file for every entry, but does not link it to an entry in the download archive.
|
||||||
``.nfo`` extension. It uses the last entry's source variables which can change per download
|
This is intended to produce ``season.nfo``s in each season directory. Each entry within a
|
||||||
invocation. Be cautious of which variables you use.
|
season will overwrite this file with its season name. If the entry gets deleted from ytdl-sub,
|
||||||
|
this file will remain since it's not linked.
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
|
|
||||||
|
|
@ -796,7 +833,7 @@ Usage:
|
||||||
|
|
||||||
presets:
|
presets:
|
||||||
my_example_preset:
|
my_example_preset:
|
||||||
season_nfo_tags:
|
static_nfo_tags:
|
||||||
# required
|
# required
|
||||||
nfo_name: "season.nfo"
|
nfo_name: "season.nfo"
|
||||||
nfo_root: "season"
|
nfo_root: "season"
|
||||||
|
|
@ -816,7 +853,7 @@ Usage:
|
||||||
|
|
||||||
``kodi_safe``
|
``kodi_safe``
|
||||||
|
|
||||||
:expected type: Optional[Boolean]
|
:expected type: OverridesBooleanFormatterValidator
|
||||||
:description:
|
:description:
|
||||||
Defaults to False. Kodi does not support > 3-byte unicode characters, which include
|
Defaults to False. Kodi does not support > 3-byte unicode characters, which include
|
||||||
emojis and some foreign language characters. Setting this to True will replace those
|
emojis and some foreign language characters. Setting this to True will replace those
|
||||||
|
|
@ -857,42 +894,6 @@ Usage:
|
||||||
</season>
|
</season>
|
||||||
|
|
||||||
|
|
||||||
----------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
split_by_chapters
|
|
||||||
-----------------
|
|
||||||
Splits a file by chapters into multiple files. Each file becomes its own entry with the
|
|
||||||
new variables
|
|
||||||
|
|
||||||
- ``chapter_title``
|
|
||||||
- ``chapter_index``
|
|
||||||
- ``chapter_index_padded``
|
|
||||||
- ``chapter_count``
|
|
||||||
|
|
||||||
Note that when using this plugin and performing dry-run, it assumes embedded chapters are being
|
|
||||||
used with no modifications.
|
|
||||||
|
|
||||||
:Usage:
|
|
||||||
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
split_by_chapters:
|
|
||||||
when_no_chapters: "pass"
|
|
||||||
|
|
||||||
``when_no_chapters``
|
|
||||||
|
|
||||||
:expected type: String
|
|
||||||
:description:
|
|
||||||
Behavior to perform when no chapters are present. Supports
|
|
||||||
|
|
||||||
- "pass" (continue processing),
|
|
||||||
- "drop" (exclude it from output)
|
|
||||||
- "error" (stop processing for everything).
|
|
||||||
|
|
||||||
If a file has no chapters and is set to "pass", then ``chapter_title`` is
|
|
||||||
set to the entry's title and ``chapter_index``, ``chapter_count`` are both set to 1.
|
|
||||||
|
|
||||||
|
|
||||||
----------------------------------------------------------------------------------------------------
|
----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
subtitles
|
subtitles
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ from ytdl_sub.plugins.match_filters import MatchFiltersPlugin
|
||||||
from ytdl_sub.plugins.music_tags import MusicTagsPlugin
|
from ytdl_sub.plugins.music_tags import MusicTagsPlugin
|
||||||
from ytdl_sub.plugins.nfo_tags import NfoTagsPlugin
|
from ytdl_sub.plugins.nfo_tags import NfoTagsPlugin
|
||||||
from ytdl_sub.plugins.output_directory_nfo_tags import OutputDirectoryNfoTagsPlugin
|
from ytdl_sub.plugins.output_directory_nfo_tags import OutputDirectoryNfoTagsPlugin
|
||||||
from ytdl_sub.plugins.season_nfo_tags import SeasonNfoTagsPlugin
|
from ytdl_sub.plugins.static_nfo_tags import StaticNfoTagsPlugin
|
||||||
from ytdl_sub.plugins.split_by_chapters import SplitByChaptersPlugin
|
from ytdl_sub.plugins.split_by_chapters import SplitByChaptersPlugin
|
||||||
from ytdl_sub.plugins.subtitles import SubtitlesPlugin
|
from ytdl_sub.plugins.subtitles import SubtitlesPlugin
|
||||||
from ytdl_sub.plugins.throttle_protection import ThrottleProtectionPlugin
|
from ytdl_sub.plugins.throttle_protection import ThrottleProtectionPlugin
|
||||||
|
|
@ -47,7 +47,7 @@ class PluginMapping:
|
||||||
"video_tags": VideoTagsPlugin,
|
"video_tags": VideoTagsPlugin,
|
||||||
"nfo_tags": NfoTagsPlugin,
|
"nfo_tags": NfoTagsPlugin,
|
||||||
"output_directory_nfo_tags": OutputDirectoryNfoTagsPlugin,
|
"output_directory_nfo_tags": OutputDirectoryNfoTagsPlugin,
|
||||||
"season_nfo_tags": SeasonNfoTagsPlugin,
|
"static_nfo_tags": StaticNfoTagsPlugin,
|
||||||
"subtitles": SubtitlesPlugin,
|
"subtitles": SubtitlesPlugin,
|
||||||
"chapters": ChaptersPlugin,
|
"chapters": ChaptersPlugin,
|
||||||
"split_by_chapters": SplitByChaptersPlugin,
|
"split_by_chapters": SplitByChaptersPlugin,
|
||||||
|
|
@ -85,7 +85,7 @@ class PluginMapping:
|
||||||
MusicTagsPlugin,
|
MusicTagsPlugin,
|
||||||
VideoTagsPlugin,
|
VideoTagsPlugin,
|
||||||
NfoTagsPlugin,
|
NfoTagsPlugin,
|
||||||
SeasonNfoTagsPlugin,
|
StaticNfoTagsPlugin,
|
||||||
EmbedThumbnailPlugin,
|
EmbedThumbnailPlugin,
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,12 @@ from ytdl_sub.validators.string_formatter_validators import StringFormatterValid
|
||||||
from ytdl_sub.ytdl_additions.enhanced_download_archive import EnhancedDownloadArchive
|
from ytdl_sub.ytdl_additions.enhanced_download_archive import EnhancedDownloadArchive
|
||||||
|
|
||||||
|
|
||||||
class SeasonNfoTagsOptions(SharedNfoTagsOptions):
|
class StaticNfoTagsOptions(SharedNfoTagsOptions):
|
||||||
"""
|
"""
|
||||||
Adds a single NFO file in the season directory. An NFO file is simply an XML file with a
|
Adds an NFO file for every entry, but does not link it to an entry in the download archive.
|
||||||
``.nfo`` extension. It uses the last entry's source variables which can change per download
|
This is intended to produce ``season.nfo``s in each season directory. Each entry within a
|
||||||
invocation. Be cautious of which variables you use.
|
season will overwrite this file with its season name. If the entry gets deleted from ytdl-sub,
|
||||||
|
this file will remain since it's not linked.
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
|
|
||||||
|
|
@ -19,7 +20,7 @@ class SeasonNfoTagsOptions(SharedNfoTagsOptions):
|
||||||
|
|
||||||
presets:
|
presets:
|
||||||
my_example_preset:
|
my_example_preset:
|
||||||
season_nfo_tags:
|
static_nfo_tags:
|
||||||
# required
|
# required
|
||||||
nfo_name: "season.nfo"
|
nfo_name: "season.nfo"
|
||||||
nfo_root: "season"
|
nfo_root: "season"
|
||||||
|
|
@ -29,10 +30,6 @@ class SeasonNfoTagsOptions(SharedNfoTagsOptions):
|
||||||
kodi_safe: False
|
kodi_safe: False
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# Hack to make it so collection named seasons do not error
|
|
||||||
# when adding output_directory_nfo info for plex
|
|
||||||
_required_keys = set()
|
|
||||||
_optional_keys = {"enable", "kodi_safe", "nfo_name", "nfo_root", "tags"}
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def nfo_root(self) -> StringFormatterValidator:
|
def nfo_root(self) -> StringFormatterValidator:
|
||||||
|
|
@ -66,25 +63,11 @@ class SeasonNfoTagsOptions(SharedNfoTagsOptions):
|
||||||
return self._tags
|
return self._tags
|
||||||
|
|
||||||
|
|
||||||
class SeasonNfoTagsPlugin(SharedNfoTagsPlugin):
|
class StaticNfoTagsPlugin(SharedNfoTagsPlugin):
|
||||||
plugin_options_type = SeasonNfoTagsOptions
|
plugin_options_type = StaticNfoTagsOptions
|
||||||
|
|
||||||
def __init__(
|
|
||||||
self,
|
|
||||||
options: SeasonNfoTagsOptions,
|
|
||||||
overrides: Overrides,
|
|
||||||
enhanced_download_archive: EnhancedDownloadArchive,
|
|
||||||
):
|
|
||||||
super().__init__(options, overrides, enhanced_download_archive)
|
|
||||||
self._created_output_nfo = False
|
|
||||||
|
|
||||||
def post_process_entry(self, entry: Entry) -> None:
|
def post_process_entry(self, entry: Entry) -> None:
|
||||||
"""
|
"""
|
||||||
Creates an season NFO file using values defined by the season collection name
|
Creates the NFO from each entry, but does not link/save it to the entry.
|
||||||
"""
|
"""
|
||||||
if (
|
self._create_nfo(entry=entry, save_to_entry=False)
|
||||||
self.plugin_options.nfo_name is not None
|
|
||||||
and self.plugin_options.nfo_root is not None
|
|
||||||
):
|
|
||||||
self._create_nfo(entry=entry, save_to_entry=False)
|
|
||||||
self._created_output_nfo = True
|
|
||||||
|
|
@ -23,7 +23,7 @@ presets:
|
||||||
|
|
||||||
# Emby cannot read seasons from tv_show.nfo
|
# Emby cannot read seasons from tv_show.nfo
|
||||||
# Create explicit season NFOs in each season dir
|
# Create explicit season NFOs in each season dir
|
||||||
season_nfo_tags:
|
static_nfo_tags:
|
||||||
nfo_name: "{season_directory_name_sanitized}/season.nfo"
|
nfo_name: "{season_directory_name_sanitized}/season.nfo"
|
||||||
nfo_root: "season"
|
nfo_root: "season"
|
||||||
tags:
|
tags:
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue