1
This repository has been archived on 2022-08-08. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
beets-plugins/beetsplug/sources.py
2018-09-03 17:57:48 +02:00

40 lines
1.3 KiB
Python

import re
from beets import config
from beets.autotag.hooks import AlbumInfo, TrackInfo, Distance
from beets.plugins import BeetsPlugin
class SearchAPIPlugin(BeetsPlugin):
"""A beets plugin that lets you set preferences for different metadata sources.
"""
def __init__(self):
super(SearchAPIPlugin, self).__init__()
self.config.add({
'auto': True, # Enables or disables the plugin
'preferred': [ '*' ],
})
@property
def preferred_sources(self):
"""Reads the user's preferred sources, parses
them as regular expressions and returns a list
of the resulting Patterns.
"""
preferences = self.config['preferred'].get()
return [re.compile('.*') if item == '*' else re.compile(item) for item in preferences]
def album_distance(self, items, album_info, mapping):
"""Returns the album distance.
"""
dist = Distance()
dist.add_priority('source', album_info.data_source, self.preferred_sources)
return dist
def track_distance(self, item, info):
"""Returns the track distance.
"""
dist = Distance()
dist.add_priority('source', info.data_source, self.preferred_sources)
return dist