| | 98 | ## MPD |
| | 99 | try: |
| | 100 | import mpd |
| | 101 | self.mpdclient = mpd.MPDClient() |
| | 102 | self.mpd_host = 'localhost' |
| | 103 | self.mpd_port = 6600 |
| | 104 | if os.environ.has_key('MPD_HOST'): |
| | 105 | self.mpd_host = os.environ['MPD_HOST'] |
| | 106 | if os.environ.has_key('MPD_PORT'): |
| | 107 | self.mpd_port = os.environ['MPD_PORT'] |
| | 108 | self.mpdclient.connect(self.mpd_host, self.mpd_port) |
| | 109 | self.mpd_exists = True |
| | 110 | self.mpd_is_here = True |
| | 111 | self.mpd_current_song = None |
| | 112 | self.mpd_paused_before = False |
| | 113 | gobject.timeout_add_seconds(10, self._mpd_check_status) |
| | 114 | gobject.timeout_add_seconds(1, self._mpd_check_track_status) |
| | 115 | except: |
| | 116 | self.mpd_exists = False |
| | 117 | self.mpd_is_here = False |
| | 118 | |
| | 265 | def _mpd_check_status(self): |
| | 266 | if self.mpd_exists is True: |
| | 267 | try: |
| | 268 | self.mpdclient.status() |
| | 269 | self.mpd_is_here = True |
| | 270 | except: |
| | 271 | try: |
| | 272 | self.mpdclient.disconnect() |
| | 273 | self.mpdclient.connect(self.mpd_host, self.mpd_port) |
| | 274 | self.mpd_is_here = True |
| | 275 | except: |
| | 276 | self.mpd_is_here = False |
| | 277 | return True |
| | 278 | |
| | 279 | def _mpd_check_track_status(self): |
| | 280 | if not self.mpd_is_here: |
| | 281 | return |
| | 282 | |
| | 283 | try: |
| | 284 | self.mpd_song = self.mpdclient.currentsong() |
| | 285 | if self.mpdclient.status()['state'] == 'pause': |
| | 286 | self.mpd_paused = 0 |
| | 287 | else: |
| | 288 | self.mpd_paused = 1 |
| | 289 | |
| | 290 | info = MusicTrackInfo() |
| | 291 | info.title = self.mpd_song['title'] |
| | 292 | info.album = self.mpd_song['album'] |
| | 293 | info.artist = self.mpd_song['artist'] |
| | 294 | info.duration = self.mpd_song['time'] |
| | 295 | info.track_number = self.mpd_song['track'] |
| | 296 | info.paused = self.mpd_paused |
| | 297 | except: |
| | 298 | info = None |
| | 299 | self.mpd_paused = 0 |
| | 300 | self.mpd_is_here = False |
| | 301 | |
| | 302 | if self.mpd_current_song != self.mpd_song: |
| | 303 | self.emit('music-track-changed', info) |
| | 304 | self.mpd_current_song = self.mpd_song |
| | 305 | if self.mpd_paused == 1 and self.mpd_paused_before == False: |
| | 306 | self.emit('music-track-changed', info) |
| | 307 | self.mpd_paused_before = True |
| | 308 | elif self.mpd_paused == 0 and self.mpd_paused_before == True: |
| | 309 | self.emit('music-track-changed', info) |
| | 310 | self.mpd_paused_before = False |
| | 311 | return True |
| | 312 | |