Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import cgi
- import os
- import sys
- #import OpenSSL
- import urllib
- import urllib2
- import urlparse
- import threading
- import uuid
- import xbmc
- import xbmcaddon
- import xbmcgui
- import xbmcplugin
- import socket
- from pyxbmct.addonwindow import *
- from threading import Thread
- from time import sleep
- version="[VERSION_25]"
- # ===================== GET GLOBAL DATA ========================================
- addon_handle = int(sys.argv[1])
- args = urlparse.parse_qs(sys.argv[2][1:])
- ADDON = xbmcaddon.Addon('plugin.video.tamiliptv')
- # ----------------- GET IP ADDRESS ---------------------------------------------
- urlIp = "http://www.tamiliptv.tv/tv_episodes/system/1.0/framework.php?view_name=roku_interface&action=getIpAddress"
- hdr = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
- 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
- 'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
- 'Accept-Encoding': 'none',
- 'Accept-Language': 'en-US,en;q=0.8',
- 'Connection': 'keep-alive'}
- req = urllib2.Request(urlIp, headers=hdr)
- proxy_handler = urllib2.ProxyHandler({})
- opener = urllib2.build_opener(proxy_handler)
- r = opener.open(req)
- ipAddress = the_page = r.read()
- mySessionID = args.get('sessionID', uuid.uuid1().hex)
- if (type(mySessionID) is list):
- mySessionID = mySessionID[0]
- myMemberID = args.get('memberID', '0')[0]
- #-------------------------------------------------------------------------------
- ACTION_PREVIOUS_MENU = 10
- ACTION_NAV_BACK = 92
- ACTION_MOUSE_MOVE = 107
- ACTION_MOVE_UP = 3
- ACTION_MOVE_DOWN = 4
- #===============================================================================
- # ===================== COMMON ROUTINES ========================================
- #===============================================================================
- def build_url(query):
- query['memberID'] = myMemberID
- query['sessionID'] = mySessionID
- return sys.argv[0] + '?' + urllib.urlencode(query)
- #-------------------------------------------------------------------------------
- def RequestURL(param):
- proxy_handler = urllib2.ProxyHandler({})
- opener = urllib2.build_opener(proxy_handler)
- url = "http://www.tamiliptv.tv/tv_episodes/system/1.0/framework.php?view_name=roku_interface&deviceID=XBMC_" + str(mySessionID) +"&userID=" + str(myMemberID) + str(param)
- hdr = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
- 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
- 'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
- 'Accept-Encoding': 'none',
- 'Accept-Language': 'en-US,en;q=0.8',
- 'Connection': 'keep-alive'}
- print (' URL==> ' + url)
- req = urllib2.Request(url, headers=hdr)
- r = opener.open(req)
- the_page = r.read()
- return the_page
- #-------------------------------------------------------------------------------
- def InitHistory():
- programPath = xbmcaddon.Addon().getAddonInfo('path')
- f = open(os.path.abspath(programPath + "/tamiliptv_history.txt"), 'w')
- f.close()
- #-------------------------------------------------------------------------------
- def SaveUsername(u, p):
- programPath = xbmcaddon.Addon().getAddonInfo('path')
- f = open(os.path.abspath(programPath + "/tamiliptv_history.dat"), 'w')
- f.write(u + "," + p)
- f.close()
- #-------------------------------------------------------------------------------
- def GetUsername():
- up = ","
- programPath = xbmcaddon.Addon().getAddonInfo('path')
- fullPath = os.path.abspath(programPath + "/tamiliptv_history.dat")
- if (os.path.exists(fullPath)):
- f = open(fullPath, 'r')
- up = f.readline()
- f.close()
- return up
- #-------------------------------------------------------------------------------
- def SetViewType():
- skin_used = xbmc.getSkinDir()
- if skin_used == 'skin.confluence':
- xbmc.executebuiltin('Container.SetViewMode(500)') # "Thumbnail" view
- elif skin_used == 'skin.aeon.nox':
- xbmc.executebuiltin('Container.SetViewMode(512)') # "info-wall" view.
- elif skin_used == 'skin.confluence-vertical':
- xbmc.executebuiltin('Container.SetViewMode(500)') # "Thumbnail" view.
- elif skin_used == 'skin.jx720':
- xbmc.executebuiltin('Container.SetViewMode(52)') # "Thumbnail" view.
- elif skin_used == 'skin.pm3-hd':
- xbmc.executebuiltin('Container.SetViewMode(53)') # "Thumbnail" view.
- elif skin_used == 'skin.rapier':
- xbmc.executebuiltin('Container.SetViewMode(50)') # "Thumbnail" view.
- elif skin_used == 'skin.simplicity':
- xbmc.executebuiltin('Container.SetViewMode(500)') # "Thumbnail" view.
- elif skin_used == 'skin.slik':
- xbmc.executebuiltin('Container.SetViewMode(53)') # "Thumbnail" view.
- elif skin_used == 'skin.touched':
- xbmc.executebuiltin('Container.SetViewMode(500)') # "Thumbnail" view.
- elif skin_used == 'skin.transparency':
- xbmc.executebuiltin('Container.SetViewMode(53)') # "Thumbnail" view.
- elif skin_used == 'skin.xeebo':
- xbmc.executebuiltin('Container.SetViewMode(55)') # "Thumbnail" view.
- else:
- xbmc.executebuiltin('Container.SetViewMode(500)')
- #===============================================================================
- # ===================== COMMON CLASSES =========================================
- #===============================================================================
- class login(AddonDialogWindow):
- memberId = 0
- sessionID = 0
- def __init__(self, title=''):
- super(login, self).__init__(title)
- screenx = self.getWidth()
- screeny = self.getHeight()
- self.setGeometry(700, 300, 16, 7)
- self.connect(ACTION_NAV_BACK, self.close)
- up = GetUsername().split(",")
- #----------------------------------------------------------------------
- username_label = Label('Username')
- self.placeControl(username_label, 2, 1, 3, 2)
- self.usernameText = Edit('Username','font15')
- self.placeControl(self.usernameText, 2, 3, 3, 3)
- self.usernameText.setText(up[0])
- #----------------------------------------------------------------------
- password_label = Label('Password')
- self.placeControl(password_label, 7, 1, 3, 2)
- self.passwordText = Edit('Password','font16','0xFFFFFFFF',isPassword=1)
- self.placeControl(self.passwordText, 7, 3, 3, 3)
- self.passwordText.setText(up[1])
- #----------------------------------------------------------------------
- self.button0 = Button("Login")
- self.placeControl(self.button0, 12, 1, 3, 2)
- self.button1 = Button("Cancel")
- self.placeControl(self.button1, 12, 4, 3, 2)
- #----------------------------------------------------------------------
- self.set_navigation()
- #-------------------------------------------------------------------------------
- def set_navigation(self):
- self.usernameText.controlUp(self.button1)
- self.usernameText.controlDown(self.passwordText)
- self.passwordText.controlUp(self.usernameText)
- self.passwordText.controlDown(self.button0)
- self.button0.controlUp(self.passwordText)
- self.button0.controlDown(self.button1)
- self.button1.controlUp(self.button0)
- self.button1.controlDown(self.usernameText)
- # Set initial focus
- self.setFocus(self.usernameText)
- #-------------------------------------------------------------------------------
- def RequestId(self, param):
- proxy_handler = urllib2.ProxyHandler({})
- opener = urllib2.build_opener(proxy_handler)
- myUrl = "http://www.tamiliptv.tv/roku/members/connect/?deviceID=XBMC_" + self.sessionID +"_"+ipAddress + param
- hdr = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
- 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
- 'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
- 'Accept-Encoding': 'none',
- 'Accept-Language': 'en-US,en;q=0.8',
- 'Connection': 'keep-alive'}
- req = urllib2.Request(myUrl, headers=hdr)
- r = opener.open(req)
- the_page = r.read()
- #print myUrl
- #print the_page
- return the_page
- #-------------------------------------------------------------------------------
- def onControl(self, control):
- if control == self.button0:
- userId = self.RequestId("&username=" + self.usernameText.getText() + "&password=" + self.passwordText.getText())
- if (int(userId) == 0):
- dialog = xbmcgui.Dialog()
- dialog.ok(" Error ! ", " The user name or password is incorrect ")
- elif (int(userId) == -10):
- dialog = xbmcgui.Dialog()
- dialog.ok(" Error ! ", " Multiple connections are not allowed ")
- else:
- SaveUsername(self.usernameText.getText(), self.passwordText.getText())
- programPath = xbmcaddon.Addon().getAddonInfo('path')
- f = open(os.path.abspath(programPath + "/tamiliptv_history.txt"), 'w')
- f.write(self.sessionID + "_" + ipAddress + ':' + userId)
- f.close()
- ADDON.setSetting('sessionUsernameText',self.usernameText.getText())
- ADDON.setSetting('sessionPasswordText',self.passwordText.getText())
- self.memberId = int(userId)
- self.close()
- if control == self.button1:
- self.close()
- #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- #+++++++++++++++++++++++ END OF CLASS ++++++++++++++++++++++++++++++++++++++++
- #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- def Login():
- mydisplay = login("TamilipTv Login")
- mydisplay.sessionID = mySessionID
- mydisplay.doModal()
- uid = mydisplay.memberId
- del mydisplay
- return uid
- #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- #+++++++++++++++++++++++ END OF CLASS ++++++++++++++++++++++++++++++++++++++++
- #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- def OpenCatchupTimeBox(st,indexOfServer,pid):
- global startTime
- global indexServer
- global tsList
- global dataStr
- global gPid
- global UP
- global DOWN
- UP = 0
- DOWN = 1
- tsList = ['','','','','','','']
- dataStr = ['','','']
- startTime = st
- indexServer = indexOfServer
- gPid = pid
- if( indexServer != '' ):
- startTime1 = startTime.replace(" ", "%20");
- argument = str("&action=GetTimeDiff&rtm="+ startTime1)
- response = RequestURL(argument)
- responseArray = response.split('^')
- newResponseArray = []
- for dt in responseArray:
- newResponseArray.append(dt)
- tsList.append([])
- tsList0 = newResponseArray[0].replace('|',',')
- ts0 = tsList0.split(",")
- tsList[0] = []
- for i in ts0: tsList[0].append( i )
- tsList1 = newResponseArray[1].replace('|',',')
- ts1 = tsList1.split(",")
- tsList[1] = []
- for j in ts1: tsList[1].append( j )
- tsList2 = newResponseArray[2].replace('|',',')
- ts2 = tsList2.split(",")
- tsList[2] = []
- for k in ts2: tsList[2].append( k )
- tsList3 = newResponseArray[3].replace('|',',')
- ts3 = tsList3.split(",")
- tsList[3] = []
- for l in ts3: tsList[3].append( l )
- tsList4 = newResponseArray[4].replace('|',',')
- ts4 = tsList4.split(",")
- tsList[4] = []
- for m in ts4: tsList[4].append( m )
- tsList5 = newResponseArray[5].replace('|',',')
- ts5 = tsList5.split(",")
- tsList[5] = []
- for n in ts5: tsList[5].append( n )
- tsList6 = newResponseArray[6].replace('|',',')
- ts6 = tsList6.split(",")
- tsList[6] = []
- for o in ts6: tsList[6].append( o )
- dataStr[0] = tsList[2][0]
- dataStr[1] = tsList[1][0]
- dataStr[2] = tsList[0][0]
- catchdisplay = openCatchupTimeBox("You can view Recorded stream from")
- catchdisplay.doModal()
- urlCatch = catchdisplay.catchupUrl
- del catchdisplay
- return urlCatch
- class openCatchupTimeBox(AddonDialogWindow):
- catchupUrl = ''
- def __init__(self, title=''):
- super(openCatchupTimeBox, self).__init__(title)
- screenx = self.getWidth()
- screeny = self.getHeight()
- self.setGeometry(800,500, 16, 7)
- self.connect(ACTION_NAV_BACK, self.close)
- label = Label(startTime, alignment=ALIGN_CENTER)
- self.placeControl(label,1, 1, 3, 5)
- #----------- Day Start ------------------
- day_label = Label('Day')
- self.placeControl(day_label,4,0)
- self.dayTb = Edit('Day','font15',disabledColor='0xFFFFFF00')
- self.placeControl(self.dayTb,6,0,2,2)
- self.dayTb.setText( dataStr[0] )
- self.dayTb.setEnabled(False)
- self.dayUp = Button("",textOffsetX=20,textOffsetY=20,font='font13',focusTexture="http://tamiliptv.tv/tv_episodes/system/1.0/images/up-x-hover.png",noFocusTexture="http://tamiliptv.tv/tv_episodes/system/1.0/images/up-x.png")
- self.placeControl(self.dayUp, 5, 1,0,0,0)
- self.connect(self.dayUp, lambda: self._updateDay(UP,tsList))
- self.daydown = Button("",textOffsetX=20,textOffsetY=20,font='font13',focusTexture="http://tamiliptv.tv/tv_episodes/system/1.0/images/down-x-hover.png",noFocusTexture="http://tamiliptv.tv/tv_episodes/system/1.0/images/down-x.png")
- self.placeControl(self.daydown, 8, 1,0,0,0)
- self.connect(self.daydown, lambda: self._updateDay(DOWN,tsList))
- #----------- Hour Start ------------------
- hour_label = Label('Hour')
- self.placeControl(hour_label,4,3,40)
- self.hourTb = Edit('Hour','font15',disabledColor='0xFFFFFF00')
- self.placeControl(self.hourTb,6, 3,2,2)
- self.hourTb.setText( dataStr[1] )
- self.hourTb.setEnabled(False)
- self.hourUp = Button("",textOffsetX=20,textOffsetY=20,font='font13',focusTexture="http://tamiliptv.tv/tv_episodes/system/1.0/images/up-x-hover.png",noFocusTexture="http://tamiliptv.tv/tv_episodes/system/1.0/images/up-x.png")
- self.placeControl(self.hourUp, 5,4,0,0,0)
- self.connect(self.hourUp, lambda: self._OnHourChange(UP,tsList))
- self.hourdown = Button("",textOffsetX=20,textOffsetY=20,font='font13',focusTexture="http://tamiliptv.tv/tv_episodes/system/1.0/images/down-x-hover.png",noFocusTexture="http://tamiliptv.tv/tv_episodes/system/1.0/images/down-x.png")
- self.placeControl(self.hourdown, 8, 4,0,0,0)
- self.connect(self.hourdown, lambda: self._OnHourChange(DOWN,tsList))
- #----------- Minute Start ------------------
- Min_label = Label('Min')
- self.placeControl(Min_label,4,5,10)
- self.minTb = Edit('Min','font15',disabledColor='0xFFFFFF00')
- self.placeControl(self.minTb,6, 5,2,2)
- self.minTb.setText( dataStr[2] )
- self.minTb.setEnabled(False)
- self.minUp = Button("",textOffsetX=20,textOffsetY=20,font='font13',focusTexture="http://tamiliptv.tv/tv_episodes/system/1.0/images/up-x-hover.png",noFocusTexture="http://tamiliptv.tv/tv_episodes/system/1.0/images/up-x.png")
- self.placeControl(self.minUp, 5, 6,0,0,0)
- self.connect(self.minUp, lambda: self._OnMinuteChange(UP,tsList))
- self.mindown = Button("",textOffsetX=20,textOffsetY=20,font='font13',focusTexture="http://tamiliptv.tv/tv_episodes/system/1.0/images/down-x-hover.png",noFocusTexture="http://tamiliptv.tv/tv_episodes/system/1.0/images/down-x.png")
- self.placeControl(self.mindown, 8,6,0,0,0)
- self.connect(self.mindown, lambda: self._OnMinuteChange(DOWN,tsList))
- self.selectBtn = Button("Select")
- self.placeControl(self.selectBtn,12,2,3,2)
- self.connect(self.selectBtn, lambda: self._prepareVideoUrl())
- self.closeBtn = Button("Cancel")
- self.placeControl(self.closeBtn, 12, 4, 3, 2)
- self.connect(self.closeBtn, lambda: self.close())
- self.set_navigation_focus()
- def set_navigation_focus(self):
- self.daydown.controlUp(self.dayUp)
- self.daydown.controlDown(self.hourUp)
- self.dayUp.controlUp(self.selectBtn)
- self.dayUp.controlDown(self.daydown)
- self.daydown.controlLeft(self.selectBtn)
- self.dayUp.controlLeft(self.selectBtn)
- self.hourUp.controlUp(self.daydown)
- self.hourUp.controlDown(self.hourdown)
- self.hourdown.controlUp(self.hourUp)
- self.hourdown.controlDown(self.minUp)
- #self.hourdown.controlLeft(self.selectBtn)
- self.minUp.controlUp(self.hourdown)
- self.minUp.controlDown(self.mindown)
- self.mindown.controlUp(self.minUp)
- self.mindown.controlDown(self.selectBtn)
- self.selectBtn.controlRight(self.closeBtn)
- self.selectBtn.controlLeft(self.mindown)
- self.selectBtn.controlDown(self.closeBtn)
- self.selectBtn.controlUp(self.closeBtn)
- self.closeBtn.controlLeft(self.selectBtn)
- self.closeBtn.controlRight(self.dayUp)
- self.closeBtn.controlDown(self.dayUp)
- self.closeBtn.controlUp(self.mindown)
- # Set initial focus
- self.setFocus(self.dayUp)
- def _prepareVideoUrl(self):
- #arg = "&day="+str(self.dayTb.getText())+"&hour="+str(self.hourTb.getText())+"&min="+str(self.minTb.getText())+"&pid="+str(gPid)+"&index="+str(indexServer)
- arg = "&day="+str(dataStr[0])+"&hour="+str(dataStr[1])+"&min="+str(dataStr[2])+"&pid="+str(gPid)+"&index="+str(indexServer)
- self.catchupUrl = self.RequestId(arg)
- self.close()
- def RequestId(self, param):
- proxy_handler = urllib2.ProxyHandler({})
- opener = urllib2.build_opener(proxy_handler)
- myUrl = "http://www.tamiliptv.tv/tv_episodes/system/1.0/framework.php?view_name=catchupUrl&action=getUrl" + param
- hdr = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
- 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
- 'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
- 'Accept-Encoding': 'none',
- 'Accept-Language': 'en-US,en;q=0.8',
- 'Connection': 'keep-alive'}
- #print "DDDD:",myUrl
- req = urllib2.Request(myUrl, headers=hdr)
- r = opener.open(req)
- the_page = r.read()
- #print the_page
- return the_page
- def _OnMinuteChange(self,action,tsList):
- d = self._DayIndex(tsList[2])
- if(d==0):
- h = self._HourIndex(tsList[1])
- if (h == 0):
- self._SetMinute(action, tsList[0])
- else:
- self._SetMinute(action, tsList[6])
- elif(d == len(tsList[2])-1):
- if (self._HourIndex(tsList[3]) == len(tsList[3])-1):
- self._SetMinute(action, tsList[4])
- else:
- self._SetMinute(action, tsList[6])
- else:
- self._SetMinute(action, tsList[6])
- def _SetMinute(self,action, tsList):
- c = self._MinIndex(tsList)
- if(action == 0):
- c = c-1
- if (c < 0):
- c = len(tsList)-1
- dataStr[2] = tsList[c]
- elif (action == 1):
- c = c+1;
- if (c > len(tsList)-1):
- c = 0
- dataStr[2] = tsList[c]
- self._setTextVal()
- def _OnHourChange(self,action,tsArray):
- d = self._DayIndex( tsArray[2] )
- if (d==0):
- self._SetHour(action, tsArray[1])
- elif (d >= len(tsList[2])-1):
- self._SetHour(action, tsArray[3])
- else:
- self._SetHour(action, tsArray[5])
- def _SetHour(self,action,tsListArra):
- c = self._HourIndex( tsListArra )
- if (action == 0): #Up
- c = c-1
- if (c < 0):
- c = len(tsListArra)- 1
- dataStr[1] = tsListArra[c]
- elif(action == 1):
- c = c + 1
- if (c > len(tsListArra)-1):
- c = 0
- dataStr[1] = tsListArra[c]
- self._setTextVal()
- def _updateDay(self,action,tsArray):
- c = self._DayIndex( tsArray[2] )
- if (action == 0): #Up
- c = c-1
- if(c<=0):
- c = 0
- h = self._HourIndex( tsArray[1] )
- if (h == -1):
- dataStr[1] = tsArray[1][0]
- #Check if min is out of range
- m = self._MinIndex( tsArray[0] );
- if (m == -1):
- dataStr[2] = tsArray[0][0]
- dataStr[0] = tsArray[2][c]
- self._setTextVal()
- else: #down
- c = c+1
- if( c >= len(tsArray[2])-1 ):
- c = len(tsArray[2])-1
- #Check if hour is not out of range
- h = self._HourIndex( tsArray[3] )
- if (h == -1):
- z = len(tsArray[3]) - 1
- dataStr[1] = tsArray[3][z]
- #Check if min is not out of range
- m = self._MinIndex(tsArray[4])
- if (m == -1):
- z = len(tsArray[4]) - 1
- dataStr[2] = tsArray[4][z]
- dataStr[0] = tsArray[2][c]
- self._setTextVal()
- def _setTextVal(self):
- self.dayTb.setText( dataStr[0] )
- self.minTb.setText( dataStr[2] )
- self.hourTb.setText( dataStr[1] )
- def _MinIndex(self,minStr):
- for mi in range(len(minStr)):
- if(minStr[mi] == dataStr[2]): return mi
- return -1
- def _HourIndex(self,hourStr):
- for index in range(len(hourStr)):
- if(hourStr[index] == dataStr[1]): return index
- return -1
- def _DayIndex (self,dayStr):
- for index in range(len(dayStr)):
- if(dayStr[index] == dataStr[0]): return index
- return -1
- # --------------------- End of Class openCatchupTimeBox --------------------------------
- def InformServerIAmAlive(arg1, stop_event):
- print ("Thread Started")
- programPath = xbmcaddon.Addon().getAddonInfo('path')
- count = 0
- while (not stop_event.is_set()):
- if (count >= 4):
- print ("In Thread")
- count = 0
- f = open(os.path.abspath(programPath + "/tamiliptv_history.txt"), 'r')
- historyList = f.readline();
- f.close()
- if (len(historyList) == 0):
- continue
- upArray = historyList.split(':')
- if (len(upArray) < 2):
- continue
- if (int(upArray[1]) > 0):
- proxy_handler = urllib2.ProxyHandler({})
- opener = urllib2.build_opener(proxy_handler)
- url = "http://www.tamiliptv.tv/tv_episodes/system/1.0/framework.php?view_name=roku_interface&action=XBMCIAmAlive&deviceID=XBMC_" + upArray[0] + "&userID=" + upArray[1]
- hdr = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
- 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
- 'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
- 'Accept-Encoding': 'none',
- 'Accept-Language': 'en-US,en;q=0.8',
- 'Connection': 'keep-alive'}
- req = urllib2.Request(url, headers=hdr)
- r = opener.open(req)
- the_page = r.read()
- #print "URL==>" + url
- #print "From Thread X [myMemberID ==>" + upArray[1] + ", mySessionID ==>" + upArray[0] + ", Result ==>" + the_page + "]"
- sleep(5)
- count = count + 1
- print ("Thread Terminated")
- #-------------------------------------------------------------------------------
- def xbmc_Home():
- global myMemberID
- InitHistory()
- myMemberID = Login()
- if (int(myMemberID) == 0):
- return
- SetViewType()
- Fanart = ADDON.getAddonInfo('Fanart')
- par = str("&action=collectCategoryData")
- msg = RequestURL(par)
- catArray = msg.split('~')
- for cat in catArray:
- fields = cat.split('|');
- print ("FILD: ",fields)
- mode = ''
- type = ''
- if (fields[0]=='1'):
- type = 'products'
- mode = 'Streaming'
- elif (fields[0]=='3'):
- mode = 'catchuptv'
- type = 'products'
- elif (fields[0]=='5' or fields[0]=='6'):
- type = 'category'
- mode = 'VOD'
- elif (fields[0]=='2'):
- type = 'category'
- mode = 'TV'
- else: type = 'category'
- subUrl = str(fields[0])+'|'+ mode + '|' + mode + '|' + mode + '|' + mode + '|' + type + '|'
- url = build_url({'mode': mode, 'data':subUrl })
- icon = fields[6]
- icon = icon.replace("/tv_episodes/..", "");
- li = xbmcgui.ListItem(fields[1], fields[2], iconImage=icon, thumbnailImage=icon, path=url)
- li.setProperty('Fanart_Image', Fanart)
- xbmcplugin.addDirectoryItem(handle=addon_handle, url=url, listitem=li, isFolder=True)
- thread_stop = threading.Event()
- thread = Thread(target = InformServerIAmAlive, args = (1, thread_stop) )
- thread.start()
- xbmcplugin.endOfDirectory(addon_handle)
- return;
- #-------------------------------------------------------------------------------
- def xbmc_ShowScreen(cType, contentArray,basicMode):
- SetViewType()
- Fanart = ADDON.getAddonInfo('Fanart')
- for content in contentArray:
- cdata = content.split('|')
- if(basicMode !='' and basicMode == 'catchuptv'):
- url = build_url({'mode':basicMode, 'foldername':cdata[1], 'data':content })
- else :
- url = build_url({'mode':cType, 'foldername':cdata[1], 'data':content })
- if (cdata[5] == 'video' or cdata[5] == 'channel' or cdata[5] == 'channels'):
- icon = 'http://www.tamiliptv.tv/roku/devs/photos/' + cdata[6]
- elif (len(cdata[6]) > 0 and cdata[6].find('http:') == -1):
- icon = 'http://www.tamiliptv.tv/roku/devs/photos/' + cdata[6]
- else:
- icon = ADDON.getAddonInfo('icon')
- li = xbmcgui.ListItem(cdata[1], '', iconImage=icon, thumbnailImage=icon, path=url)
- li.setProperty('iconImage', icon)
- li.setProperty('Fanart_Image', Fanart)
- if (cdata[5] == 'video' or cdata[5] == 'channels'):
- li.setInfo(type='Video', infoLabels={ "Title": cdata[1] })
- xbmcplugin.addDirectoryItem(handle=addon_handle, url=url, listitem=li, isFolder=True)
- SetViewType()
- xbmcplugin.endOfDirectory(addon_handle)
- return;
- #-------------------------------------------------------------------------------
- def xbmc_PlayVideo(url, nameofVideo, thumb=''):
- dialog = xbmcgui.Dialog()
- print (url)
- dialog.ok(url, url)
- if( thumb == '' ):
- img = ADDON.getAddonInfo('icon')
- if( thumb != '' ):
- img = 'http://www.tamiliptv.tv/roku/devs/photos/'+thumb
- playlist = xbmc.PlayList( xbmc.PLAYLIST_VIDEO )
- playlist.clear()
- video_listitem = xbmcgui.ListItem(nameofVideo, thumbnailImage=img)
- #print "URL :",url
- #playlist.add('http://208.77.16.220:1935/live/test/playlist.m3u8', video_listitem)
- playlist.add(url, video_listitem)
- xbmc.Player(xbmc.PLAYER_CORE_AUTO).play(playlist, video_listitem)
- #-------------------------------------------------------------------------------
- def xbmc_VOD(vodData):
- if (vodData[5] == 'category'):
- data = RequestURL("&action=getPosterData&pid=" + vodData[0] + "&pid_type=" + vodData[5])
- if (vodData[0] == '5' or vodData[0] == '6'):
- catDataArray = data.split("^")
- catDataArray.pop(0)
- newCat = []
- cdArray = catDataArray.pop(0).split('~')
- k = 1
- for catData in cdArray:
- if(vodData[0] == '6'):
- temp = '6|' + catData + '|' + catData + '||' + str(k+1) + '|list|||'
- else:
- temp = '5|' + catData + '|' + catData + '||' + str(k+1) + '|list|||'
- newCat.append(temp)
- k = k + 1
- return newCat
- else:
- catDataArray = data.split("~")
- catDataArray.pop(0)
- catDataArray.pop(0)
- return catDataArray
- elif (vodData[5] == 'list'):
- data = RequestURL("&action=getPosterData&pid=" + vodData[0] + "&pid_type=category")
- catDataArray = data.split("^")
- x = int(float(vodData[4]))
- catData = catDataArray.pop(x).split('~')
- return catData
- return ''
- #----------------------- Streaming --------------------------------------------------------
- def executeStraming( StramingData, basicMode ):
- dialog = xbmcgui.Dialog()
- if (StramingData[5] == 'products' or StramingData[5] == 'catchuptv'):
- urlStreaming = "&action=getPosterData&pid=" + StramingData[0] + "&pid_type=" + StramingData[5]
- if(basicMode == 'catchuptv'):
- urlStreaming = "&mode=catchuptv" + urlStreaming
- catDataArray = RequestURL(urlStreaming).split("^")
- catDataArray.pop(0)
- xbmc_ShowScreen('Streaming', catDataArray,basicMode)
- elif (StramingData[5] == 'packages'):
- urlPackage = "&action=getPosterData&pid=" + StramingData[0] + "&pid_type=" + StramingData[5]
- if(basicMode == 'catchuptv'):
- urlPackage = "&mode=catchuptv" + urlPackage
- catDataArray = RequestURL( urlPackage ).split("^")
- catDataArray.pop(0)
- if(len(catDataArray) > 1):
- xbmc_ShowScreen('Streaming', catDataArray,basicMode)
- elif (StramingData[5] == 'channels'):
- catDataArray = RequestURL("&action=getPosterData&pid=" + StramingData[0] + "&pid_type=" + StramingData[5]).split("^")
- if(basicMode == 'catchuptv'):
- print ("channels",catDataArray)
- catDataArray = catDataArray.pop(1).split("|")
- streams = catDataArray[16].split(',')
- newCat = []
- for stream in streams:
- temp = list(catDataArray)
- sData = stream.split('=')
- if(basicMode != 'catchuptv'):
- sData = stream.split('=')
- temp[16] = sData[1]
- else:
- temp[16] = stream
- temp[1] = catDataArray[1] + ' ' + sData[0]
- temp[5] = 'channel'
- temp[6] = StramingData[6]
- newCat.append('|'.join(temp))
- xbmc_ShowScreen('Streaming', newCat,basicMode)
- elif (StramingData[5] == 'channel'):
- # we are entering here for channel option
- #dialog.ok(StramingData[5], StramingData[5])
- if(basicMode == 'catchuptv'):
- streams = StramingData[16]
- if(streams.find('[STARTTIME]') != -1):
- startTime = StramingData[19].split('=')
- finalStreamUrl = OpenCatchupTimeBox(startTime[1],0,StramingData[0])
- if(finalStreamUrl!=""):
- thumb = ADDON.getAddonInfo('icon')
- xbmc_PlayVideo(finalStreamUrl,StramingData[4],'')
- else:
- # and then to here
- # dialog.ok(StramingData[5], StramingData[5])
- thumb = ADDON.getAddonInfo('icon')
- #dialog.ok(StramingData[16], StramingData[16])
- #dialog.ok(StramingData[4], StramingData[4])
- xbmc_PlayVideo(StramingData[16],StramingData[4],'')
- #----------------------- VOD --------------------------------------------------------
- def executeVOD( VodData ):
- if (VodData[5] != 'video'):
- catDataArray = xbmc_VOD(VodData)
- xbmc_ShowScreen('VOD', catDataArray,'')
- else:
- data = RequestURL("&action=getPosterData&pid=" + VodData[0] + "&pid_type=video").split('|')
- xbmc_PlayVideo(data[16],data[1],data[14])
- #----------------------- TV --------------------------------------------------------
- def executeTV( TVData ):
- if (TVData[5] == 'video' and len(TVData) <= 9):
- TVData[5] = 'episodes';
- if (TVData[5] != 'video'):
- catDataArray = xbmc_TVEpisodes(TVData)
- xbmc_ShowScreen('TV', catDataArray,'')
- else:
- xbmc_PlayVideo(TVData[16],TVData[1],TVData[14])
- #-------------------------------------------------------------------------------
- def xbmc_TVEpisodes(vodData):
- if (vodData[5] == 'category'):
- data = RequestURL("&action=getPosterData&pid=" + vodData[0] + "&pid_type=" + vodData[5])
- if (vodData[0]=='2'):
- catDataArray = data.split("^")
- catDataArray.pop(0)
- newCat = []
- cdArray = catDataArray.pop(0).split('~')
- k = 1
- for catData in cdArray:
- temp = '2|' + catData + '|' + catData + '||' + str(k+1) + '|list|||'
- newCat.append(temp)
- k = k + 1
- return newCat
- else:
- catDataArray = data.split("~")
- catDataArray.pop(0)
- catDataArray.pop(0)
- return catDataArray
- elif (vodData[5] == 'list'):
- catDataArray = RequestURL("&action=getPosterData&pid=" + vodData[0] + "&pid_type=category").split("^")
- x = int(vodData[4])
- return catDataArray.pop(x).split('~')
- elif (vodData[5] == 'episodes'):
- catDataArray = RequestURL("&action=getPosterData&pid=" + vodData[0] + "&pid_type=video").split("^")
- data = catDataArray.pop(1).split('|')
- newCat = []
- for x in xrange(1, int(data[17])+1):
- temp = list(data)
- temp[1] = data[1] + ' Episode ' + str(x)
- temp[5] = 'video'
- temp[6] = temp[14]
- temp[16] = data[16] + str(x) + data[19]
- temp[17] = '1'
- temp[18] = ''
- temp[19] = ''
- newCat.append('|'.join(temp))
- return newCat
- return ''
- #-------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement