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

SpotifyRecorder: skip recording for already existing mp3 files

parent d919259e
No related branches found
No related tags found
No related merge requests found
......@@ -98,6 +98,7 @@ class SpotifyRecorder:
deviceId = self.__get_device_id_by_name(self._spotifyDeviceName)
recordedTrackNumbers = []
alreadyExistingTrackNumbers = []
skippedTrackNumbers = []
errorTrackNumbers = []
......@@ -114,21 +115,28 @@ class SpotifyRecorder:
LOGGER.info(f'>>> Recording track {index + 1}/{len(tracks)}: '
f'#{indexInPlaylist} "{track["track"]["name"]}"...')
try:
self.__record_single_track(deviceId, indexInPlaylist, track)
recordingCreated = self.__record_single_track(deviceId, indexInPlaylist, track)
if recordingCreated:
recordedTrackNumbers.append(indexInPlaylist)
else:
alreadyExistingTrackNumbers.append(indexInPlaylist)
except Exception as e:
LOGGER.error(f'An error occurred while recording track "{track["track"]["name"]}"', exc_info=e)
errorTrackNumbers.append(indexInPlaylist)
self.__print_end_statistics(errorTrackNumbers, recordedTrackNumbers, skippedTrackNumbers, len(tracks))
self.__print_end_statistics(errorTrackNumbers, recordedTrackNumbers, skippedTrackNumbers, alreadyExistingTrackNumbers, len(tracks))
def __record_single_track(self, deviceId, indexInPlaylist, track):
def __record_single_track(self, deviceId, indexInPlaylist, track) -> bool:
self.__stop_playback_if_playing(deviceId)
fileName = self.__determine_file_name(indexInPlaylist, track)
filePathWav = f'{fileName}.wav'
filePathMp3 = f'{fileName}.mp3'
if os.path.exists(filePathMp3):
LOGGER.info('Track already exists. Skipping.')
return False
recorder = AudioRecorder(self._audioDeviceName, filePathWav)
with recorder.record():
......@@ -145,12 +153,17 @@ class SpotifyRecorder:
LOGGER.debug(f'\t\tRemoving wav file "{filePathWav}"')
os.remove(filePathWav)
return True
@staticmethod
def __print_end_statistics(errorTrackNumbers: list[int], recordedTrackNumbers: list[int],
skippedTrackNumbers: list[int], numberOfTracks: int):
def __print_end_statistics(errorTrackNumbers: list[int],
recordedTrackNumbers: list[int],
skippedTrackNumbers: list[int],
alreadyExistingTrackNumbers: list[int],
numberOfTracks: int):
LOGGER.info('### DONE ###')
LOGGER.info('>>> Skipped <<<')
LOGGER.info('>>> Skipped local tracks<<<')
for number in skippedTrackNumbers:
LOGGER.info(f'Skipped #{number}')
......@@ -158,8 +171,11 @@ class SpotifyRecorder:
for number in errorTrackNumbers:
LOGGER.info(f'Error #{number}')
LOGGER.info(f'### {numberOfTracks} tracks, {len(recordedTrackNumbers)} recorded, '
f'{len(skippedTrackNumbers)} skipped, {len(errorTrackNumbers)} errors ###')
LOGGER.info(f'### {numberOfTracks} tracks, '
f'{len(recordedTrackNumbers)} recorded, '
f'{len(skippedTrackNumbers)} local tracks skipped, '
f'{len(alreadyExistingTrackNumbers)} existing tracks skipped, '
f'{len(errorTrackNumbers)} errors ###')
def __determine_file_name(self, index: int, track) -> str:
artists = self.__join_artists(track)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment