updated on Thu Jan 26 00:18:00 UTC 2012
[aur-mirror.git] / gajim-notify-osd-mpd / mpd.patch
blob574e36943dc42b6411d0dd984e800a83be9b11f3
1 diff --git a/src/music_track_listener.py b/src/music_track_listener.py
2 index f9237f9..803c47e 100644
3 --- src/music_track_listener.py
4 +++ src/music_track_listener.py
5 @@ -98,6 +98,40 @@ class MusicTrackListener(gobject.GObject):
6 'NameOwnerChanged', 'org.freedesktop.DBus',
7 arg0='net.sacredchao.QuodLibet')
9 + ## MPD
10 + try:
11 + import mpd
12 + import os
13 + self.mpdclient = mpd.MPDClient()
14 + self.mpd_host = 'localhost'
15 + self.mpd_port = 6600
16 + self.mpd_pass = None
17 + if os.environ.has_key('MPD_HOST'):
18 + passNhost = os.environ['MPD_HOST'].split('@')
19 + if len(passNhost) == 2:
20 + self.mpd_pass = passNhost[0]
21 + self.mpd_host = passNhost[1]
22 + else:
23 + self.mpd_host = passNhost[0]
24 + if os.environ.has_key('MPD_PORT'):
25 + self.mpd_port = os.environ['MPD_PORT']
26 + self.mpdclient.connect(self.mpd_host, self.mpd_port)
27 + if self.mpd_pass is not None:
28 + self.mpdclient.password(self.mpd_pass)
29 + if self.mpdclient.status()['state'] in ['pause', 'stop']:
30 + self.mpd_paused = 0
31 + else:
32 + self.mpd_paused = 1
33 + self.mpd_paused_before = self.mpd_paused
34 + self.mpd_exists = True
35 + self.mpd_is_here = True
36 + self.mpd_current_song = None
37 + gobject.timeout_add_seconds(10, self._mpd_check_status)
38 + gobject.timeout_add_seconds(2, self._mpd_check_track_status)
39 + except:
40 + self.mpd_exists = False
41 + self.mpd_is_here = False
43 def _player_name_owner_changed(self, name, old, new):
44 if not new:
45 self.emit('music-track-changed', None)
46 @@ -196,6 +230,67 @@ class MusicTrackListener(gobject.GObject):
47 info.duration = int(props.get('~#length', 0))
48 return info
50 + def _mpd_check_status(self):
51 + if self.mpd_exists is True:
52 + try:
53 + self.mpdclient.status()
54 + self.mpd_is_here = True
55 + except:
56 + try:
57 + self.mpdclient.disconnect()
58 + self.mpdclient.connect(self.mpd_host, self.mpd_port)
59 + if self.mpd_pass is not None:
60 + self.mpdclient.password(self.mpd_pass)
61 + self.mpd_is_here = True
62 + except:
63 + self.mpd_is_here = False
64 + return True
66 + def _mpd_check_track_status(self):
67 + if not self.mpd_is_here:
68 + return
70 + try:
71 + self.mpd_song = self.mpdclient.currentsong()
72 + info = MusicTrackInfo()
73 + if self.mpdclient.status()['state'] in ['pause', 'stop']:
74 + self.mpd_paused = 0
75 + else:
76 + self.mpd_paused = 1
77 + if self.mpd_song.has_key('title'):
78 + info.title = self.mpd_song['title']
79 + else:
80 + info.title = ''
81 + if self.mpd_song.has_key('album'):
82 + info.album = self.mpd_song['album']
83 + else:
84 + info.album = ''
85 + if self.mpd_song.has_key('artist'):
86 + info.artist = self.mpd_song['artist']
87 + else:
88 + info.artist = ''
89 + if self.mpd_song.has_key('time'):
90 + info.duration = self.mpd_song['time']
91 + else:
92 + info.duration = ''
93 + if self.mpd_song.has_key('track'):
94 + info.track_number = self.mpd_song['track']
95 + else:
96 + info.track_number = ''
98 + info.paused = self.mpd_paused
99 + except:
100 + info = None
101 + self.mpd_is_here = False
103 + if self.mpd_current_song != self.mpd_song:
104 + self.emit('music-track-changed', info)
105 + self.mpd_current_song = self.mpd_song
106 + if self.mpd_paused != self.mpd_paused_before:
107 + self.emit('music-track-changed', info)
108 + self.mpd_paused_before = self.mpd_paused
109 + return True
111 def get_playing_track(self):
112 '''Return a MusicTrackInfo for the currently playing
113 song, or None if no song is playing'''