Skip to content
Snippets Groups Projects
apps.py 1.62 KiB
Newer Older
Eliot Berriot's avatar
Eliot Berriot committed
"""
Ideal API:

# myplugin/apps.py

from funkwhale_api import plugins

class Plugin(plugins.Plugin):
    name = 'scrobbler'
    config_options = [
        {
            'id': 'user_agent',
            'verbose_name': 'User agent string',
            'help_text': 'The user agent string used by this plugin for external HTTP request',
            'default': None,
        },
        {
            'id': 'timeout',
            'type': 'int',
            'verbose_name': 'Timeout (in seconds)'
            'help_text': 'Max timeout for HTTP calls',
            'default': 10,
        },
    ]

    def get_user_options(self):
        from . import options
        return [
            options.ListenBrainz,
            options.LastFm,
        ]


# myplugin/hooks.py

from .apps import Plugin


@Plugin.register_action('history.listening_created')
def scrobble(plugin, user, listening, **kwargs):
    user_options = plugin.get_options(user)

    if len(options) == 0:
        return

    for option in user_options:
        if option.id == 'listenbrainz':
            broadcast_to_listenbrainz()



"""
from django.apps import AppConfig, apps

from . import mutations
Eliot Berriot's avatar
Eliot Berriot committed
from . import plugins


class CommonConfig(AppConfig):
    name = "funkwhale_api.common"

    def ready(self):
        super().ready()

        app_names = [app.name for app in apps.app_configs.values()]
        mutations.registry.autodiscover(app_names)
Eliot Berriot's avatar
Eliot Berriot committed

        plugins.init(
            plugins.registry,
            [
                app
                for app in apps.app_configs.values()
                if getattr(app, "_is_funkwhale_plugin", False) is True
            ],
        )