External Plugins
Drop user plugins in this folder to make them available to the app without editing the built-in Provider/ package.
Supported discovery paths:
plugins/in the repo rootplugins/in the current working directory- Any directory listed in
MM_PLUGIN_PATH - Any directory listed in
MEDEIA_PLUGIN_PATH
Plugin module rules:
- A plugin can be a single
.pyfile or a package directory with__init__.py. - Define a class that inherits from
ProviderCore.base.Provider. - Give it a stable name using
PLUGIN_NAMEor the class name.
Example skeleton:
from ProviderCore.base import Provider, SearchResult
class MyPlugin(Provider):
PLUGIN_NAME = "myplugin"
URL_DOMAINS = ("example.com",)
def search(self, query, limit=50, filters=None, **kwargs):
text = str(query or "").strip()
if not text:
return []
return [
SearchResult(
table="myplugin",
title=f"Result for {text}",
path=f"https://example.com/{text}",
)
]
Built-in plugins still live in Provider/.