Skip to content

Plugins

Ananas edited this page May 20, 2024 · 8 revisions

🛠️ How to install Plugins

Note

This is just an example. These exact commands won't actually work, "{package_name}" is not an actual package and "{query}" refers to your search query.

  1. Find a plugin. You can find third-party plugins over here: https://github.com/topics/mov-cli-plugin

  2. Install it's python package with pip.

pip install {package_name}
  1. Then add the plugin to your mov-cli config.
mov-cli -e
[mov-cli.plugins]
test = "mov-cli-test"
namespace = "package_name" # this is our plugin here

"namespace" can be named anything, you will just need to remember that name for when you invoke the scraper.

  1. Now you can invoke it's scraper like so.
mov-cli -s {namespace}.{scraper} {query}

or mov-cli {query} --scraper {namespace}.{scraper}

You can also set it as the default scraper in your config so you don't have to ever pass the scraper parameter.

[mov-cli.scrapers]
default = "{namespace}.{scraper}"
mov-cli {query}

Example (Plugins)

Note

Bear in mind this is just an example and the "mov-cli-nas" plugin is not really a reality (at least not yet) so this is all just a concept.

Let's say this was our config:

[mov-cli.plugins]
test = "mov-cli-test"
youtube = "mov-cli-youtube"
nas = "mov-cli-nas" # The plugin in question.

and we would like to scrape media from our home server running plex.

Granted the "mov-cli-nas" plugin is installed and in our config, this is how we would invoke it:

mov-cli -s nas.plex abc

However if the "plex" scraper is set as default in the plugin just "nas" will do:

mov-cli -s nas abc

🌠 How to create a Plugin.

coming soon ™️

✨ Features

🪄 Custom Scraper Options

Since v4.2 we added a feature that allows the passing of arguments directly to the scraper. Like example let's say I want to stream the song "82 99 F.M" from "macross 82-99" on youtube, but I want audio only; thanks to scraper args we can actually tell the scraper that we would like to scrape the audio stream instead of the video stream like so:

mov-cli -c 1 -s youtube 82 99 F.M macross 82-99 -- --audio

-- is the magic here, -- tells the cli that the arguments after it should be passed directly to the scraper. You can take advantage of this in the Scraper.scrape() method like so:

def scrape(self, metadata: Metadata, episode: EpisodeSelector) -> Multi | Single:
    audio_only: bool = self.options.get("audio", False)

    print(f"Audio mode is '{audio_only}'!")

📖 Plugin Guidelines

Naming

  • Third-party plugins are prohibited from using mov-cli in their names.
  • Third-party plugins may use acronyms, but cannot include mov-cli in their names.