Skip to main content
Glama

MultiViewer

by RobSpectre
MIT License
13
README.rst4.88 kB
*************** mvf1 *************** A Python package, command line interface and MCP server to control video players for `MultiViewer`_, the best way to watch Formula 1. .. image:: https://dl.circleci.com/status-badge/img/gh/RobSpectre/mvf1/tree/main.svg?style=svg :target: https://dl.circleci.com/status-badge/redirect/gh/RobSpectre/mvf1/tree/main .. image:: https://codecov.io/gh/RobSpectre/mvf1/branch/main/graph/badge.svg?token=L5N96KXN2V :target: https://codecov.io/gh/RobSpectre/mvf1 .. image:: https://readthedocs.org/projects/mvf1/badge/?version=latest :target: https://mvf1.readthedocs.io/en/latest/?badge=latest :alt: Documentation Status Table of Contents ================= .. contents:: :local: :depth: 1 :backlinks: none Features =============== * Command line interface for controlling `MultiViewer`_. Useful for integrations with control interfaces like `StreamDeck`_ * Pythonic interface for controlling `MultiViewer`_. No GraphQL needed! * MCP server for controlling `MultiViewer`_ - perfect for controlling the broadcast for with AI agents. * `Type hints`_ * `Full documentation`_ * `Test coverage`_ * `black`_ Praise the Dark Lord Installation =============== The latest version can be installed via `pip`_. .. code-block:: bash $ pip install mvf1 Quickstart ================ Command Line ---------------- .. code-block:: bash $ mvf1-cli --help Model Context Protocol (MCP) Server ------------------------------------ .. code-block:: bash $ mvf1-cli mcp To use in an AI agent, use your framework's affordance for a `stdio` MCP server. Here is an example with PydanticAI. .. code-block:: python from pydantic_ai import Agent from pydantic_ai.mcp import MCPServerStdio server = MCPServerStdio( 'mvf1-cli', args=[ 'mcp' ] ) agent = Agent('openai:gpt-4o', mcp_servers=[server]) Library ---------------- Displaying all players .. code-block:: python >>> from mvf1 import MultiViewerForF1 >>> remote = MultiViewerForF1() >>> remote.players [6: INTERNATIONAL, 7: PER] Pause all players .. code-block:: python >>> from mvf1 import MultiViewerForF1 >>> remote = MultiViewerForF1() >>> for player in remote.players: >>> player.mute() {'data': {'playerSetMuted': True}} {'data': {'playerSetMuted': True}} Retrieve specific player .. code-block:: python >>> from mvf1 import MultiViewerForF1 >>> remote = MultiViewerForF1() >>> player = remote.player(6) >>> player.state {'ts': 1677168293.21, 'paused': False, 'muted': True, 'volume': 100, 'live': False, 'currentTime': 10.002025, 'interpolatedCurrentTime': 363.656025} Switch stream of player to data channel .. code-block:: python >>> from mvf1 import MultiViewerForF1 >>> remote = MultiViewerForF1() >>> player = remote.player(6) >>> player.switch_stream('DATA') {'data': {'playerCreate': '12'}} Synchronize all players to specific player .. code-block:: python >>> from mvf1 import MultiViewerForF1 >>> remote = MultiViewerForF1() >>> player = remote.player(6) >>> player.sync() {'data': {'playerSync': True}} Synchornize all players to player streaming broadcast commentary .. code-block:: python >>> from mvf1 import MultiViewerForF1 >>> remote = MultiViewerForF1() >>> remote.player_sync_to_commentary() {'data': {'playerSync': True}} Development ================ Hacking --------------- To hack on the project, clone the `GitHub repo`_: .. code-block:: bash $ git clone https://github.com/RobSpectre/mvf1 Then install in a `virtualenv`_. .. code-block:: bash $ pip install -e ./ Test --------------- The project uses `tox`_ for tests. Simply run from project root .. code-block:: bash $ tox Meta ================ * Written by `Rob Spectre`_. * Released under `MIT License`_. * Software is as is - no warranty expressed or implied, diggity. * This package is not developed or maintained by `MultiViewer`_ or `Formula 1 TV`_. * Shout out to the excellent `MultiViewer`_ team! This app absolutely changed how I enjoy Formula 1. * 🏎️ Go Weeyums! 🏎️ .. _MultiViewer: https://multiviewer.app/ .. _pip: https://multiviewer.app/ .. _GitHub Repo: https://github.com/RobSpectre/mvf1 .. _virtualenv: https://multiviewer.app/ .. _Rob Spectre: https://brooklynhacker.com .. _MIT License: http://opensource.org/licenses/MIT .. _tox: https://tox.wiki/en/latest/ .. _black: https://black.readthedocs.io/en/stable/ .. _StreamDeck: https://www.elgato.com/en/welcome-to-stream-deck .. _type hints: https://docs.python.org/3/library/typing.html .. _Full documentation: https://mvf1.readthedocs.io/en/latest/ .. _Test coverage: https://app.codecov.io/gh/RobSpectre/mvf1 .. _Formula 1 TV: https://f1tv.formula1.com/

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/RobSpectre/mvf1'

If you have feedback or need assistance with the MCP directory API, please join our Discord server