diff options
Diffstat (limited to 'pydora/player.py')
-rw-r--r-- | pydora/player.py | 62 |
1 files changed, 33 insertions, 29 deletions
diff --git a/pydora/player.py b/pydora/player.py index 653fb35..991468a 100644 --- a/pydora/player.py +++ b/pydora/player.py | |||
@@ -64,23 +64,24 @@ class PlayerApp(object): | |||
64 | 64 | ||
65 | def __init__(self): | 65 | def __init__(self): |
66 | self.client = None | 66 | self.client = None |
67 | self.screen = Screen() | ||
67 | 68 | ||
68 | def get_player(self): | 69 | def get_player(self): |
69 | try: | 70 | try: |
70 | player = VLCPlayer(self, sys.stdin) | 71 | player = VLCPlayer(self, sys.stdin) |
71 | Screen.print_success("Using VLC") | 72 | self.screen.print_success("Using VLC") |
72 | return player | 73 | return player |
73 | except PlayerUnusable: | 74 | except PlayerUnusable: |
74 | pass | 75 | pass |
75 | 76 | ||
76 | try: | 77 | try: |
77 | player = MPG123Player(self, sys.stdin) | 78 | player = MPG123Player(self, sys.stdin) |
78 | Screen.print_success("Using mpg123") | 79 | self.screen.print_success("Using mpg123") |
79 | return player | 80 | return player |
80 | except PlayerUnusable: | 81 | except PlayerUnusable: |
81 | pass | 82 | pass |
82 | 83 | ||
83 | Screen.print_error("Unable to find a player") | 84 | self.screen.print_error("Unable to find a player") |
84 | sys.exit(1) | 85 | sys.exit(1) |
85 | 86 | ||
86 | def get_client(self): | 87 | def get_client(self): |
@@ -94,22 +95,22 @@ class PlayerApp(object): | |||
94 | return builder.build() | 95 | return builder.build() |
95 | 96 | ||
96 | if not self.client: | 97 | if not self.client: |
97 | Screen.print_error("No valid config found") | 98 | self.screen.print_error("No valid config found") |
98 | sys.exit(1) | 99 | sys.exit(1) |
99 | 100 | ||
100 | def station_selection_menu(self, error=None): | 101 | def station_selection_menu(self, error=None): |
101 | """Format a station menu and make the user select a station | 102 | """Format a station menu and make the user select a station |
102 | """ | 103 | """ |
103 | Screen.clear() | 104 | self.screen.clear() |
104 | 105 | ||
105 | if error: | 106 | if error: |
106 | Screen.print_error("{}\n".format(error)) | 107 | self.screen.print_error("{}\n".format(error)) |
107 | 108 | ||
108 | for i, station in enumerate(self.stations): | 109 | for i, station in enumerate(self.stations): |
109 | i = "{:>3}".format(i) | 110 | i = "{:>3}".format(i) |
110 | print(u"{}: {}".format(Colors.yellow(i), station.name)) | 111 | print(u"{}: {}".format(Colors.yellow(i), station.name)) |
111 | 112 | ||
112 | return self.stations[Screen.get_integer("Station: ")] | 113 | return self.stations[self.screen.get_integer("Station: ")] |
113 | 114 | ||
114 | def play(self, song): | 115 | def play(self, song): |
115 | """Play callback | 116 | """Play callback |
@@ -122,7 +123,7 @@ class PlayerApp(object): | |||
122 | 123 | ||
123 | def skip_song(self, song): | 124 | def skip_song(self, song): |
124 | if song.is_ad: | 125 | if song.is_ad: |
125 | Screen.print_error("Cannot skip advertisements") | 126 | self.screen.print_error("Cannot skip advertisements") |
126 | else: | 127 | else: |
127 | self.player.stop() | 128 | self.player.stop() |
128 | 129 | ||
@@ -135,61 +136,63 @@ class PlayerApp(object): | |||
135 | def dislike_song(self, song): | 136 | def dislike_song(self, song): |
136 | try: | 137 | try: |
137 | if song.thumbs_down(): | 138 | if song.thumbs_down(): |
138 | Screen.print_success("Track disliked") | 139 | self.screen.print_success("Track disliked") |
139 | self.player.stop() | 140 | self.player.stop() |
140 | else: | 141 | else: |
141 | Screen.print_error("Failed to dislike track") | 142 | self.screen.print_error("Failed to dislike track") |
142 | except NotImplementedError: | 143 | except NotImplementedError: |
143 | Screen.print_error("Cannot dislike this type of track") | 144 | self.screen.print_error("Cannot dislike this type of track") |
144 | 145 | ||
145 | def like_song(self, song): | 146 | def like_song(self, song): |
146 | try: | 147 | try: |
147 | if song.thumbs_up(): | 148 | if song.thumbs_up(): |
148 | Screen.print_success("Track liked") | 149 | self.screen.print_success("Track liked") |
149 | else: | 150 | else: |
150 | Screen.print_error("Failed to like track") | 151 | self.screen.print_error("Failed to like track") |
151 | except NotImplementedError: | 152 | except NotImplementedError: |
152 | Screen.print_error("Cannot like this type of track") | 153 | self.screen.print_error("Cannot like this type of track") |
153 | 154 | ||
154 | def bookmark_song(self, song): | 155 | def bookmark_song(self, song): |
155 | try: | 156 | try: |
156 | if song.bookmark_song(): | 157 | if song.bookmark_song(): |
157 | Screen.print_success("Bookmarked song") | 158 | self.screen.print_success("Bookmarked song") |
158 | else: | 159 | else: |
159 | Screen.print_error("Failed to bookmark song") | 160 | self.screen.print_error("Failed to bookmark song") |
160 | except NotImplementedError: | 161 | except NotImplementedError: |
161 | Screen.print_error("Cannot bookmark this type of track") | 162 | self.screen.print_error("Cannot bookmark this type of track") |
162 | 163 | ||
163 | def bookmark_artist(self, song): | 164 | def bookmark_artist(self, song): |
164 | try: | 165 | try: |
165 | if song.bookmark_artist(): | 166 | if song.bookmark_artist(): |
166 | Screen.print_success("Bookmarked artist") | 167 | self.screen.print_success("Bookmarked artist") |
167 | else: | 168 | else: |
168 | Screen.print_error("Failed to bookmark artis") | 169 | self.screen.print_error("Failed to bookmark artis") |
169 | except NotImplementedError: | 170 | except NotImplementedError: |
170 | Screen.print_error("Cannot bookmark artist for this type of track") | 171 | self.screen.print_error( |
172 | "Cannot bookmark artist for this type of track") | ||
171 | 173 | ||
172 | def sleep_song(self, song): | 174 | def sleep_song(self, song): |
173 | try: | 175 | try: |
174 | if song.sleep(): | 176 | if song.sleep(): |
175 | Screen.print_success("Song will not be played for 30 days") | 177 | self.screen.print_success( |
178 | "Song will not be played for 30 days") | ||
176 | self.player.stop() | 179 | self.player.stop() |
177 | else: | 180 | else: |
178 | Screen.print_error("Failed to sleep song") | 181 | self.screen.print_error("Failed to sleep song") |
179 | except NotImplementedError: | 182 | except NotImplementedError: |
180 | Screen.print_error("Cannot sleep this type of track") | 183 | self.screen.print_error("Cannot sleep this type of track") |
181 | 184 | ||
182 | def raise_volume(self, song): | 185 | def raise_volume(self, song): |
183 | try: | 186 | try: |
184 | self.player.raise_volume() | 187 | self.player.raise_volume() |
185 | except NotImplementedError: | 188 | except NotImplementedError: |
186 | Screen.print_error("Cannot sleep this type of track") | 189 | self.screen.print_error("Cannot sleep this type of track") |
187 | 190 | ||
188 | def lower_volume(self, song): | 191 | def lower_volume(self, song): |
189 | try: | 192 | try: |
190 | self.player.lower_volume() | 193 | self.player.lower_volume() |
191 | except NotImplementedError: | 194 | except NotImplementedError: |
192 | Screen.print_error("Cannot sleep this type of track") | 195 | self.screen.print_error("Cannot sleep this type of track") |
193 | 196 | ||
194 | def quit(self, song): | 197 | def quit(self, song): |
195 | self.player.end_station() | 198 | self.player.end_station() |
@@ -209,20 +212,21 @@ class PlayerApp(object): | |||
209 | try: | 212 | try: |
210 | cmd = getattr(self, self.CMD_MAP[input][1]) | 213 | cmd = getattr(self, self.CMD_MAP[input][1]) |
211 | except (IndexError, KeyError): | 214 | except (IndexError, KeyError): |
212 | return Screen.print_error("Invalid command {!r}!".format(input)) | 215 | return self.screen.print_error( |
216 | "Invalid command {!r}!".format(input)) | ||
213 | 217 | ||
214 | cmd(song) | 218 | cmd(song) |
215 | 219 | ||
216 | def pre_poll(self): | 220 | def pre_poll(self): |
217 | Screen.set_echo(False) | 221 | self.screen.set_echo(False) |
218 | 222 | ||
219 | def post_poll(self): | 223 | def post_poll(self): |
220 | Screen.set_echo(True) | 224 | self.screen.set_echo(True) |
221 | 225 | ||
222 | def pre_flight_checks(self): | 226 | def pre_flight_checks(self): |
223 | # See #52, this key no longer passes some server-side check | 227 | # See #52, this key no longer passes some server-side check |
224 | if self.client.partner_user == "iphone": | 228 | if self.client.partner_user == "iphone": |
225 | Screen.print_error(( | 229 | self.screen.print_error(( |
226 | "The `iphone` partner key set is no longer compatible with " | 230 | "The `iphone` partner key set is no longer compatible with " |
227 | "pydora. Please re-run pydora-configure to re-generate " | 231 | "pydora. Please re-run pydora-configure to re-generate " |
228 | "your config file before continuing.")) | 232 | "your config file before continuing.")) |