ytdl-sub/src/ytdl_sub/plugins/format.py
2023-12-28 22:39:59 -08:00

42 lines
1 KiB
Python

from typing import Dict
from typing import Optional
from ytdl_sub.config.plugin.plugin import Plugin
from ytdl_sub.config.validators.options import OptionsValidator
from ytdl_sub.validators.validators import StringValidator
class FormatOptions(OptionsValidator):
"""
Set ``--format`` to pass into yt-dlp to download a specific format quality.
Uses the same syntax as yt-dlp.
Usage:
.. code-block:: yaml
format: "(bv*[height<=1080]+bestaudio/best[height<=1080])"
"""
def __init__(self, name, value):
super().__init__(name, value)
self._format = StringValidator(name=name, value=value).value
@property
def format(self) -> str:
"""
yt-dlp format, uses same syntax as yt-dlp.
"""
return self._format
class FormatPlugin(Plugin[FormatOptions]):
plugin_options_type = FormatOptions
def ytdl_options(self) -> Optional[Dict]:
"""
Returns
-------
yt-dlp format
"""
return {"format": self.plugin_options.format}