mirror of
https://github.com/beetbox/beets.git
synced 2026-01-30 12:02:41 +01:00
Use candidate function from plugins instead of hooks
This commit is contained in:
parent
2fcb48d7a4
commit
de0958ca65
4 changed files with 14 additions and 37 deletions
|
|
@ -23,7 +23,7 @@ from typing import TYPE_CHECKING, Any, NamedTuple, TypeVar
|
|||
from jellyfish import levenshtein_distance
|
||||
from unidecode import unidecode
|
||||
|
||||
from beets import config, logging, plugins
|
||||
from beets import config, logging
|
||||
from beets.util import as_string, cached_classproperty
|
||||
|
||||
if TYPE_CHECKING:
|
||||
|
|
@ -590,26 +590,3 @@ class AlbumMatch(NamedTuple):
|
|||
class TrackMatch(NamedTuple):
|
||||
distance: Distance
|
||||
info: TrackInfo
|
||||
|
||||
|
||||
# Aggregation of sources.
|
||||
|
||||
|
||||
def album_for_id(*args, **kwargs) -> AlbumInfo | None:
|
||||
"""Get AlbumInfo object for the given ID string."""
|
||||
return plugins.album_for_id(*args, **kwargs)
|
||||
|
||||
|
||||
def track_for_id(*args, **kwargs) -> TrackInfo | None:
|
||||
"""Get TrackInfo object for the given ID string."""
|
||||
return plugins.track_for_id(*args, **kwargs)
|
||||
|
||||
|
||||
@plugins.notify_info_yielded("albuminfo_received")
|
||||
def album_candidates(*args, **kwargs) -> Iterator[AlbumInfo]:
|
||||
yield from plugins.candidates(*args, **kwargs)
|
||||
|
||||
|
||||
@plugins.notify_info_yielded("trackinfo_received")
|
||||
def item_candidates(*args, **kwargs) -> Iterator[TrackInfo]:
|
||||
yield from plugins.item_candidates(*args, **kwargs)
|
||||
|
|
|
|||
|
|
@ -356,7 +356,7 @@ def match_by_id(items: Iterable[Item]) -> AlbumInfo | None:
|
|||
return None
|
||||
# If all album IDs are equal, look up the album.
|
||||
log.debug("Searching for discovered album ID: {0}", first)
|
||||
return hooks.album_for_id(first)
|
||||
return plugins.album_for_id(first)
|
||||
|
||||
|
||||
def _recommendation(
|
||||
|
|
@ -511,7 +511,7 @@ def tag_album(
|
|||
if search_ids:
|
||||
for search_id in search_ids:
|
||||
log.debug("Searching for album ID: {0}", search_id)
|
||||
if info := hooks.album_for_id(search_id):
|
||||
if info := plugins.album_for_id(search_id):
|
||||
_add_candidate(items, candidates, info)
|
||||
|
||||
# Use existing metadata or text search.
|
||||
|
|
@ -554,8 +554,8 @@ def tag_album(
|
|||
log.debug("Album might be VA: {0}", va_likely)
|
||||
|
||||
# Get the results from the data sources.
|
||||
for matched_candidate in hooks.album_candidates(
|
||||
items, search_artist, search_album, va_likely, extra_tags
|
||||
for matched_candidate in plugins.candidates(
|
||||
items, search_artist, search_album, va_likely
|
||||
):
|
||||
_add_candidate(items, candidates, matched_candidate)
|
||||
|
||||
|
|
@ -589,7 +589,7 @@ def tag_item(
|
|||
if trackids:
|
||||
for trackid in trackids:
|
||||
log.debug("Searching for track ID: {0}", trackid)
|
||||
if info := hooks.track_for_id(trackid):
|
||||
if info := plugins.track_for_id(trackid):
|
||||
dist = track_distance(item, info, incl_artist=True)
|
||||
candidates[info.track_id] = hooks.TrackMatch(dist, info)
|
||||
# If this is a good match, then don't keep searching.
|
||||
|
|
@ -615,7 +615,9 @@ def tag_item(
|
|||
log.debug("Item search terms: {0} - {1}", search_artist, search_title)
|
||||
|
||||
# Get and evaluate candidate metadata.
|
||||
for track_info in hooks.item_candidates(item, search_artist, search_title):
|
||||
for track_info in plugins.item_candidates(
|
||||
item, search_artist, search_title
|
||||
):
|
||||
dist = track_distance(item, track_info, incl_artist=True)
|
||||
candidates[track_info.track_id] = hooks.TrackMatch(dist, track_info)
|
||||
|
||||
|
|
|
|||
|
|
@ -16,8 +16,7 @@
|
|||
|
||||
from collections import defaultdict
|
||||
|
||||
from beets import autotag, library, ui, util
|
||||
from beets.autotag import hooks
|
||||
from beets import autotag, library, plugins, ui, util
|
||||
from beets.plugins import BeetsPlugin, apply_item_changes
|
||||
|
||||
|
||||
|
|
@ -80,7 +79,7 @@ class MBSyncPlugin(BeetsPlugin):
|
|||
)
|
||||
continue
|
||||
|
||||
if not (track_info := hooks.track_for_id(item.mb_trackid)):
|
||||
if not (track_info := plugins.track_for_id(item.mb_trackid)):
|
||||
self._log.info(
|
||||
"Recording ID not found: {0.mb_trackid} for track {0}", item
|
||||
)
|
||||
|
|
@ -101,7 +100,7 @@ class MBSyncPlugin(BeetsPlugin):
|
|||
self._log.info("Skipping album with no mb_albumid: {}", album)
|
||||
continue
|
||||
|
||||
if not (album_info := hooks.album_for_id(album.mb_albumid)):
|
||||
if not (album_info := plugins.album_for_id(album.mb_albumid)):
|
||||
self._log.info(
|
||||
"Release ID {0.mb_albumid} not found for album {0}", album
|
||||
)
|
||||
|
|
|
|||
|
|
@ -21,8 +21,7 @@ from collections.abc import Iterator
|
|||
import musicbrainzngs
|
||||
from musicbrainzngs.musicbrainz import MusicBrainzError
|
||||
|
||||
from beets import config
|
||||
from beets.autotag import hooks
|
||||
from beets import config, plugins
|
||||
from beets.dbcore import types
|
||||
from beets.library import Album, Item, Library
|
||||
from beets.plugins import BeetsPlugin
|
||||
|
|
@ -223,7 +222,7 @@ class MissingPlugin(BeetsPlugin):
|
|||
item_mbids = {x.mb_trackid for x in album.items()}
|
||||
# fetch missing items
|
||||
# TODO: Implement caching that without breaking other stuff
|
||||
if album_info := hooks.album_for_id(album.mb_albumid):
|
||||
if album_info := plugins.album_for_id(album.mb_albumid):
|
||||
for track_info in album_info.tracks:
|
||||
if track_info.track_id not in item_mbids:
|
||||
self._log.debug(
|
||||
|
|
|
|||
Loading…
Reference in a new issue