Skip to content
This repository was archived by the owner on Apr 8, 2025. It is now read-only.

Commit 3172f87

Browse files
committed
Merge pull request #111 from sindrig/connection-state
Pause if we are disconnected
2 parents 411b3ee + 61307ad commit 3172f87

2 files changed

Lines changed: 26 additions & 4 deletions

File tree

spoppy/lifecycle.py

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,15 +92,35 @@ def on_connection_state_updated(session):
9292
'OFFLINE',
9393
'UNDEFINED',
9494
)
95+
logger.debug(
96+
'Checking connection state %s' % session.connection.state
97+
)
9598
for state in KNOWN_STATES:
9699
if (
97100
session.connection.state == getattr(
98101
spotify.ConnectionState, state
99102
)
100103
):
101104
logger.debug('Received connection state %s' % state)
102-
if session.connection.state is spotify.ConnectionState.LOGGED_IN:
105+
if session.connection.state == spotify.ConnectionState.LOGGED_IN:
103106
logged_in.set()
107+
disconnect_state = spotify.ConnectionState.DISCONNECTED
108+
if session.connection.state == disconnect_state:
109+
if self.player.is_playing():
110+
self.player.play_pause()
111+
self.player.state = self.player.DISCONNECTED_INDICATOR
112+
logger.warning(
113+
'Spoppy has been disconnected. DO YOU HAVE INTERNET?'
114+
)
115+
116+
else:
117+
if (
118+
self.player.state == self.player.DISCONNECTED_INDICATOR and
119+
not self.player.is_playing()
120+
):
121+
logger.debug('We got internet back, playing!')
122+
self.player.play_pause()
123+
self.player.state = None
104124

105125
def on_lost_play_token(session):
106126
if self.player.is_playing():
@@ -124,7 +144,7 @@ def on_lost_play_token(session):
124144
logger.debug('Actually logging in now...')
125145
self._pyspotify_session.login(self.username, self.password)
126146

127-
logged_in.wait(6)
147+
logged_in.wait(5)
128148
if logged_in.is_set():
129149
logger.debug('PySpotify logged in!')
130150
return True

spoppy/players.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
class Player(object):
2222

2323
REPEAT_OPTIONS = ['all', 'one']
24+
DISCONNECTED_INDICATOR = 'disconnected'
2425

2526
shuffle = False
2627
repeat = REPEAT_OPTIONS[0]
@@ -71,6 +72,7 @@ def __init__(self, navigator):
7172
self.reversed_actions[action_name].append(
7273
key_names.get(key) or key.decode('utf-8')
7374
)
75+
self.state = None
7476

7577
def clear(self):
7678
'''
@@ -158,7 +160,7 @@ def get_progress(self):
158160
mins_played = get_duration_from_s(seconds_played)
159161

160162
return (
161-
self.player.state,
163+
self.state or self.player.state,
162164
mins_played,
163165
percent_played,
164166
self.current_track_duration
@@ -608,7 +610,7 @@ def play_current_song(self, start_playing=True):
608610
)
609611

610612
self.player.load(self.current_track)
611-
if start_playing:
613+
if start_playing and not self.state == self.DISCONNECTED_INDICATOR:
612614
self.play_pause()
613615

614616
self.seconds_played = 0

0 commit comments

Comments
 (0)