priority to plugin extensions

This commit is contained in:
Jesse Bannon 2023-07-25 13:25:19 -07:00
parent 8c5e4f0d5b
commit 12300a85eb
3 changed files with 10 additions and 2 deletions

View file

@ -28,7 +28,10 @@ class PluginPriority:
MODIFY_ENTRY_FIRST = 0 MODIFY_ENTRY_FIRST = 0
def __init__(self, modify_entry: int = 5, post_process: int = 5): def __init__(
self, modify_entry_metadata: int = 5, modify_entry: int = 5, post_process: int = 5
):
self.modify_entry_metadata = modify_entry_metadata
self.modify_entry = modify_entry self.modify_entry = modify_entry
self.post_process = post_process self.post_process = post_process

View file

@ -12,6 +12,7 @@ from typing import Tuple
from yt_dlp.utils import RejectedVideoReached from yt_dlp.utils import RejectedVideoReached
from ytdl_sub.config.plugin import PluginPriority
from ytdl_sub.config.preset_options import Overrides from ytdl_sub.config.preset_options import Overrides
from ytdl_sub.downloaders.source_plugin import SourcePlugin from ytdl_sub.downloaders.source_plugin import SourcePlugin
from ytdl_sub.downloaders.source_plugin import SourcePluginExtension from ytdl_sub.downloaders.source_plugin import SourcePluginExtension
@ -54,6 +55,8 @@ class URLDownloadState:
class UrlDownloaderThumbnailPlugin(SourcePluginExtension): class UrlDownloaderThumbnailPlugin(SourcePluginExtension):
priority = PluginPriority(modify_entry=0)
def __init__( def __init__(
self, self,
options: MultiUrlSourceOptionsValidator, options: MultiUrlSourceOptionsValidator,
@ -153,6 +156,8 @@ class UrlDownloaderThumbnailPlugin(SourcePluginExtension):
class UrlDownloaderCollectionVariablePlugin(SourcePluginExtension): class UrlDownloaderCollectionVariablePlugin(SourcePluginExtension):
priority = PluginPriority(modify_entry_metadata=0)
def __init__( def __init__(
self, self,
options: MultiUrlSourceOptionsValidator, options: MultiUrlSourceOptionsValidator,

View file

@ -192,7 +192,7 @@ class SubscriptionDownload(BaseSubscription, ABC):
@classmethod @classmethod
def _preprocess_entry(cls, plugins: List[Plugin], entry: Entry) -> Optional[Entry]: def _preprocess_entry(cls, plugins: List[Plugin], entry: Entry) -> Optional[Entry]:
maybe_entry: Optional[Entry] = entry maybe_entry: Optional[Entry] = entry
for plugin in plugins: for plugin in sorted(plugins, key=lambda _plugin: _plugin.priority.modify_entry_metadata):
if (maybe_entry := plugin.modify_entry_metadata(maybe_entry)) is None: if (maybe_entry := plugin.modify_entry_metadata(maybe_entry)) is None:
return None return None