media.mplayer#
Description#
Plugin to control MPlayer instances.
Note that some plugin methods are populated dynamically by introspecting the
mplayer executable. You can verify the supported methods at runtime by
running the list_actions() action.
Configuration#
media.mplayer:
  # [Optional]
  # If set to True then the player will be started in
  # fullscreen mode (default: False)
  # fullscreen: False  # type=bool
  # [Optional]
  # Path to the MPlayer executable (default: search for
  # the first occurrence in your system PATH environment variable)
  # mplayer_bin:   # type=Optional[str]
  # [Optional]
  # Timeout in seconds to wait for more data
  # from MPlayer before considering a response ready (default: 0.5 seconds)
  # mplayer_timeout: 0.5  # type=float
  # [Optional]
  # Default arguments that will be passed to the MPlayer
  # executable
  # args:   # type=Optional[Collection[str]]
  # [Optional]
  # Directories that will be scanned for media files when
  # a search is performed (default: only ``download_dir``). You can
  # specify it either:
  #
  #     - As a list of strings:
  #
  #       .. code-block:: yaml
  #
  #         media_dirs:
  #             - /mnt/hd/media/movies
  #             - /mnt/hd/media/music
  #             - /mnt/hd/media/series
  #
  #     - As a dictionary where the key is the name of the media display
  #       name and the value is the path:
  #
  #         .. code-block:: yaml
  #
  #           media_dirs:
  #               Movies: /mnt/hd/media/movies
  #               Music: /mnt/hd/media/music
  #               Series: /mnt/hd/media/series
  #
  #     - As a dictionary where the key is the name of the media display
  #       name and the value is a dictionary with the path and additional
  #       display information:
  #
  #           media_dirs:
  #               Movies:
  #                   path: /mnt/hd/media/movies
  #                   icon:
  #                       url: https://example.com/icon.png
  #                       # FontAwesome icon classes are supported
  #                       class: fa fa-film
  #
  #               Music:
  #                   path: /mnt/hd/media/music
  #                   icon:
  #                       url: https://example.com/icon.png
  #                       class: fa fa-music
  #
  #               Series:
  #                   path: /mnt/hd/media/series
  #                   icon:
  #                       url: https://example.com/icon.png
  #                       class: fa fa-tv
  # media_dirs:   # type=Union[str, Iterable[Union[str, dict]], Dict[str, Union[str, dict]], NoneType]
  # [Optional]
  # Directory where external resources/torrents will be
  # downloaded (default: ~/Downloads)
  # download_dir:   # type=Optional[str]
  # [Optional]
  # Environment variables key-values to pass to the
  # player executable (e.g. DISPLAY, XDG_VTNR, PULSE_SINK etc.)
  # env:   # type=Optional[Dict[str, str]]
  # [Optional]
  # Default volume for the player (default: None, maximum volume).
  # volume:   # type=Union[float, int, NoneType]
  # [Optional]
  # Optional plugin to be used for torrent download.
  # Possible values:
  #
  #     - ``torrent`` - native ``libtorrent``-based plugin (default,
  #       recommended)
  #     - ``rtorrent`` - torrent support over rtorrent RPC/XML interface
  #     - ``webtorrent`` - torrent support over webtorrent (unstable)
  # torrent_plugin: torrent  # type=str
  # [Optional]
  # Select the preferred video/audio format for
  # YouTube videos - and any media supported by youtube-dl or the
  # selected fork. See the `youtube-dl documentation
  # <https://github.com/ytdl-org/youtube-dl#format-selection>`_ for more
  # info on supported formats. Example:
  # ``bestvideo[height<=?1080][ext=mp4]+bestaudio`` - select the best
  # mp4 video with a resolution <= 1080p, and the best audio format.
  # youtube_format: bv[height<=?1080]+ba/bv+ba  # type=Optional[str]
  # [Optional]
  # Select the preferred audio format for
  # YouTube videos downloaded only for audio. Default: ``bestaudio``.
  # youtube_audio_format: ba  # type=Optional[str]
  # [Optional]
  # Path to the ``youtube-dl`` executable, used to
  # extract information from YouTube videos and other media platforms.
  # Default: ``yt-dlp``. The default has changed from ``youtube-dl`` to
  # the ``yt-dlp`` fork because the former is badly maintained and its
  # latest release was pushed in 2021.
  # youtube_dl: yt-dlp  # type=str
  # [Optional]
  # If media download requires ``youtube_dl``,
  # and the upstream media contains both audio and video to be merged,
  # this can be used to specify the format of the output container -
  # e.g. ``mp4``, ``mkv``, ``avi``, ``flv``. Default: ``mp4``.
  # merge_output_format: mp4  # type=str
  # [Optional]
  # Directory where the media cache will be stored. If not
  # specified, the cache will be stored in the default cache directory
  # (usually ``~/.cache/platypush/media/<media_plugin>``).
  # cache_dir:   # type=Optional[str]
  # [Optional]
  # If set to True, streams transcoded via yt-dlp or
  # ffmpeg will be cached in ``cache_dir`` directory. If not set
  # (default), then streams will be played directly via memory pipe.
  # You may want to set this to True if you have a slow network, or if
  # you want to play media at high quality, even though the start time
  # may be delayed. If set to False, the media will start playing as
  # soon as the stream is ready, but the quality may be lower,
  # especially at the beginning, and seeking may not be supported.
  # cache_streams: False  # type=bool
  # [Optional]
  # Additional arguments to pass to the youtube-dl
  # executable. Default: None.
  # ytdl_args:   # type=Optional[Sequence[str]]
  # [Optional]
  # How often the `RunnablePlugin.loop <https://docs.platypush.tech/platypush/plugins/.html#platypush.plugins.RunnablePlugin.loop>`_ function should be
  # executed (default: 15 seconds). *NOTE*: For back-compatibility
  # reasons, the `poll_seconds` argument is also supported, but it's
  # deprecated.
  # poll_interval: 15  # type=Optional[float]
  # [Optional]
  # How long we should wait for any running
  # threads/processes to stop before exiting (default: 5 seconds).
  # stop_timeout: 5  # type=Optional[float]
  # [Optional]
  # If set to True then the plugin will not monitor
  # for new events. This is useful if you want to run a plugin in
  # stateless mode and only leverage its actions, without triggering any
  # events. Defaults to False.
  # disable_monitor: False  # type=bool
Dependencies#
Alpine
apk add mplayer yt-dlp
Debian
apt install mplayer yt-dlp
Fedora
yum install mplayer yt-dlp
Arch Linux
pacman -S mplayer yt-dlp
Actions#
Module reference#
- class platypush.plugins.media.mplayer.MediaMplayerPlugin(fullscreen: bool = False, mplayer_bin: str | None = None, mplayer_timeout: float = 0.5, args: Collection[str] | None = None, **kwargs)[source]#
- Bases: - MediaPlugin- Plugin to control MPlayer instances. - Note that some plugin methods are populated dynamically by introspecting the mplayer executable. You can verify the supported methods at runtime by running the - list_actions()action.- __init__(fullscreen: bool = False, mplayer_bin: str | None = None, mplayer_timeout: float = 0.5, args: Collection[str] | None = None, **kwargs)[source]#
- Parameters:
- fullscreen – If set to True then the player will be started in fullscreen mode (default: False) 
- mplayer_bin – Path to the MPlayer executable (default: search for the first occurrence in your system PATH environment variable) 
- mplayer_timeout – Timeout in seconds to wait for more data from MPlayer before considering a response ready (default: 0.5 seconds) 
- args – Default arguments that will be passed to the MPlayer executable 
 
 
 - add_subtitles(filename: str, **__)[source]#
- Sets media subtitles from filename - Parameters:
- filename – Subtitles file. 
 
 - cancel_download(url: str | None = None, path: str | None = None)#
- Cancel a download in progress. - Either the URL or the path must be specified. - Parameters:
- url – URL of the download. 
- path – Path of the download (default: any path associated with the URL). 
 
 
 - clear_downloads(url: str | None = None, path: str | None = None)#
- Clear completed/cancelled downloads from the queue. - Parameters:
- url – URL of the download (default: all downloads). 
- path – Path of the download (default: any path associated with the URL). 
 
 
 - download(url: str, filename: str | None = None, directory: str | None = None, timeout: int = 10, sync: bool = False, only_audio: bool = False, youtube_format: str | None = None, youtube_audio_format: str | None = None, merge_output_format: str | None = None)#
- Download a media URL to a local file on the Platypush host (yt-dlp required for YouTube URLs). - This action is non-blocking and returns the path to the downloaded file once the download is initiated. - You can then subscribe to these events to monitor the download progress: - Parameters:
- url – Media URL. 
- filename – Media filename (default: inferred from the URL basename). 
- directory – Destination directory (default: - download_dir).
- timeout – Network timeout in seconds (default: 10). 
- sync – If set to True, the download will be synchronous and the action will return only when the download is completed. 
- only_audio – If set to True, only the audio track will be downloaded (only supported for yt-dlp-compatible URLs for now). 
- youtube_format – Override the default - youtube_formatsetting.
- youtube_audio_format – Override the default - youtube_audio_format
- merge_output_format – Override the default - merge_output_formatsetting.
 
- Returns:
- The absolute path to the downloaded file. 
 
 - execute(cmd, args=None)[source]#
- Execute a raw MPlayer command. See https://www.mplayerhq.hu/DOCS/tech/slave.txt for a reference or call - list_actions()to get a list
 - get_downloads(url: str | None = None, path: str | None = None)#
- Get the download threads. - Parameters:
- url – URL of the download (default: all downloads). 
- path – Path of the download (default: any path associated with the URL). 
 
- Returns:
- [ { "ended_at": "2020-01-01T00:00:00+00:00", "path": "/path/to/download/video.mp4", "size": 1024, "started_at": "2020-01-01T00:00:00+00:00", "state": "Download state", "timeout": 60, "url": "https://example.com/video.mp4" } ] 
 
 - get_property(property: str, args: Collection[str] | None = None)[source]#
- Get a player property (e.g. pause, fullscreen etc.). See https://www.mplayerhq.hu/DOCS/tech/slave.txt for a full list of the available properties 
 - load(resource, *_, mplayer_args: Collection[str] | None = None, **__)[source]#
- Load a resource/video in the player. 
 - next()#
- Play the next item in the queue 
 - pause_download(url: str | None = None, path: str | None = None)#
- Pause a download in progress. - Either the URL or the path must be specified. - Parameters:
- url – URL of the download. 
- path – Path of the download (default: any path associated with the URL). 
 
 
 - play(resource: str, subtitles: str | None = None, mplayer_args: List[str] | None = None, **kwargs)[source]#
- Play a resource. - Parameters:
- resource – Resource to play - can be a local file or a remote URL 
- subtitles – Path to optional subtitle file 
- mplayer_args – Extra runtime arguments that will be passed to the MPlayer executable 
 
 
 - remove_subtitles(*_, index: int | None = None, **__)[source]#
- Removes the subtitle specified by the index (default: all) - Parameters:
- index – (1-based) index of the subtitles track to remove. 
 
 - resume_download(url: str | None = None, path: str | None = None)#
- Resume a paused download. - Either the URL or the path must be specified. - Parameters:
- url – URL of the download. 
- path – Path of the download (default: any path associated with the URL). 
 
 
 - search(query: str, types: Iterable[str] | None = None, queue_results: bool = False, autoplay: bool = False, timeout: float = 60)#
- Perform a video search. - Parameters:
- query – Query string, video name or partial name 
- types – Video types to search (default: - ["youtube", "file", "torrent"])
- queue_results – Append the results to the current playing queue (default: False) 
- autoplay – Play the first result of the search (default: False) 
- timeout – Search timeout (default: 60 seconds) 
 
 
 - seek(position: float, *_, **__)[source]#
- Alias for - set_position()- Parameters:
- position – Number of seconds relative to the current cursor 
 
 - set_position(position: float, *_, **__)[source]#
- Set the playback position. - Parameters:
- position – Number of seconds from the start 
 
 - set_property(property: str, value: Any, args: Collection[str] | None = None)[source]#
- Set a player property (e.g. pause, fullscreen etc.). See https://www.mplayerhq.hu/DOCS/tech/slave.txt for a full list of the available properties 
 - set_volume(volume: float, *_, **__)[source]#
- Set the volume - Parameters:
- volume – Volume value between 0 and 100 
 
 - start_streaming(media: str, subtitles: str | None = None, download: bool = False)#
- Starts streaming local media over the specified HTTP port. The stream will be available to HTTP clients on http://{this-ip}:{http_backend_port}/media/<media_id> - Parameters:
- media – Media to stream 
- subtitles – Path or URL to the subtitles track to be used 
- download – Set to True if you prefer to download the file from the streaming link instead of streaming it 
 
- Returns:
- dict containing the streaming URL.Example: 
 - { "id": "0123456abcdef.mp4", "source": "file:///mnt/media/movies/movie.mp4", "mime_type": "video/mp4", "url": "http://192.168.1.2:8008/media/0123456abcdef.mp4" } 
 - status()[source]#
- Get the current player state. - Returns:
- A dictionary containing the current state. 
 - Example: - .. code-block:: javascript { "duration": 300.0, // in seconds "filename": "video.mp4", "fullscreen": false, "mute": false, "name": "video.mp4", "path": "/path/to/video.mp4", "pause": false, "percent_pos": 30.0, "position": 90.0, // in seconds "seekable": true, "state": "play", // or "stop" or "pause" "title": "My Video", "volume": 50.0, "volume_max": 100.0, "url": "file:///path/to/video.mp4", } 
 - step_property(property: str, value: Any, *_, args: Collection[str] | None = None, **__)[source]#
- Step a player property (e.g. volume, time_pos etc.). See https://www.mplayerhq.hu/DOCS/tech/slave.txt for a full list of the available steppable properties 
 
- class platypush.plugins.media.mplayer.MplayerStatus(state: PlayerState = PlayerState.STOP, filename: str | None = None, path: str | None = None, title: str | None = None, duration: float | None = None, position: float | None = None, percent_pos: float | None = None, fullscreen: bool | None = None, mute: bool | None = None, pause: bool | None = None, volume: float | None = None, volume_max: float | None = None, seekable: bool | None = None, url: str | None = None)[source]#
- Bases: - object- MPlayer status object - __init__(state: PlayerState = PlayerState.STOP, filename: str | None = None, path: str | None = None, title: str | None = None, duration: float | None = None, position: float | None = None, percent_pos: float | None = None, fullscreen: bool | None = None, mute: bool | None = None, pause: bool | None = None, volume: float | None = None, volume_max: float | None = None, seekable: bool | None = None, url: str | None = None) None#
 
