[FEATURE] Perform regex at both metadata and post-download (#611)
* [FEATURE] Perform regex at both metadata and post-download * sadf
This commit is contained in:
parent
a2f1a2ba94
commit
38e64a5bd5
2 changed files with 41 additions and 1 deletions
|
|
@ -46,6 +46,7 @@ UPLOAD_DATE_INDEX = _("upload_date_index", backend=True)
|
||||||
REQUESTED_SUBTITLES = _("requested_subtitles", backend=True)
|
REQUESTED_SUBTITLES = _("requested_subtitles", backend=True)
|
||||||
CHAPTERS = _("chapters", backend=True)
|
CHAPTERS = _("chapters", backend=True)
|
||||||
YTDL_SUB_CUSTOM_CHAPTERS = _("ytdl_sub_custom_chapters", backend=True)
|
YTDL_SUB_CUSTOM_CHAPTERS = _("ytdl_sub_custom_chapters", backend=True)
|
||||||
|
YTDL_SUB_REGEX_SOURCE_VARS = _("ytdl_sub_regex_source_vars", backend=True)
|
||||||
SPONSORBLOCK_CHAPTERS = _("sponsorblock_chapters", backend=True)
|
SPONSORBLOCK_CHAPTERS = _("sponsorblock_chapters", backend=True)
|
||||||
SPLIT_BY_CHAPTERS_PARENT_ENTRY = _("split_by_chapters_parent_entry", backend=True)
|
SPLIT_BY_CHAPTERS_PARENT_ENTRY = _("split_by_chapters_parent_entry", backend=True)
|
||||||
COMMENTS = _("comments", backend=True)
|
COMMENTS = _("comments", backend=True)
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ from typing import Optional
|
||||||
from yt_dlp.utils import sanitize_filename
|
from yt_dlp.utils import sanitize_filename
|
||||||
|
|
||||||
from ytdl_sub.entries.entry import Entry
|
from ytdl_sub.entries.entry import Entry
|
||||||
|
from ytdl_sub.entries.variables.kwargs import YTDL_SUB_REGEX_SOURCE_VARS
|
||||||
from ytdl_sub.plugins.plugin import Plugin
|
from ytdl_sub.plugins.plugin import Plugin
|
||||||
from ytdl_sub.plugins.plugin import PluginOptions
|
from ytdl_sub.plugins.plugin import PluginOptions
|
||||||
from ytdl_sub.plugins.plugin import PluginPriority
|
from ytdl_sub.plugins.plugin import PluginPriority
|
||||||
|
|
@ -245,12 +246,25 @@ class RegexPlugin(Plugin[RegexOptions]):
|
||||||
modify_entry=PluginPriority.MODIFY_ENTRY_AFTER_SPLIT + 0,
|
modify_entry=PluginPriority.MODIFY_ENTRY_AFTER_SPLIT + 0,
|
||||||
)
|
)
|
||||||
|
|
||||||
def modify_entry(self, entry: Entry) -> Optional[Entry]:
|
@classmethod
|
||||||
|
def _add_processed_regex_source_var(cls, entry: Entry, source_var: str) -> None:
|
||||||
|
if not entry.kwargs_contains(YTDL_SUB_REGEX_SOURCE_VARS):
|
||||||
|
entry.add_kwargs({YTDL_SUB_REGEX_SOURCE_VARS: []})
|
||||||
|
|
||||||
|
entry.kwargs(YTDL_SUB_REGEX_SOURCE_VARS).append(source_var)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _contains_processed_regex_source_var(cls, entry: Entry, source_var: str) -> bool:
|
||||||
|
return source_var in entry.kwargs_get(YTDL_SUB_REGEX_SOURCE_VARS, [])
|
||||||
|
|
||||||
|
def _modify_entry_metadata(self, entry: Entry, is_metadata_stage: bool) -> Optional[Entry]:
|
||||||
"""
|
"""
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
entry
|
entry
|
||||||
Entry to add source variables to
|
Entry to add source variables to
|
||||||
|
is_metadata_stage
|
||||||
|
Whether this is called at the metadata stage or modify stage
|
||||||
|
|
||||||
Returns
|
Returns
|
||||||
-------
|
-------
|
||||||
|
|
@ -265,6 +279,19 @@ class RegexPlugin(Plugin[RegexOptions]):
|
||||||
|
|
||||||
# Iterate each source var to capture and add to the entry
|
# Iterate each source var to capture and add to the entry
|
||||||
for source_var, regex_options in self.plugin_options.source_variable_capture_dict.items():
|
for source_var, regex_options in self.plugin_options.source_variable_capture_dict.items():
|
||||||
|
|
||||||
|
# Record which regex source variables are processed, to
|
||||||
|
# process as many variables as possible in the metadata stage, then the rest
|
||||||
|
# after the media file has been downloaded.
|
||||||
|
if self._contains_processed_regex_source_var(entry, source_var):
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Continue if the source var isn't in the dict since entry variables could be added
|
||||||
|
# after the metadata stage
|
||||||
|
if is_metadata_stage and source_var not in entry_variable_dict:
|
||||||
|
continue
|
||||||
|
|
||||||
|
self._add_processed_regex_source_var(entry, source_var)
|
||||||
maybe_capture = regex_options.match.match_any(input_str=entry_variable_dict[source_var])
|
maybe_capture = regex_options.match.match_any(input_str=entry_variable_dict[source_var])
|
||||||
|
|
||||||
# If no capture
|
# If no capture
|
||||||
|
|
@ -331,3 +358,15 @@ class RegexPlugin(Plugin[RegexOptions]):
|
||||||
)
|
)
|
||||||
|
|
||||||
return entry
|
return entry
|
||||||
|
|
||||||
|
def modify_entry_metadata(self, entry: Entry) -> Optional[Entry]:
|
||||||
|
"""
|
||||||
|
Perform regex at the metadata stage
|
||||||
|
"""
|
||||||
|
return self._modify_entry_metadata(entry, is_metadata_stage=True)
|
||||||
|
|
||||||
|
def modify_entry(self, entry: Entry) -> Optional[Entry]:
|
||||||
|
"""
|
||||||
|
Perform regex at the metadata stage
|
||||||
|
"""
|
||||||
|
return self._modify_entry_metadata(entry, is_metadata_stage=False)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue