1
2
3
4
5
6
7
8
9
10
11 import os
12 import dbus
13 import string
14 import gobject
15 import urllib
16 from GenericPlayer import GenericAPI
17
19 __name__ = 'Banshee API'
20 __version__ = '0.0'
21 __author__ = 'Whise and vrunner'
22 __desc__ = 'API to the Banshee Music Player'
23
24 ns = "org.gnome.Banshee"
25 iroot = "/org/gnome/Banshee/Player"
26 iface = "org.gnome.Banshee.Core"
27 playerAPI = None
28
29 __timeout = None
30 __interval = 2
31
32 callbackFn = None
33 __curplaying = None
34
35
36
39
41 if self.ns in dbus_iface.ListNames(): return True
42 else:
43 self.ns = "org.bansheeproject.Banshee"
44 self.iroot = "/org/bansheeproject/Banshee/PlayerEngine"
45 self.iface = "org.bansheeproject.Banshee.PlayerEngine"
46 if self.ns in dbus_iface.ListNames(): return True
47 else:return False
48
52
54 try:
55 return self.playerAPI.GetPlayingTitle()
56
57 except:
58 return self.playerAPI.GetCurrentTrack()['name']
59
61 try:
62 return self.playerAPI.GetPlayingAlbum()
63
64 except:
65 return self.playerAPI.GetCurrentTrack()['album']
66
68 try:
69 return self.playerAPI.GetPlayingArtist()
70
71 except:
72 return self.playerAPI.GetCurrentTrack()['artist']
73
75 try:
76 return self.playerAPI.GetPlayingCoverUri()
77 except:
78
79 t = self.playerAPI.GetCurrentUri().replace('file://','')
80 t = urllib.unquote(unicode.encode(t, 'utf-8'))
81 t = t.split('/')
82 basePath = ''
83 for l in t:
84 if l.find('.') == -1:
85 basePath = basePath + l +'/'
86
87 names = ['Album', 'Cover', 'Folde']
88 for x in os.listdir(basePath):
89 if os.path.splitext(x)[1] in [".jpg", ".png"] and (x.capitalize()[:5] in names):
90 coverFile = basePath + x
91 return coverFile
92
94 try:
95 if self.playerAPI.GetPlayingStatus() == 1: return True
96 else: return False
97 except:
98 if self.playerAPI.GetCurrentState() == 'playing':return True
99 else: return False
100
101
104
106 try:
107 self.playerAPI.Next()
108 except: os.system(' banshee-1 --next &')
109
111 try:
112 self.playerAPI.Previous()
113 except: os.system(' banshee-1 --previous &')
114
121
141