mirror of
https://github.com/beetbox/beets.git
synced 2025-12-29 03:52:51 +01:00
Load metadata sync plugins dynamically.
This commit is contained in:
parent
65307b410c
commit
73fcbd07c3
1 changed files with 19 additions and 5 deletions
|
|
@ -15,10 +15,15 @@
|
|||
"""Synchronize information from music player libraries
|
||||
"""
|
||||
|
||||
from beets import ui
|
||||
from beets import ui, logging
|
||||
from beets.plugins import BeetsPlugin
|
||||
from beets.dbcore import types
|
||||
from beets.library import DateType
|
||||
from sys import modules
|
||||
import inspect
|
||||
|
||||
# Loggers.
|
||||
log = logging.getLogger('beets.psync')
|
||||
|
||||
|
||||
class PSyncPlugin(BeetsPlugin):
|
||||
|
|
@ -57,13 +62,22 @@ class PSyncPlugin(BeetsPlugin):
|
|||
sources = {}
|
||||
|
||||
for player in source:
|
||||
if player == u'amarok':
|
||||
from beetsplug.psync import amarok
|
||||
__import__('beetsplug.psync', fromlist=[str(player)])
|
||||
|
||||
sources[u'amarok'] = amarok.Amarok()
|
||||
else:
|
||||
module = 'beetsplug.psync.' + player
|
||||
|
||||
if module not in modules.keys():
|
||||
log.error(u'Unknown metadata source \'' + player + '\'')
|
||||
continue
|
||||
|
||||
classes = inspect.getmembers(modules[module], inspect.isclass)
|
||||
|
||||
for entry in classes:
|
||||
if entry[0].lower() == player:
|
||||
sources[player] = entry[1]()
|
||||
else:
|
||||
continue
|
||||
|
||||
for item in lib.items(query):
|
||||
for player in sources.values():
|
||||
player.get_data(item)
|
||||
|
|
|
|||
Loading…
Reference in a new issue