aboutsummaryrefslogtreecommitdiff
path: root/pandora/models/pandora.py
diff options
context:
space:
mode:
Diffstat (limited to 'pandora/models/pandora.py')
-rw-r--r--pandora/models/pandora.py23
1 files changed, 20 insertions, 3 deletions
diff --git a/pandora/models/pandora.py b/pandora/models/pandora.py
index 40b368a..6abd3a7 100644
--- a/pandora/models/pandora.py
+++ b/pandora/models/pandora.py
@@ -130,6 +130,8 @@ class PlaylistModel(PandoraModel):
130 return cls.get_audio_field(data, "bitrate", preferred_quality) 130 return cls.get_audio_field(data, "bitrate", preferred_quality)
131 131
132 def get_is_playable(self): 132 def get_is_playable(self):
133 if not self.audio_url:
134 return False
133 return self._api_client.transport.test_url(self.audio_url) 135 return self._api_client.transport.test_url(self.audio_url)
134 136
135 def prepare_playback(self): 137 def prepare_playback(self):
@@ -223,11 +225,26 @@ class AdItem(PlaylistModel):
223 def is_ad(self): 225 def is_ad(self):
224 return True 226 return True
225 227
226 def register_ad(self, station_id): 228 def register_ad(self, station_id=None):
227 self._api_client.register_ad(station_id, self.tracking_tokens) 229 if not station_id:
230 station_id = self.station_id
231 if self.tracking_tokens:
232 self._api_client.register_ad(station_id, self.tracking_tokens)
233 else:
234 raise ValueError('No ad tracking tokens available for '
235 'registration.')
228 236
229 def prepare_playback(self): 237 def prepare_playback(self):
230 self.register_ad(self.station_id) 238 try:
239 self.register_ad(self.station_id)
240 except ValueError as e:
241 if not self.tracking_tokens:
242 # Ignore registration attempts if no ad tracking tokens are
243 # available
244 pass
245 else:
246 # Unexpected error, re-raise.
247 raise e
231 return super(AdItem, self).prepare_playback() 248 return super(AdItem, self).prepare_playback()
232 249
233 250