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 18:17:11 +02:00

39 lines
1.2 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__()
config.add({
'preferred_sources': [ '*' ],
})
@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 = config['preferred_sources'].as_str_seq()
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