/[projects]/misc/xbmc/plugin.video.todic/default.py
ViewVC logotype

Diff of /misc/xbmc/plugin.video.todic/default.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1631 by torben, Sun Nov 27 12:37:43 2011 UTC revision 1814 by torben, Tue Jul 24 18:21:04 2012 UTC
# Line 1  Line 1 
1    
2    # This Python file uses the following encoding: utf-8
3    
4  '''  '''
5      Todic plugin for XBMC      Todic plugin for XBMC
6      Version 0.0.2      Version 0.0.2
# Line 5  Line 8 
8    
9  import sys  import sys
10  import cgi as urlparse  import cgi as urlparse
11    import os
12    
13    
14  import xbmc  import xbmc
15  import xbmcaddon  import xbmcaddon
16  import xbmcgui  import xbmcgui
17  import xbmcplugin  import xbmcplugin
18  import urllib  import urllib
19  import urllib2, re  import urllib2
20    
21    from xml.dom.minidom import parseString
22    
23  __addon__ = xbmcaddon.Addon(id='plugin.video.todic')  __addon__ = xbmcaddon.Addon(id='plugin.video.todic')
24  __key__ = __addon__.getSetting('xbmckey').lower()  __key__ = __addon__.getSetting('xbmckey').lower()
25  __backend__ = "http://todic.dk/xbmc.php?xbmckey=" + __key__  __backend__ = "http://todic.dk/xbmc.php?xbmckey=" + __key__
26    fanartImage = os.path.join(__addon__.getAddonInfo('path'), 'fanart.jpg')
27    
28    
29    class TodicPlayer(xbmc.Player):
30            def __init__(self, *args, **kwargs):
31                    #xbmc.Player.__init__(selv,*args,**kwargs)
32                    xbmc.Player.__init__(self, xbmc.PLAYER_CORE_MPLAYER )
33                    self.stopped = False
34                    self.started = False
35                    print "[TodicPlayer] init"
36    
37    #       @catchall      
38            def onPlayBackStarted(self):
39                    self.started = True
40                    print "[TodicPlayer] : started"
41    #               super.onPlayBackStarted()
42    
43            def onPlayBackStopped(self):
44                    self.stopped = True
45                    print "[TodicPlayer] : stopped"
46    
47            def onPlayBackEnded(self):
48                    self.stopped = True
49                    print "[TodicPlayer] : ended"
50    
51            def callbackLoop(self):
52                    print "[Todic] startLoop"
53                    while (self.stopped == False):
54                            if (self.started == True ):
55                                    print "[todic] " + str(self.getTime())
56                            xbmc.sleep(5000)
57                            
58    
59    def getText2(nodelist):
60            rc = []
61            for node in nodelist:
62                    if node.nodeType == node.TEXT_NODE:
63                            rc.append(node.data)
64                    else:
65                            rc.append( getText(node.childNodes) )
66            return ''.join(rc)
67    
68    def getText(nodelist):
69            if nodelist.length == 0:
70                    return ''
71            else:
72                    if nodelist[0].childNodes.length == 0:
73                            return ''
74                    else:
75                            return nodelist[0].childNodes[0].nodeValue
76    
77    
78  def open_url(url):  def open_url(url):
79          req = urllib2.Request(url)          req = urllib2.Request(url)
# Line 25  def open_url(url): Line 83  def open_url(url):
83          return data          return data
84    
85  def rootMenu():  def rootMenu():
86          link = open_url(__backend__)  
87          m=re.compile('<title>(.+?)</title><url>(.+?)</url>').findall(link)          msg = open_url(__backend__ + "&action=messages")
88          l = len(m)          msg = msg.strip()
89          for name,url in m:  
90                  listitem = xbmcgui.ListItem(label = name, iconImage = 'DefaultFolder.png', thumbnailImage = 'DefaultFolder.png')          if msg != "":
91                  u = sys.argv[0] + "?mode=1&name=" + urllib.quote_plus(name) + "&url=" + urllib.quote_plus(url)                  dialog = xbmcgui.Dialog()              
92                  ok = xbmcplugin.addDirectoryItem(handle = int(sys.argv[1]), url = u, listitem = listitem, isFolder = True, totalItems = l)                  dialog.ok('XBMC Todic', msg)
93    
94          listitem = xbmcgui.ListItem(label = "Søg ...", iconImage = 'DefaultFolder.png', thumbnailImage = 'DefaultFolder.png')          buildList(__backend__, "", False) # call default list
95          u = sys.argv[0] + "?mode=10&name=" + urllib.quote_plus(name)  
96          ok = xbmcplugin.addDirectoryItem(handle = int(sys.argv[1]), url = u, listitem = listitem, isFolder = True, totalItems = l)          # Adde xtra items to root menu
97            listitem = xbmcgui.ListItem(label = "Søg film ...", iconImage = 'DefaultFolder.png', thumbnailImage = 'DefaultFolder.png')
98            listitem.setProperty('Fanart_Image', fanartImage)
99    
100            u = sys.argv[0] + "?mode=10&name="
101            ok = xbmcplugin.addDirectoryItem(handle = int(sys.argv[1]), url = u, listitem = listitem, isFolder = True)
102    
103          xbmcplugin.endOfDirectory(int(sys.argv[1]))          xbmcplugin.endOfDirectory(int(sys.argv[1]))
104    
105    
106  def buildList(url,title):  def buildList(url,title, endlist=True):
107          print '[TODIC]:'+str(url)                  print '[TODIC]:'+str(url)        
108    
109          link = open_url(url)          link = open_url(url)
110          ty=re.compile('<meta type=\'(.+?)\'').findall(link)          doc = parseString(link)
111          print '[TOD]'+str(ty[0])          ty = doc.getElementsByTagName("meta")[0].getAttribute("type")
112          m=re.compile('<title>(.+?)</title><url>(.+?)</url><cover>(.+?)</cover>').findall(link)          print '[TODIC]'+str(ty)
113          l=len(m)  
114          for name,url,thumb in m:          if ty == 'clipList':
115                  if ty[0] == 'clipList':                  mode = '50'
116                          mode = '50'                  folder = False
117                          folder = False          else:
118                  else:                  mode = '1'
119                          mode = '2'                  folder = True
120                          folder = True  
121                                    entries = doc.getElementsByTagName("entry")
122                  listitem = xbmcgui.ListItem(label = name, iconImage = 'DefaultFolder.png', thumbnailImage = thumb)          l=len(entries)
123                  u = sys.argv[0] + "?mode=" + urllib.quote_plus(mode) + "&name=" + urllib.quote_plus(name) + "&url=" + urllib.quote_plus(url)          description = ''
124            for entry in entries:
125                    name =  getText( entry.getElementsByTagName("title") )
126                    url =  getText( entry.getElementsByTagName("url") )
127                    thumb = getText( entry.getElementsByTagName("cover") )
128                    description = getText( entry.getElementsByTagName("description") )
129    
130                    name = name.encode('latin-1')
131                    description = description.encode('latin-1')
132    
133    ##              print "name:" + name
134    #               print "url:" + url
135    #               print "thumb:" + thumb
136    #               print "description:" + description
137    
138    
139                    listitem = xbmcgui.ListItem(label = name, label2='test', iconImage = 'DefaultFolder.png', thumbnailImage = thumb)
140                    listitem.setProperty('Fanart_Image', fanartImage)
141                    if mode == '50':
142                            infoLabels = {}
143                            infoLabels['title'] = name
144                            infoLabels['plot'] = description        
145                            listitem.setInfo('video', infoLabels)
146    
147                    u = sys.argv[0] + "?mode=" + urllib.quote(mode) + "&name=" + urllib.quote(name) + "&url=" + urllib.quote(url)
148                  ok = xbmcplugin.addDirectoryItem(handle = int(sys.argv[1]), url = u, listitem = listitem, isFolder = folder, totalItems = l)                  ok = xbmcplugin.addDirectoryItem(handle = int(sys.argv[1]), url = u, listitem = listitem, isFolder = folder, totalItems = l)
         xbmcplugin.endOfDirectory(int(sys.argv[1]))  
149    
150  def buildSubList(url,title):          if (endlist == True):  
151          print '[TODIC]:'+str(url)                  xbmcplugin.endOfDirectory(int(sys.argv[1]))
152          link = open_url(url)  
         m=re.compile('<title>(.+?)</title><url>(.+?)</url><cover>(.+?)</cover>').findall(link)  
         l = len(m)  
         for name,url,thumb in m:  
                 listitem = xbmcgui.ListItem(label = name, iconImage = 'DefaultFolder.png', thumbnailImage = thumb)  
                 u = sys.argv[0] + "?mode=50&name=" + urllib.quote_plus(name) + "&url=" + urllib.quote_plus(url)  
                 ok = xbmcplugin.addDirectoryItem(handle = int(sys.argv[1]), url = u, listitem = listitem, isFolder = False, totalItems = l)  
         xbmcplugin.endOfDirectory(int(sys.argv[1]))  
153    
154    
155    
156  def play_video(url, name):  def play_video(url, name):
157          link = open_url(url)          xml = open_url(url)
158          match=re.compile('<url>(.+?)</url>').findall(link)  
159          url = match[0]          doc = parseString(xml)
160            url = getText( doc.getElementsByTagName("url") )
161    
162          print '[TODIC]:'+str(url)          print '[TODIC]:'+str(url)
163          image = xbmc.getInfoImage( 'ListItem.Thumb' )          image = xbmc.getInfoImage( 'ListItem.Thumb' )
164          listitem = xbmcgui.ListItem(label = name , iconImage = 'DefaultVideo.png', thumbnailImage = image)          listitem = xbmcgui.ListItem(label = name , iconImage = 'DefaultVideo.png', thumbnailImage = image)
 #       listitem = xbmcgui.ListItem(label = name , iconImage = 'DefaultVideo.png', thumbnailImage = 'DefaultVideo.png')  
165          listitem.setInfo( type = "Video", infoLabels={ "Title": name } )          listitem.setInfo( type = "Video", infoLabels={ "Title": name } )
166          xbmc.Player(xbmc.PLAYER_CORE_AUTO).play(str(url), listitem)  
167          xbmc.sleep(200)          player = TodicPlayer(xbmc.PLAYER_CORE_AUTO)
168            player.play(str(url), listitem)
169    #       player.callbackLoop()
170    
171    
172    
173  def search():  def search():
174          search = getUserInput("Todic Søgning")          search = getUserInput("Todic Søgning")
175    
176          url = __backend__ + "&action=search&search=" + urllib.quote_plus(search)          if (search != None and search != ""):
177                    url = __backend__ + "&action=search&search=" + urllib.quote_plus(search)
178    
179          print "[TODIC] Search start: " + search                  #print "[TODIC] Search start: " + search
180          print "[TODIC] Search url: " + url                  #print "[TODIC] Search url: " + url
181    
182          buildSubList(url, "søgning")                  buildList(url, "søgning")
183    
184                    
185    
# Line 141  def get_params(): Line 227  def get_params():
227                                  param[splitparams[0]]=splitparams[1]                                                                      param[splitparams[0]]=splitparams[1]                                    
228          return param          return param
229    
 params = get_params()  
 url = None  
 name = None  
 mode = None  
230    
231  params = get_params()  params = get_params()
232  url = None  url = None
# Line 164  try: Line 246  try:
246  except:  except:
247          pass          pass
248    
249    if url == 'refresh':
250            xbmc.output("[tvserver] Container.Refresh")
251            xbmc.executebuiltin("Container.Refresh")
252            
253    
254  if mode == None:  elif mode == None:
255          #build main menu          #build main menu
256          rootMenu()          rootMenu()
257                
# Line 173  elif mode == 1: Line 259  elif mode == 1:
259          #build list of movie starting letters          #build list of movie starting letters
260          buildList(url, name)          buildList(url, name)
261    
 elif mode == 2:  
         #build list of series          
         buildSubList(url, name)  
   
262  elif mode == 10:  elif mode == 10:
263          search()          search()
264                    
# Line 186  elif mode == 50: Line 268  elif mode == 50:
268    
269    
270    
 xbmcplugin.endOfDirectory(int(sys.argv[1]))  
271    

Legend:
Removed from v.1631  
changed lines
  Added in v.1814

  ViewVC Help
Powered by ViewVC 1.1.20