Skip to content
Snippets Groups Projects
Commit 44571bdb authored by Robert Goldmann's avatar Robert Goldmann
Browse files

SpotifyRecorder: print summary of skipped and error track numbers

parent 0fe7879b
No related branches found
No related tags found
No related merge requests found
......@@ -85,27 +85,29 @@ class SpotifyRecorder:
def __record_tracks(self, tracks: list):
deviceId = self.__get_device_id_by_name(self._spotifyDeviceName)
recordedTracks = []
skippedTracks = []
errorTracks = []
recordedTrackNumbers = []
skippedTrackNumbers = []
errorTrackNumbers = []
if self._limit == -1:
LOGGER.info(f'Recording track #{self._startNumber} to all')
tracks = tracks[self._startNumber:]
tracks = tracks[self._startNumber - 1:]
else:
LOGGER.info(f'Recording track #{self._startNumber} to (including) #{self._startNumber + self._limit - 1}')
tracks = tracks[self._startNumber:self._startNumber + self._limit]
tracks = tracks[self._startNumber - 1:self._startNumber - 1 + self._limit]
for index, track in enumerate(tracks):
indexInPlaylist = self._startNumber + index
if track['is_local']:
# It's not possible to add a local track to a playlist using the web API.
# https://github.com/plamere/spotipy/issues/793#issuecomment-1082421408
LOGGER.info(f'Skipping local track "{track["track"]["name"]}"')
skippedTracks.append(track['track']['name'])
skippedTrackNumbers.append(indexInPlaylist)
continue
indexInPlaylist = self._startNumber + index
LOGGER.info(f'>>> Recording track {index + 1}/{len(tracks)}: #{indexInPlaylist} "{track["track"]["name"]}"...')
LOGGER.info(
f'>>> Recording track {index + 1}/{len(tracks)}: #{indexInPlaylist} "{track["track"]["name"]}"...')
try:
filePath = self.__determine_file_path(indexInPlaylist + 1, track)
recorder = SpotifyAudioRecorder(self._audioDeviceName, filePath)
......@@ -114,13 +116,23 @@ class SpotifyRecorder:
timeWaitedForPlaying = self.__wait_for_track_playing(track['track']['id'])
self.__wait_for_track_end(track, timeWaitedForPlaying)
recordedTracks.append(track['track']['name'])
recordedTrackNumbers.append(indexInPlaylist)
except Exception as e:
LOGGER.error(f'An error occurred while recording track "{track["track"]["name"]}"', exc_info=e)
errorTracks.append(track['track']['name'])
errorTrackNumbers.append(indexInPlaylist)
LOGGER.info('### DONE ###')
LOGGER.info(f'{len(tracks)} tracks, {len(recordedTracks)} recorded, {len(skippedTracks)} skipped, {len(errorTracks)} errors')
LOGGER.info('>>> Skipped <<<')
for number in skippedTrackNumbers:
LOGGER.info(f'Skipped #{number}')
LOGGER.info('>>> Errors <<<')
for number in errorTrackNumbers:
LOGGER.info(f'Error #{number}')
LOGGER.info(
f'### {len(tracks)} tracks, {len(recordedTrackNumbers)} recorded, {len(skippedTrackNumbers)} skipped, {len(errorTrackNumbers)} errors ###')
def __determine_file_path(self, index: int, track) -> str:
artists = track['track']['artists']
......@@ -179,7 +191,7 @@ class SpotifyRecorder:
raise RuntimeError('Device not found')
def __play_track(self, deviceId: str, trackUri: str):
def __play_track(self, deviceId: str, trackUri: str) -> None:
self._spotify.start_playback(device_id=deviceId, uris=[trackUri])
def __wait_for_track_playing(self, expectedTrackId: str) -> float:
......@@ -194,7 +206,7 @@ class SpotifyRecorder:
LOGGER.debug(f'\t\tTrack started playing after {duration:.1f}s')
break
else:
raise RuntimeError('Wrong track started playing')
raise RuntimeError(f'Wrong track started playing (actual: {currentPlayback["item"]["id"]}, expected: {expectedTrackId})')
time.sleep(1)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment