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.
-
Find a plugin. You can find third-party plugins over here: https://github.com/topics/mov-cli-plugin
-
Install it's python package with pip.
pip install {package_name}
- 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.
- 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}
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
coming soon ™️
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}'!")
- 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.