| | 63 | |
| | 64 | ## Banshee |
| | 65 | banshee_bus = dbus.SessionBus() |
| | 66 | dubus = banshee_bus.get_object('org.freedesktop.DBus', '/org/freedesktop/dbus') |
| | 67 | self.dubus_methods = dbus.Interface(dubus, 'org.freedesktop.DBus') |
| | 68 | if self.dubus_methods.NameHasOwner('org.gnome.Banshee'): |
| | 69 | self._get_banshee_bus() |
| | 70 | # Otherwise, it opens Banshee! |
| | 71 | self.banshee_props ={} |
| | 72 | self.current_banshee_title = '' |
| | 73 | gobject.timeout_add(1000, self._banshee_check_track_status) |
| | 74 | |
| | 75 | def _get_banshee_bus(self): |
| | 76 | bus = dbus.SessionBus() |
| | 77 | banshee = bus.get_object('org.gnome.Banshee', '/org/gnome/Banshee/Player') |
| | 78 | self.banshee_methods = dbus.Interface(banshee, 'org.gnome.Banshee.Core') |
| | 126 | |
| | 127 | def _banshee_check_track_status(self): |
| | 128 | if self.dubus_methods.NameHasOwner('org.gnome.Banshee') and \ |
| | 129 | not hasattr(self, 'banshee_methods'): |
| | 130 | self._get_banshee_bus() |
| | 131 | |
| | 132 | if self.dubus_methods.NameHasOwner('org.gnome.Banshee'): |
| | 133 | self.banshee_props['title'] = self.banshee_methods.GetPlayingTitle() |
| | 134 | self.banshee_props['album'] = self.banshee_methods.GetPlayingAlbum() |
| | 135 | self.banshee_props['artist'] = self.banshee_methods.GetPlayingArtist() |
| | 136 | self.banshee_props['duration'] = \ |
| | 137 | self.banshee_methods.GetPlayingDuration() |
| | 138 | info = self._banshee_properties_extract(self.banshee_props) |
| | 139 | if self.current_banshee_title != self.banshee_props['title']: |
| | 140 | self.emit('music-track-changed', info) |
| | 141 | self.current_banshee_title = self.banshee_props['title'] |
| | 142 | return 1 |
| | 143 | |
| | 144 | def _banshee_music_track_change_cb(self, arg): |
| | 145 | info = self._banshee_properties_extract(arg) |
| | 146 | self.emit('music-track-changed', info) |
| | 147 | |
| | 148 | def _banshee_properties_extract(self, props): |
| | 149 | info = MusicTrackInfo() |
| | 150 | info.title = props['title'] |
| | 151 | info.album = props['album'] |
| | 152 | info.artist = props['artist'] |
| | 153 | info.duration = int(props['duration']) |
| | 154 | return info |