[efbf07]: service.dbus.notify / xbmcnotify.py  Maximize  Restore  History

Download this file

66 lines (54 with data), 2.4 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
'''
D-Bus notification service for XBMC
Copyright (C) 2011 Team XBMC
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
'''
import xbmc
import dbus
try:
from gi.repository import Notify
except ImportError:
Notify = None
class Service(xbmc.Player):
def __init__(self):
xbmc.Player.__init__(self)
if Notify is None:
self.bus = dbus.SessionBus(private=True)
self.notify = self.bus.get_object("org.freedesktop.Notifications", "/org/freedesktop/Notifications")
self.notify = dbus.Interface(self.notify, "org.freedesktop.Notifications")
self.notifyid = 0
else:
Notify.init("XBMC Notifier")
def onPlayBackStarted(self):
xbmc.sleep(100)
if self.isPlaying():
self.showNotification()
def onSkipNext(self, notification=None, action=None, data=None):
self.playnext()
def showNotification(self):
if self.isPlayingAudio():
icon = "file://%s" % xbmc.translatePath(xbmc.getInfoImage("MusicPlayer.Cover"))
summary = xbmc.getInfoLabel("MusicPlayer.Artist")
body = xbmc.getInfoLabel("MusicPlayer.Title") + "\n" + xbmc.getInfoLabel("MusicPlayer.Album")
elif self.isPlayingVideo():
icon = "file://%s" % xbmc.translatePath(xbmc.getInfoImage("VideoPlayer.Cover"))
summary = xbmc.getInfoLabel("VideoPlayer.Title")
body = xbmc.getInfoLabel("VideoPlayer.Genre")
else:
return False
if not xbmc.getCondVisibility("System.IsFullScreen"):
if Notify is None:
self.notifyid = self.notify.Notify("XBMC Media Center", self.notifyid, icon, summary, body, [], {}, 5000)
else:
self.notify = Notify.Notification.new(summary, body, icon)
self.notify.add_action("playnext", 'Skip this item', self.onSkipNext, None, None)
self.notify.show()