from select import select
# external module
-from musicpd import MPDClient, MPDError
+from musicpd import MPDClient, MPDError as PlayerError
# local import
from .lib.track import Track
from .lib.simastr import SimaStr
from .utils.leven import levenshtein_ratio
-from .utils.utils import MPDSimaException
-
-
-class PlayerError(MPDSimaException):
- """Fatal error in the player."""
# Some decorators
return super().__getattr__(cmd)
except OSError as err: # socket errors
raise PlayerError(err) from err
- except MPDError as err: # hight level MPD client errors
- raise PlayerError(err) from err
def disconnect(self):
"""Overriding explicitly MPDClient.disconnect()"""
if password:
try:
self.password(password)
- except (MPDError, OSError) as err:
+ except OSError as err:
raise PlayerError(f"Could not connect to '{host}': {err}") from err
# Controls we have sufficient rights
available_cmd = self.commands()
if cmd not in available_cmd:
self.disconnect()
raise PlayerError(f'Could connect to "{host}", but command "{cmd}" not available')
- self.tagtypes('clear')
+ self.tagtypes_clear()
for tag in MPD.needed_tags:
- self.tagtypes('enable', tag)
+ self.tagtypes_enable(tag)
ltt = set(map(str.lower, self.tagtypes()))
needed_tags = set(map(str.lower, MPD.needed_tags))
if len(needed_tags & ltt) != len(MPD.needed_tags):
self.log.warning('Tags needed: %s', needed_tags)
raise PlayerError('Missing mandatory metadata!')
for tag in MPD.needed_mbid_tags:
- self.tagtypes('enable', tag)
+ self.tagtypes_enable(tag)
# Controls use of MusicBrainzIdentifier
if self.config.getboolean('sima', 'musicbrainzid'):
ltt = set(self.tagtypes())
self.noidle()
except OSError as err:
raise PlayerError(err) from err
- except MPDError as err: # hight level MPD client errors
- raise PlayerError(err) from err
def clean(self):
"""Clean blocking event (idle) and pending commands
if SimaStr(artist.name) == name and name != artist.name:
self.log.debug('add alias for %s: %s', artist, name)
artist.add_alias(name)
- elif len(library) == 1 and library[0] != artist.name:
- new_alias = artist.name
- self.log.info('Update artist name %s->%s', artist, library[0])
- self.log.debug('Also add alias for %s: %s', artist, new_alias)
- artist = Artist(name=library[0], mbid=artist.mbid)
- artist.add_alias(new_alias)
# Fetches remaining artists for potential match
artists = self._cache['nombid_artists']
else: # not using MusicBrainzIDs