From 9f053ff3e19515e9d44818b248776f6997f2b7f2 Mon Sep 17 00:00:00 2001 From: daniix Date: Tue, 11 Jun 2019 17:11:49 +0200 Subject: [PATCH 1/2] Update spotify.py Add protection against wrong formed tracks when parsing playlists. --- spotify_mpd_sync/msplaylist/spotify.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/spotify_mpd_sync/msplaylist/spotify.py b/spotify_mpd_sync/msplaylist/spotify.py index d405394..047eda6 100644 --- a/spotify_mpd_sync/msplaylist/spotify.py +++ b/spotify_mpd_sync/msplaylist/spotify.py @@ -48,11 +48,14 @@ class Spotify(): for track in self.sp.user_playlist(self.username, playlist["id"], fields="tracks,next")["tracks"]["items"]: - - self._playlists[self.sanitize_playlist(playlist["name"])].append( - self.fmt_track(track["track"]["id"]) - ) - + try: + self._playlists[self.sanitize_playlist(playlist["name"])].append( + self.fmt_track(track["track"]["id"]) + ) + except BaseException: + print("Error parsing track!") + continue + if playlists["next"]: playlists = self.sp.next(playlists) else: From d382004d7aca54e4d60809af331e2f0d03089f4e Mon Sep 17 00:00:00 2001 From: Wesley Kerfoot Date: Thu, 13 Jun 2019 10:51:03 -0400 Subject: [PATCH 2/2] Refactoring --- requirements.txt | 1 - spotify_mpd_sync/msplaylist/spotify.py | 19 +++++++++---------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/requirements.txt b/requirements.txt index d944804..290562a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,6 +9,5 @@ idna==2.8 pycparser==2.19 python-mpd2==1.0.0 requests==2.21.0 -spotify-mpd-sync-weskerfoot==0.0.1 spotipy==2.4.4 urllib3==1.24.2 diff --git a/spotify_mpd_sync/msplaylist/spotify.py b/spotify_mpd_sync/msplaylist/spotify.py index 047eda6..adcca0c 100644 --- a/spotify_mpd_sync/msplaylist/spotify.py +++ b/spotify_mpd_sync/msplaylist/spotify.py @@ -2,18 +2,17 @@ import gevent.monkey gevent.monkey.patch_all() -import spotipy -from spotipy.oauth2 import SpotifyClientCredentials -from spotipy.util import prompt_for_user_token +from collections import defaultdict from mpd import MPDClient from mpd.base import CommandError -from collections import defaultdict -from re import sub from os import environ -import spotipy.util as util -import argparse - +from re import sub from spotify_mpd_sync.msplaylist.authenticate import prompt_for_user_token +from spotipy.oauth2 import SpotifyClientCredentials +from sys import stderr +import argparse +import spotipy +import spotipy.util as util class Spotify(): def __init__(self, host="localhost", port=6600): @@ -53,9 +52,9 @@ class Spotify(): self.fmt_track(track["track"]["id"]) ) except BaseException: - print("Error parsing track!") + stderr.write("Error parsing track {0}".format(track["track"]["id"])) continue - + if playlists["next"]: playlists = self.sp.next(playlists) else: