aboutsummaryrefslogtreecommitdiff
path: root/pandora/models/ad.py
diff options
context:
space:
mode:
Diffstat (limited to 'pandora/models/ad.py')
-rw-r--r--pandora/models/ad.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/pandora/models/ad.py b/pandora/models/ad.py
new file mode 100644
index 0000000..d5bcd89
--- /dev/null
+++ b/pandora/models/ad.py
@@ -0,0 +1,36 @@
1from ..errors import ParameterMissing
2from ._base import Field
3from .playlist import PlaylistModel, AudioField
4
5
6class AdItem(PlaylistModel):
7
8 title = Field("title")
9 company_name = Field("companyName")
10 tracking_tokens = Field("adTrackingTokens")
11 audio_url = AudioField("audioUrl")
12 image_url = Field("imageUrl")
13 click_through_url = Field("clickThroughUrl")
14 station_id = None
15 ad_token = None
16
17 @property
18 def is_ad(self):
19 return True
20
21 def register_ad(self, station_id=None):
22 if not station_id:
23 station_id = self.station_id
24 if self.tracking_tokens:
25 self._api_client.register_ad(station_id, self.tracking_tokens)
26 else:
27 raise ParameterMissing('No ad tracking tokens provided for '
28 'registration.')
29
30 def prepare_playback(self):
31 try:
32 self.register_ad(self.station_id)
33 except ParameterMissing as exc:
34 if self.tracking_tokens:
35 raise exc
36 return super(AdItem, self).prepare_playback()