1

Add Plugins sources and itunes

This commit is contained in:
Kim Wittenburg
2018-09-03 17:57:48 +02:00
parent 7c78f896a8
commit 6d9ed81182
3 changed files with 366 additions and 0 deletions

39
beetsplug/sources.py Normal file
View File

@@ -0,0 +1,39 @@
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