The branch, frodo has been updated
via 932e1c0a86f1751ef65087029b265252d6b55d72 (commit)
from 7ff38c88a50b709175ffe038daf23e9b71874a66 (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=932e1c0a86f1751ef65087029b265252d6b55d72
commit 932e1c0a86f1751ef65087029b265252d6b55d72
Author: beenje <[email protected]>
Date: Mon Apr 8 22:50:56 2013 +0200
[plugin.video.tvkaista] updated to version 4.0.0
diff --git a/plugin.video.tvkaista/addon.xml b/plugin.video.tvkaista/addon.xml
index 3ddad56..5a8dd0c 100644
--- a/plugin.video.tvkaista/addon.xml
+++ b/plugin.video.tvkaista/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<addon id="plugin.video.tvkaista" name="TVKaista.fi" version="3.0.4"
provider-name="Viljo Viitanen">
+<addon id="plugin.video.tvkaista" name="TVKaista.fi" version="4.0.0"
provider-name="Viljo Viitanen">
<requires>
- <import addon="xbmc.python" version="2.0"/>
+ <import addon="xbmc.python" version="2.1.0"/>
</requires>
<extension point="xbmc.python.pluginsource" library="default.py">
<provides>video</provides>
@@ -16,4 +16,8 @@
<disclaimer lang="en">Updated for XBMC Dharma beta 1 by
stilester</disclaimer>
<disclaimer lang="fi">Päivittänyt XBMC Dharma beta 1:lle
stilester</disclaimer>
</extension>
+ <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
+
<source>https://code.google.com/p/tvkaistaforxbmcv2/source/checkout</source>
+ <website>https://code.google.com/p/tvkaistaforxbmcv2/</website>
+ <email>[email protected]</email>
</addon>
diff --git a/plugin.video.tvkaista/changelog.txt
b/plugin.video.tvkaista/changelog.txt
index 99dea7f..40b491c 100644
--- a/plugin.video.tvkaista/changelog.txt
+++ b/plugin.video.tvkaista/changelog.txt
@@ -1,3 +1,5 @@
+[B]4.0.0[/B]
+- Add context menu item for searching similar named programs, add support for
new 1M MPEG4 stream
[B]3.0.4[/B]
- Added fanart image. Thanks to Sven Weià and koobyak!
[B]3.0.3[/B]
diff --git a/plugin.video.tvkaista/default.py b/plugin.video.tvkaista/default.py
index 4395401..58502fd 100644
--- a/plugin.video.tvkaista/default.py
+++ b/plugin.video.tvkaista/default.py
@@ -1,466 +1,484 @@
-#xbmc tvkaista.fi plugin
-#
-#Copyright (C) 2009-2012 Viljo Viitanen <[email protected]>
-#Copyright (C) 2010 stilester
-#Copyright (C) 2008-2009 J. Luukko
-#
-#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 2
-#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, write to the Free Software
-#Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
-
-#muutoshistoria:
-#19.12.2009 ensimmainen versio
-#20.12.2009 aikaeron laskeminen bugasi, korjattu
-#5.1.2010 ohjelmien sijainti oli kovakoodattu alpha.tvkaista.fi:n, feedien
muuttuessa
-#bugasi, korjattu
-#10.2.2010 paljon muutoksia, lisatty tekstitystuki, thumbnailit,
paivamaaravalikko
-#6.9.2010 tuki XBMC Dharma beta 1:lle - kiitos stilester!
-#7.9.2010 fiksauksia xbmc:n official repoa varten, linux-locale-ongelma
fiksattu
-#5.12.2010 varasto pois, elokuva-haku etusivulle, alpha->www, tekstitys pois
-#5.12.2010 lisays ja poisto katselulistalta ja sarjoista - kiitos Markku
Lamminluoto!
-#7.1.2011 tuki tvkaistan proxyille
-#11.8.2011 naytetaan aika aina Suomen ajassa
-#13.11.2011 proxytuki pois tarpeettomana, sarjojen sorttaus
-#24.10.2012 bugikorjaus, lisatty oma user-agent tvkaistan dokumentaation mukaan
-# fiksumpi virheilmoitus vaarasta kayttajatunnuksesta/salasanasta
-
-import locale
-locale.setlocale(locale.LC_ALL, 'C')
-
-import xbmcgui, urllib, urllib2, cookielib , re, os, xbmcplugin,
htmlentitydefs, time, xbmcaddon, calendar
-tvkaista_addon = xbmcaddon.Addon("plugin.video.tvkaista");
-
-VERSION = "3.0.3"
-MYHEADERS = { 'User-Agent': "tvkaista-xbmc version "+VERSION+";" }
-
-BASE_RESOURCE_PATH = xbmc.translatePath( os.path.join(
tvkaista_addon.getAddonInfo('path'), "resources" ) )
-sys.path.append( os.path.join( BASE_RESOURCE_PATH, "lib" ) )
-
-from string import split, replace, find
-from xml.dom import minidom
-
-def bitrate():
- if tvkaista_addon.getSetting("bitrate") == "0":
- return "mp4"
- elif tvkaista_addon.getSetting("bitrate") == "2":
- return "h264"
- elif tvkaista_addon.getSetting("bitrate") == "3":
- return "ts"
- else:
- return "flv"
-
-#varmistetaan asetukset
-def settings():
- if tvkaista_addon.getSetting("username") != '' and
tvkaista_addon.getSetting("password") != '':
- menu()
- else:
- u=sys.argv[0]+"?url=Asetukset&mode=4"
- listfolder = xbmcgui.ListItem('-- Asetuksia ei maaritelty tai niissa on
ongelma. Tarkista asetukset. --')
- listfolder.setInfo('video', {'Title': 'Asetuksia ei maaritelty tai niissa
on ongelma. Tarkista asetukset.'})
- xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
- u=sys.argv[0]+"?url=Asetukset&mode=4"
- listfolder = xbmcgui.ListItem('Asetukset')
- listfolder.setInfo('video', {'Title': 'Asetukset'})
- xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
- xbmcplugin.endOfDirectory(int(sys.argv[1]))
-
-# paavalikko
-def menu():
-
u=sys.argv[0]+"?url="+urllib.quote_plus('http://www.tvkaista.fi/feed/channels/')+"&mode=1"
- listfolder = xbmcgui.ListItem('Kanavat - tanaan')
- listfolder.setInfo('video', {'Title': "Kanavat"})
- xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
-
-
u=sys.argv[0]+"?url="+urllib.quote_plus('http://www.tvkaista.fi/feed/seasonpasses/')+"&mode=1"
- listfolder = xbmcgui.ListItem('Sarjat')
- listfolder.setInfo('video', {'Title': "Sarjat"})
- xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
-
-
u=sys.argv[0]+"?url="+urllib.quote_plus('http://www.tvkaista.fi/feed/playlist')+"&mode=2"
- listfolder = xbmcgui.ListItem('Lista')
- listfolder.setInfo('video', {'Title': 'Lista'})
- xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
-
-
u=sys.argv[0]+"?url="+urllib.quote_plus('http://www.tvkaista.fi/feed/search/title/elokuva')+"&mode=2"
- listfolder = xbmcgui.ListItem('Elokuvat')
- listfolder.setInfo('video', {'Title': 'Elokuvat'})
- xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
-
- u=sys.argv[0]+"?url=Haku&mode=6"
- listfolder = xbmcgui.ListItem('Haku')
- listfolder.setInfo('video', {'Title': 'Haku'})
- xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
-
- u=sys.argv[0]+"?url=Asetukset&mode=4"
- listfolder = xbmcgui.ListItem('Asetukset')
- listfolder.setInfo('video', {'Title': 'Asetukset'})
- xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
-
-
vko=['Maanantai','Tiistai','Keskiviikko','Torstai','Perjantai','Lauantai','Sunnuntai']
- t=time.time()
- for i in range(1,29):
- tt=time.localtime(t-86400*i)
- title='%s %s' % (vko[tt[6]], (time.strftime("%d.%m",tt)))
- listfolder = xbmcgui.ListItem(title)
- u=sys.argv[0]+"?url=%d/%d/%d/&mode=5" % (tt[0],tt[1],tt[2])
- xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
- xbmcplugin.endOfDirectory(int(sys.argv[1]))
-
-# Parsee kaynnistysparametrit kun skriptaa suoritetaan uudelleen
-def get_params():
- param=[]
- paramstring=sys.argv[2]
- if len(paramstring)>=2:
- params=sys.argv[2]
- cleanedparams=params.replace('?','')
- if (params[len(params)-1]=='/'):
- params=params[0:len(params)-2]
- pairsofparams=cleanedparams.split('&')
- param={}
- for i in range(len(pairsofparams)):
- splitparams={}
- splitparams=pairsofparams[i].split('=')
- if (len(splitparams))==2:
- param[splitparams[0]]=splitparams[1]
- return param
-
-#onko gmt-aikaleima kesaajassa
-def isdst(tt):
- dates = {
- 2011 : [27,30],
- 2012 : [25,28],
- 2013 : [31,27],
- 2014 : [30,26],
- 2015 : [29,25],
- 2016 : [27,30],
- 2017 : [26,29],
- 2018 : [25,28],
- 2019 : [31,27],
- }
- t=time.gmtime(tt)
- if t[1] > 3 and t[1]<10:
- return True
- if t[1] < 3 or t[1]>10:
- return False
- if t[1] == 3:
- if t[2] < dates[t[0]][0]:
- return False
- if t[2] == dates[t[0]][0]:
- if t[3] == 0:
- return False
- return True
- if t[1] == 10:
- if t[2] < dates[t[0]][1]:
- return True
- if t[2] == dates[t[0]][1]:
- if t[3] == 0:
- return True
- return False
-
-#Listaa feedin sisaltamat ohjelmat
-def listprograms(url):
- passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
- passman.add_password(None, "http://www.tvkaista.fi",
tvkaista_addon.getSetting("username"), \
- tvkaista_addon.getSetting("password"))
- opener = urllib2.build_opener(urllib2.HTTPBasicAuthHandler(passman))
- #print "listprograms avataan: "+url+'/'+bitrate()+'.rss'
- try:
- if url.endswith('/'):
- needslash=''
- else:
- needslash='/'
- request = urllib2.Request(url+needslash+bitrate()+'.rss',
headers=MYHEADERS)
- content = opener.open(request).read()
- except urllib2.HTTPError,e:
- if e.code == 401:
- desc=" (virheellinen kayttajatunnus tai salasana)"
- else:
- desc=""
- u=sys.argv[0]
- listfolder = xbmcgui.ListItem('www-pyynto ei onnistunut '+str(e.code)+desc)
- listfolder.setInfo('video', {'Title': 'www-pyynto ei onnistunut
'+str(e.code)+desc})
- xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=0)
- xbmcplugin.endOfDirectory(int(sys.argv[1]))
- return
- dom = minidom.parseString(content)
-
-# try:
- items = dom.getElementsByTagName('item')
- ret = []
- myusername=urllib.quote(tvkaista_addon.getSetting("username"))
- mypassword=urllib.quote(tvkaista_addon.getSetting("password"))
- for i in items:
- ptit=i.getElementsByTagName('title')[0].childNodes[0].nodeValue
-# print "in "+ptit.encode("utf-8")
- try:
- pdes=i.getElementsByTagName('description')[0].childNodes[0].nodeValue
- except:
- pdes=""
- pdat=i.getElementsByTagName('pubDate')[0].childNodes[0].nodeValue
- pcha=i.getElementsByTagName('source')[0].childNodes[0].nodeValue
- try:
- purl=i.getElementsByTagName('enclosure')[0].attributes['url'].value
- pat = re.compile(r"^http://(.*)", re.IGNORECASE).findall(purl)
- except:
- pat=[]
- pat.append("")
- ptit=ptit+" -TALLENNE PUUTTUU-"
- if len(pdes)>80:
- shortdes=pdes[:80]+'...'
- else:
- shortdes=pdes
- tt=calendar.timegm(time.strptime(pdat,"%a, %d %b %Y %H:%M:%S +0000"))
- if (isdst(tt)):
- timediff=10800
- else:
- timediff=7200
- t=time.gmtime(tt+timediff)
-
- urlii = 'http://%s:%s@%s' % (\
- myusername, mypassword, pat[0])
- nimike = '%s | %s >>> %s (%s)' %
(time.strftime("%H:%M",t),ptit,shortdes,pcha)
-
- listitem = xbmcgui.ListItem(label=nimike, iconImage="DefaultVideo.png")
- try:
- if pat[0] != "":
- pid=re.compile(r"/([0-9]+)[.].+$", re.IGNORECASE).findall(pat[0])
-
listitem.setThumbnailImage('http://%s:%[email protected]/feed/thumbnails/%s.jpg'
% (\
- myusername, mypassword, pid[0]))
- if url.find('/feed/playlist') > 0:
- label='Poista Listalta'
- mode=9
- else:
- label='Lisaa Listalle'
- mode=8
- if url.find('/feed/seasonpasses/') > 0:
- se = re.compile(r"/feed/seasonpasses/([0-9]+)",
re.IGNORECASE).findall(url)
- label2='Poista Sarjoista'
- mode2=11
- id2=se[0]
- else:
- label2='Lisaa Sarjoihin'
- mode2=10
- id2=pid[0]
- listitem.addContextMenuItems([
- ('Ohjelman tiedot','XBMC.Action(Info)',),
-
(label,"XBMC.RunPlugin(%s?mode=%d&url=%s)"%(sys.argv[0],mode,pid[0] ),),
- (label2,"XBMC.RunPlugin(%s?mode=%d&url=%s)"%(sys.argv[0],mode2,id2
),
- )], True )
- except:
- pass
- listitem.setInfo('video', {'title': nimike, 'plot': pdes,
- 'date': time.strftime("%d.%m.%Y",t), })
-
xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=urlii,listitem=listitem)
- xbmcplugin.addSortMethod(int(sys.argv[1]), xbmcplugin.SORT_METHOD_DATE)
-# except:
-# u=sys.argv[0]
-# listfolder = xbmcgui.ListItem('www-pyynnon sisallon tulkitseminen ei
onnistunut')
-# listfolder.setInfo('video', {'Title': 'www-pyynnon sisallon tulkitseminen
ei onnistunut'})
-# xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
- dom.unlink()
- xbmcplugin.endOfDirectory(int(sys.argv[1]))
-
-#haetaan kanavalista, ujutetaan feed-urleihin archive-paivamaara, joka tulee
url-parametrina
-def listdates(url):
- passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
- passman.add_password(None, "http://www.tvkaista.fi",
tvkaista_addon.getSetting("username"), \
- tvkaista_addon.getSetting("password"))
- opener = urllib2.build_opener(urllib2.HTTPBasicAuthHandler(passman))
- #print "listdates avataan: "+url
- try:
- request = urllib2.Request('http://www.tvkaista.fi/feed/channels/',
headers=MYHEADERS)
- content = opener.open(request).read()
- except urllib2.HTTPError,e:
- if e.code == 401:
- desc=" (virheellinen kayttajatunnus tai salasana)"
- else:
- desc=""
- u=sys.argv[0]
- listfolder = xbmcgui.ListItem('www-pyynto ei onnistunut '+str(e.code)+desc)
- listfolder.setInfo('video', {'Title': 'www-pyynto ei onnistunut
'+str(e.code)+desc})
- xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
- xbmcplugin.endOfDirectory(int(sys.argv[1]))
- return
-# try:
- dom = minidom.parseString(content)
- items = dom.getElementsByTagName('item')
- ret = []
- for i in items:
- ptit=i.getElementsByTagName('title')[0].childNodes[0].nodeValue
- plin=i.getElementsByTagName('link')[0].childNodes[0].nodeValue
- datelink=re.sub(r'/feed/','/feed/archives/'+url,plin)
- #print "plin: " + plin + " datelink: " + datelink
- u=sys.argv[0]+"?url="+urllib.quote_plus(datelink)+"&mode="+"2"
- listfolder = xbmcgui.ListItem(ptit)
- listfolder.setInfo('video', {'Title': ptit})
- xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
-# except:
-# u=sys.argv[0]
-# listfolder = xbmcgui.ListItem('www-pyynnon sisallon tulkitseminen ei
onnistunut')
-# listfolder.setInfo('video', {'Title': 'www-pyynnon sisallon tulkitseminen
ei onnistunut'})
-# xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
- dom.unlink()
- xbmcplugin.endOfDirectory(int(sys.argv[1]))
-
-# Listaa feedin sisaltamat feedit
-def listfeeds(url):
- passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
- passman.add_password(None, "http://www.tvkaista.fi",
tvkaista_addon.getSetting("username"), \
- tvkaista_addon.getSetting("password"))
- opener = urllib2.build_opener(urllib2.HTTPBasicAuthHandler(passman))
- #print "listfeeds avataan: "+url
- try:
- request = urllib2.Request(url, headers=MYHEADERS)
- content = opener.open(request).read()
- except urllib2.HTTPError,e:
- if e.code == 401:
- desc=" (virheellinen kayttajatunnus tai salasana)"
- else:
- desc=""
- u=sys.argv[0]
- listfolder = xbmcgui.ListItem('www-pyynto ei onnistunut '+str(e.code)+desc)
- listfolder.setInfo('video', {'Title': 'www-pyynto ei onnistunut
'+str(e.code)+desc})
- xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
- xbmcplugin.endOfDirectory(int(sys.argv[1]))
- return
-# try:
- dom = minidom.parseString(content)
- items = dom.getElementsByTagName('item')
- if "/feed/seasonpasses" in url:
- items.sort(key=lambda i:
i.getElementsByTagName('title')[0].childNodes[0].nodeValue)
- ret = []
- for i in items:
- ptit=i.getElementsByTagName('title')[0].childNodes[0].nodeValue
- plin=i.getElementsByTagName('link')[0].childNodes[0].nodeValue
- u=sys.argv[0]+"?url="+urllib.quote_plus(plin)+"&mode="+"2"
- listfolder = xbmcgui.ListItem(ptit)
- listfolder.setInfo('video', {'Title': ptit})
- xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
-# except:
-# u=sys.argv[0]
-# listfolder = xbmcgui.ListItem('www-pyynnon sisallon tulkitseminen ei
onnistunut')
-# listfolder.setInfo('video', {'Title': 'www-pyynnon sisallon tulkitseminen
ei onnistunut'})
-# xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
- dom.unlink()
- xbmcplugin.endOfDirectory(int(sys.argv[1]))
-
-# Antaa kayttajalle virtuaalisen nappaimiston ja listaa hakutulokset
-def search():
- keyboard = xbmc.Keyboard()
- keyboard.doModal()
- if (keyboard.isConfirmed() and keyboard.getText() != ''):
- list=tvkaista_addon.getSetting("searches").splitlines()
- try:
- list.remove(keyboard.getText())
- except ValueError:
- pass
- if len(list)>20: list.pop()
- list.insert(0,keyboard.getText())
- tvkaista_addon.setSetting("searches","\n".join(list))
- url = 'http://www.tvkaista.fi/feed/search/title/%s' %
(urllib.quote_plus(keyboard.getText()))
- listprograms(url)
-
-def listsearches():
- u=sys.argv[0]+"?url=Haku&mode=3"
- listfolder = xbmcgui.ListItem('Uusi haku')
- xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
-
- for i in tvkaista_addon.getSetting("searches").splitlines():
-
u=sys.argv[0]+"?url="+urllib.quote_plus('http://www.tvkaista.fi/feed/search/title/'+urllib.quote_plus(i))+"&mode=2"
- listfolder = xbmcgui.ListItem('Haku: '+i)
- xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
-
- if(tvkaista_addon.getSetting("searches") != ""):
- u=sys.argv[0]+"?url=Haku&mode=7"
- listfolder = xbmcgui.ListItem('Poista viimeiset haut')
- xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
-
- xbmcplugin.endOfDirectory(int(sys.argv[1]))
-
-def delsearches():
- dialog = xbmcgui.Dialog()
- if(dialog.yesno('Tvkaista', 'Poistetaanko viimeiset haut?')):
- tvkaista_addon.setSetting("searches","")
- dialog.ok('Tvkaista', 'Viimeiset haut poistettu.')
-
-def addremove(action,id):
- opts = {'action': 'login', 'username':
tvkaista_addon.getSetting("username"), \
- 'password': tvkaista_addon.getSetting("password"), 'rememberme':'on'}
- cj = cookielib.CookieJar()
- opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
- request = urllib2.Request('http://www.tvkaista.fi/login/', headers=MYHEADERS)
- r = opener.open(request, urllib.urlencode(opts))
- dialog = xbmcgui.Dialog()
- try:
- if action==1:
- request =
urllib2.Request("http://www.tvkaista.fi/recordings/?action=addtoplaylist&id=%s"%id,
headers=MYHEADERS)
- r = opener.open(request)
- dialog.ok('Tvkaista', 'Ohjelma lisatty listalle.')
- elif action==2:
- request =
urllib2.Request("http://www.tvkaista.fi/recordings/?action=removefromplaylist&id=%s"%id,
headers=MYHEADERS)
- r = opener.open(request)
- dialog.ok('Tvkaista', 'Ohjelma poistettu listalta.')
- elif action==3:
- request =
urllib2.Request("http://www.tvkaista.fi/recordings/?action=addseasonpass&id=%s"%id,
headers=MYHEADERS)
- r = opener.open(request)
- dialog.ok('Tvkaista', 'Ohjelma lisatty sarjoihin')
- elif action==4:
- request =
urllib2.Request("http://www.tvkaista.fi/recordings/?action=removeseasonpass&spid=%s"%id,
headers=MYHEADERS)
- r = opener.open(request)
- dialog.ok('Tvkaista', 'Ohjelma poistettu sarjoista.')
- else:
- dialog.ok('Tvkaista', 'Ohjelmavirhe!')
- except Error:
- dialog.ok('Tvkaista', 'Toiminto ei onnistunut!')
-
-#main program
-
-params=get_params()
-url=None
-mode=None
-try:
- url=urllib.unquote_plus(params["url"])
- title=urllib.unquote_plus(params["title"])
-except:
- pass
-try:
- mode=int(params["mode"])
-except:
- pass
-
-if mode==None or url==None or len(url)<1:
- settings()
-
-elif mode==1:
- listfeeds(url)
-elif mode==2:
- listprograms(url)
-elif mode==3:
- search()
-elif mode==4:
- tvkaista_addon.openSettings(url=sys.argv[0])
-elif mode==5:
- listdates(url)
-elif mode==6:
- listsearches()
-elif mode==7:
- delsearches()
-elif mode==8:
- addremove(1,url)
-elif mode==9:
- addremove(2,url)
-elif mode==10:
- addremove(3,url)
-elif mode==11:
- addremove(4,url)
-
+#xbmc tvkaista.fi plugin
+# This Python file uses the following encoding: utf-8
+#
+#Copyright (C) 2009-2013 Viljo Viitanen <[email protected]>
+#Copyright (C) 2010 stilester
+#Copyright (C) 2008-2009 J. Luukko
+#
+#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 2
+#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, write to the Free Software
+#Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
+
+#muutoshistoria:
+#19.12.2009 ensimmainen versio
+#20.12.2009 aikaeron laskeminen bugasi, korjattu
+#5.1.2010 ohjelmien sijainti oli kovakoodattu alpha.tvkaista.fi:n, feedien
muuttuessa
+#bugasi, korjattu
+#10.2.2010 paljon muutoksia, lisatty tekstitystuki, thumbnailit,
paivamaaravalikko
+#6.9.2010 tuki XBMC Dharma beta 1:lle - kiitos stilester!
+#7.9.2010 fiksauksia xbmc:n official repoa varten, linux-locale-ongelma
fiksattu
+#5.12.2010 varasto pois, elokuva-haku etusivulle, alpha->www, tekstitys pois
+#5.12.2010 lisays ja poisto katselulistalta ja sarjoista - kiitos Markku
Lamminluoto!
+#7.1.2011 tuki tvkaistan proxyille
+#11.8.2011 naytetaan aika aina Suomen ajassa
+#13.11.2011 proxytuki pois tarpeettomana, sarjojen sorttaus
+#24.10.2012 bugikorjaus, lisatty oma user-agent tvkaistan dokumentaation mukaan
+# fiksumpi virheilmoitus vaarasta kayttajatunnuksesta/salasanasta
+#7.4.2013 Version 4.0.0. Add "search similar named" to context menu.
+# Add proper umlauts. Change code documentation to English.
+#8.4.2013 Add support for new tvkaista 1M mpeg4 stream
+
+#tvkaista api documentation is at https://code.google.com/p/tvkaista-api/
+
+import locale
+locale.setlocale(locale.LC_ALL, 'C')
+
+import xbmcgui, urllib, urllib2, cookielib , re, os, xbmcplugin,
htmlentitydefs, time, xbmcaddon, calendar
+tvkaista_addon = xbmcaddon.Addon("plugin.video.tvkaista");
+
+VERSION = "4.0.0"
+MYHEADERS = { 'User-Agent': "tvkaista-xbmc version "+VERSION+";" }
+
+BASE_RESOURCE_PATH = xbmc.translatePath( os.path.join(
tvkaista_addon.getAddonInfo('path'), "resources" ) )
+sys.path.append( os.path.join( BASE_RESOURCE_PATH, "lib" ) )
+
+from string import split, replace, find
+from xml.dom import minidom
+
+def bitrate():
+ if tvkaista_addon.getSetting("bitrate") == "0":
+ return "mp4"
+ elif tvkaista_addon.getSetting("bitrate") == "2":
+ return "h264"
+ elif tvkaista_addon.getSetting("bitrate") == "3":
+ return "ts"
+ else:
+ return "mpeg4"
+
+#display settings if username and password are not set
+def settings():
+ if tvkaista_addon.getSetting("username") != '' and
tvkaista_addon.getSetting("password") != '':
+ menu()
+ else:
+ u=sys.argv[0]+"?url=Asetukset&mode=4"
+ listfolder = xbmcgui.ListItem('-- Asetuksia ei määritelty tai niissa on
ongelma. Tarkista asetukset. --')
+ listfolder.setInfo('video', {'Title': 'Asetuksia ei määritelty tai
niissa on ongelma. Tarkista asetukset.'})
+ xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
+ u=sys.argv[0]+"?url=Asetukset&mode=4"
+ listfolder = xbmcgui.ListItem('Asetukset')
+ listfolder.setInfo('video', {'Title': 'Asetukset'})
+ xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
+ xbmcplugin.endOfDirectory(int(sys.argv[1]))
+
+# paavalikko
+def menu():
+
u=sys.argv[0]+"?url="+urllib.quote_plus('http://www.tvkaista.fi/feed/channels/')+"&mode=1"
+ listfolder = xbmcgui.ListItem('Kanavat - tänään')
+ listfolder.setInfo('video', {'Title': "Kanavat"})
+ xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
+
+
u=sys.argv[0]+"?url="+urllib.quote_plus('http://www.tvkaista.fi/feed/seasonpasses/')+"&mode=1"
+ listfolder = xbmcgui.ListItem('Sarjat')
+ listfolder.setInfo('video', {'Title': "Sarjat"})
+ xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
+
+
u=sys.argv[0]+"?url="+urllib.quote_plus('http://www.tvkaista.fi/feed/playlist')+"&mode=2"
+ listfolder = xbmcgui.ListItem('Lista')
+ listfolder.setInfo('video', {'Title': 'Lista'})
+ xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
+
+
u=sys.argv[0]+"?url="+urllib.quote_plus('http://www.tvkaista.fi/feed/search/title/elokuva')+"&mode=2"
+ listfolder = xbmcgui.ListItem('Elokuvat')
+ listfolder.setInfo('video', {'Title': 'Elokuvat'})
+ xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
+
+ u=sys.argv[0]+"?url=Haku&mode=6"
+ listfolder = xbmcgui.ListItem('Haku')
+ listfolder.setInfo('video', {'Title': 'Haku'})
+ xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
+
+ u=sys.argv[0]+"?url=Asetukset&mode=4"
+ listfolder = xbmcgui.ListItem('Asetukset')
+ listfolder.setInfo('video', {'Title': 'Asetukset'})
+ xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
+
+
vko=['Maanantai','Tiistai','Keskiviikko','Torstai','Perjantai','Lauantai','Sunnuntai']
+ t=time.time()
+ for i in range(1,29):
+ tt=time.localtime(t-86400*i)
+ title='%s %s' % (vko[tt[6]], (time.strftime("%d.%m",tt)))
+ listfolder = xbmcgui.ListItem(title)
+ u=sys.argv[0]+"?url=%d/%d/%d/&mode=5" % (tt[0],tt[1],tt[2])
+ xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
+ xbmcplugin.endOfDirectory(int(sys.argv[1]))
+
+# parse parameters when plugin is run
+def get_params():
+ param=[]
+ paramstring=sys.argv[2]
+ if len(paramstring)>=2:
+ params=sys.argv[2]
+ cleanedparams=params.replace('?','')
+ if (params[len(params)-1]=='/'):
+ params=params[0:len(params)-2]
+ pairsofparams=cleanedparams.split('&')
+ param={}
+ for i in range(len(pairsofparams)):
+ splitparams={}
+ splitparams=pairsofparams[i].split('=')
+ if (len(splitparams))==2:
+ param[splitparams[0]]=splitparams[1]
+ return param
+
+#is gmt timestamp in Finnish DST
+def isdst(tt):
+ dates = {
+ 2011 : [27,30],
+ 2012 : [25,28],
+ 2013 : [31,27],
+ 2014 : [30,26],
+ 2015 : [29,25],
+ 2016 : [27,30],
+ 2017 : [26,29],
+ 2018 : [25,28],
+ 2019 : [31,27],
+ }
+ t=time.gmtime(tt)
+ if t[1] > 3 and t[1]<10:
+ return True
+ if t[1] < 3 or t[1]>10:
+ return False
+ if t[1] == 3:
+ if t[2] < dates[t[0]][0]:
+ return False
+ if t[2] == dates[t[0]][0]:
+ if t[3] == 0:
+ return False
+ return True
+ if t[1] == 10:
+ if t[2] < dates[t[0]][1]:
+ return True
+ if t[2] == dates[t[0]][1]:
+ if t[3] == 0:
+ return True
+ return False
+
+#list the programs in a feed
+def listprograms(url):
+ passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
+ passman.add_password(None, "http://www.tvkaista.fi",
tvkaista_addon.getSetting("username"), \
+ tvkaista_addon.getSetting("password"))
+ opener = urllib2.build_opener(urllib2.HTTPBasicAuthHandler(passman))
+ #print "listprograms avataan: "+url+'/'+bitrate()+'.rss'
+ try:
+ if url.endswith('/'):
+ needslash=''
+ else:
+ needslash='/'
+ request = urllib2.Request(url+needslash+bitrate()+'.rss',
headers=MYHEADERS)
+ content = opener.open(request).read()
+ except urllib2.HTTPError,e:
+ if e.code == 401:
+ desc=" (virheellinen käyttäjätunnus tai salasana)"
+ else:
+ desc=""
+ u=sys.argv[0]
+ listfolder = xbmcgui.ListItem('www-pyyntö ei onnistunut
'+str(e.code)+desc)
+ listfolder.setInfo('video', {'Title': 'www-pyyntö ei onnistunut
'+str(e.code)+desc})
+ xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=0)
+ xbmcplugin.endOfDirectory(int(sys.argv[1]))
+ return
+ dom = minidom.parseString(content)
+
+# try:
+ items = dom.getElementsByTagName('item')
+ ret = []
+ myusername=urllib.quote(tvkaista_addon.getSetting("username"))
+ mypassword=urllib.quote(tvkaista_addon.getSetting("password"))
+ for i in items:
+ ptit=i.getElementsByTagName('title')[0].childNodes[0].nodeValue
+ #print "in "+ptit.encode("utf-8")
+ try:
+ pdes=i.getElementsByTagName('description')[0].childNodes[0].nodeValue
+ except:
+ pdes=""
+ pdat=i.getElementsByTagName('pubDate')[0].childNodes[0].nodeValue
+ pcha=i.getElementsByTagName('source')[0].childNodes[0].nodeValue
+ try:
+ purl=i.getElementsByTagName('enclosure')[0].attributes['url'].value
+ #print " purl: "+purl.encode("utf-8")
+ pat = re.compile(r"^http://(.*)", re.IGNORECASE).findall(purl)
+ except:
+ pat=[]
+ pat.append("")
+ ptit=ptit+" -TALLENNE PUUTTUU-"
+ if len(pdes)>80:
+ shortdes=pdes[:80]+'...'
+ else:
+ shortdes=pdes
+ tt=calendar.timegm(time.strptime(pdat,"%a, %d %b %Y %H:%M:%S +0000"))
+ if (isdst(tt)):
+ timediff=10800
+ else:
+ timediff=7200
+ t=time.gmtime(tt+timediff)
+
+ urlii = 'http://%s:%s@%s' % (\
+ myusername, mypassword, pat[0])
+ nimike = '%s | %s >>> %s (%s)' %
(time.strftime("%H:%M",t),ptit,shortdes,pcha)
+
+ listitem = xbmcgui.ListItem(label=nimike, iconImage="DefaultVideo.png")
+ try:
+ if pat[0] != "":
+ pid=re.compile(r"/([0-9]+)[.].+$", re.IGNORECASE).findall(pat[0])
+
listitem.setThumbnailImage('http://%s:%[email protected]/feed/thumbnails/%s.jpg'
% (\
+ myusername, mypassword, pid[0]))
+ if url.find('/feed/playlist') > 0:
+ label='Poista Listalta'
+ mode=9
+ else:
+ label='Lisää Listalle'
+ mode=8
+ if url.find('/feed/seasonpasses/') > 0:
+ se = re.compile(r"/feed/seasonpasses/([0-9]+)",
re.IGNORECASE).findall(url)
+ label2='Poista Sarjoista'
+ mode2=11
+ id2=se[0]
+ else:
+ label2='Lisää Sarjoihin'
+ mode2=10
+ id2=pid[0]
+ menuitems=[
+ ('Ohjelman tiedot','XBMC.Action(Info)',),
+
(label,"XBMC.RunPlugin(%s?mode=%d&url=%s)"%(sys.argv[0],mode,pid[0] ),),
+ (label2,"XBMC.RunPlugin(%s?mode=%d&url=%s)"%(sys.argv[0],mode2,id2
),),
+ ]
+ if url.find('/feed/search') == -1 and url.find('/feed/seasonpasses/')
== -1:
+ search=ptit.split(':')[0].encode('utf-8')
+ #double encoding cos it gets decoded twice.
+ menuitems.append(('Etsi
samannimisiä','XBMC.Container.Update(%s?mode=%d&url=%s)'%
+
(sys.argv[0],2,'http://www.tvkaista.fi/feed/search/title/'+urllib.quote_plus(urllib.quote_plus(search))
),))
+ listitem.addContextMenuItems(menuitems, True )
+ except:
+ pass
+ listitem.setInfo('video', {'title': nimike, 'plot': pdes,
+ 'date': time.strftime("%d.%m.%Y",t), })
+
xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=urlii,listitem=listitem)
+ xbmcplugin.addSortMethod(int(sys.argv[1]), xbmcplugin.SORT_METHOD_DATE)
+# except:
+# u=sys.argv[0]
+# listfolder = xbmcgui.ListItem('www-pyynnon sisallon tulkitseminen ei
onnistunut')
+# listfolder.setInfo('video', {'Title': 'www-pyynnon sisallon tulkitseminen
ei onnistunut'})
+# xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
+ dom.unlink()
+ xbmcplugin.endOfDirectory(int(sys.argv[1]))
+
+#get channel list, add archive date in the fetched url.
+#note: the date parameter really is called url when specifying the plugin url
parameters. See mode 5 in main.
+def listdates(date):
+ passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
+ passman.add_password(None, "http://www.tvkaista.fi",
tvkaista_addon.getSetting("username"), \
+ tvkaista_addon.getSetting("password"))
+ opener = urllib2.build_opener(urllib2.HTTPBasicAuthHandler(passman))
+ #print "listdates avataan: "+date
+ try:
+ request = urllib2.Request('http://www.tvkaista.fi/feed/channels/',
headers=MYHEADERS)
+ content = opener.open(request).read()
+ except urllib2.HTTPError,e:
+ if e.code == 401:
+ desc=" (virheellinen käyttäjätunnus tai salasana)"
+ else:
+ desc=""
+ u=sys.argv[0]
+ listfolder = xbmcgui.ListItem('www-pyyntö ei onnistunut
'+str(e.code)+desc)
+ listfolder.setInfo('video', {'Title': 'www-pyyntö ei onnistunut
'+str(e.code)+desc})
+ xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
+ xbmcplugin.endOfDirectory(int(sys.argv[1]))
+ return
+# try:
+ dom = minidom.parseString(content)
+ items = dom.getElementsByTagName('item')
+ ret = []
+ for i in items:
+ ptit=i.getElementsByTagName('title')[0].childNodes[0].nodeValue
+ plin=i.getElementsByTagName('link')[0].childNodes[0].nodeValue
+ datelink=re.sub(r'/feed/','/feed/archives/'+date,plin)
+ #print "plin: " + plin + " datelink: " + datelink
+ u=sys.argv[0]+"?url="+urllib.quote_plus(datelink)+"&mode="+"2"
+ listfolder = xbmcgui.ListItem(ptit)
+ listfolder.setInfo('video', {'Title': ptit})
+ xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
+# except:
+# u=sys.argv[0]
+# listfolder = xbmcgui.ListItem('www-pyynnon sisallon tulkitseminen ei
onnistunut')
+# listfolder.setInfo('video', {'Title': 'www-pyynnon sisallon tulkitseminen
ei onnistunut'})
+# xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
+ dom.unlink()
+ xbmcplugin.endOfDirectory(int(sys.argv[1]))
+
+# list feeds contained in a feed
+def listfeeds(url):
+ passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
+ passman.add_password(None, "http://www.tvkaista.fi",
tvkaista_addon.getSetting("username"), \
+ tvkaista_addon.getSetting("password"))
+ opener = urllib2.build_opener(urllib2.HTTPBasicAuthHandler(passman))
+ #print "listfeeds avataan: "+url
+ try:
+ request = urllib2.Request(url, headers=MYHEADERS)
+ content = opener.open(request).read()
+ except urllib2.HTTPError,e:
+ if e.code == 401:
+ desc=" (virheellinen käyttäjätunnus tai salasana)"
+ else:
+ desc=""
+ u=sys.argv[0]
+ listfolder = xbmcgui.ListItem('www-pyyntö ei onnistunut
'+str(e.code)+desc)
+ listfolder.setInfo('video', {'Title': 'www-pyyntö ei onnistunut
'+str(e.code)+desc})
+ xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
+ xbmcplugin.endOfDirectory(int(sys.argv[1]))
+ return
+# try:
+ dom = minidom.parseString(content)
+ items = dom.getElementsByTagName('item')
+ if "/feed/seasonpasses" in url:
+ items.sort(key=lambda i:
i.getElementsByTagName('title')[0].childNodes[0].nodeValue)
+ ret = []
+ for i in items:
+ ptit=i.getElementsByTagName('title')[0].childNodes[0].nodeValue
+ plin=i.getElementsByTagName('link')[0].childNodes[0].nodeValue
+ u=sys.argv[0]+"?url="+urllib.quote_plus(plin)+"&mode="+"2"
+ listfolder = xbmcgui.ListItem(ptit)
+ listfolder.setInfo('video', {'Title': ptit})
+ xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
+# except:
+# u=sys.argv[0]
+# listfolder = xbmcgui.ListItem('www-pyynnon sisallon tulkitseminen ei
onnistunut')
+# listfolder.setInfo('video', {'Title': 'www-pyynnon sisallon tulkitseminen
ei onnistunut'})
+# xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
+ dom.unlink()
+ xbmcplugin.endOfDirectory(int(sys.argv[1]))
+
+# displays the virtual keyboard and lists search results
+def search():
+ keyboard = xbmc.Keyboard()
+ keyboard.doModal()
+ if (keyboard.isConfirmed() and keyboard.getText() != ''):
+ list=tvkaista_addon.getSetting("searches").splitlines()
+ try:
+ list.remove(keyboard.getText())
+ except ValueError:
+ pass
+ if len(list)>20: list.pop()
+ list.insert(0,keyboard.getText())
+ tvkaista_addon.setSetting("searches","\n".join(list))
+ url = 'http://www.tvkaista.fi/feed/search/title/%s' %
(urllib.quote_plus(keyboard.getText()))
+ listprograms(url)
+
+#list searches that are stored in plugin settings
+def listsearches():
+ u=sys.argv[0]+"?url=Haku&mode=3"
+ listfolder = xbmcgui.ListItem('Uusi haku')
+ xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
+
+ for i in tvkaista_addon.getSetting("searches").splitlines():
+
u=sys.argv[0]+"?url="+urllib.quote_plus('http://www.tvkaista.fi/feed/search/title/'+urllib.quote_plus(i))+"&mode=2"
+ listfolder = xbmcgui.ListItem('Haku: '+i)
+ xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
+
+ if(tvkaista_addon.getSetting("searches") != ""):
+ u=sys.argv[0]+"?url=Haku&mode=7"
+ listfolder = xbmcgui.ListItem('Poista viimeiset haut')
+ xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
+
+ xbmcplugin.endOfDirectory(int(sys.argv[1]))
+
+#delete stored searches
+def delsearches():
+ dialog = xbmcgui.Dialog()
+ if(dialog.yesno('Tvkaista', 'Poistetaanko viimeiset haut?')):
+ tvkaista_addon.setSetting("searches","")
+ dialog.ok('Tvkaista', 'Viimeiset haut poistettu.')
+
+#adds/removes programs to/from playlist and seasonpasses
+#TODO: convert to tvkaista supported api instead of the current hack
+def addremove(action,id):
+ opts = {'action': 'login', 'username':
tvkaista_addon.getSetting("username"), \
+ 'password': tvkaista_addon.getSetting("password"), 'rememberme':'on'}
+ cj = cookielib.CookieJar()
+ opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
+ request = urllib2.Request('http://www.tvkaista.fi/login/', headers=MYHEADERS)
+ r = opener.open(request, urllib.urlencode(opts))
+ dialog = xbmcgui.Dialog()
+ try:
+ if action==1:
+ request =
urllib2.Request("http://www.tvkaista.fi/recordings/?action=addtoplaylist&id=%s"%id,
headers=MYHEADERS)
+ r = opener.open(request)
+ dialog.ok('Tvkaista', 'Ohjelma lisätty listalle.')
+ elif action==2:
+ request =
urllib2.Request("http://www.tvkaista.fi/recordings/?action=removefromplaylist&id=%s"%id,
headers=MYHEADERS)
+ r = opener.open(request)
+ dialog.ok('Tvkaista', 'Ohjelma poistettu listalta.')
+ elif action==3:
+ request =
urllib2.Request("http://www.tvkaista.fi/recordings/?action=addseasonpass&id=%s"%id,
headers=MYHEADERS)
+ r = opener.open(request)
+ dialog.ok('Tvkaista', 'Ohjelma lisätty sarjoihin')
+ elif action==4:
+ request =
urllib2.Request("http://www.tvkaista.fi/recordings/?action=removeseasonpass&spid=%s"%id,
headers=MYHEADERS)
+ r = opener.open(request)
+ dialog.ok('Tvkaista', 'Ohjelma poistettu sarjoista.')
+ else:
+ dialog.ok('Tvkaista', 'Ohjelmavirhe!')
+ except Error:
+ dialog.ok('Tvkaista', 'Toiminto ei onnistunut!')
+
+#main program
+
+params=get_params()
+url=None
+mode=None
+try:
+ url=urllib.unquote_plus(params["url"])
+ title=urllib.unquote_plus(params["title"])
+except:
+ pass
+try:
+ mode=int(params["mode"])
+except:
+ pass
+
+if mode==None or url==None or len(url)<1:
+ settings()
+
+elif mode==1:
+ listfeeds(url)
+elif mode==2:
+ listprograms(url)
+elif mode==3:
+ search()
+elif mode==4:
+ tvkaista_addon.openSettings(url=sys.argv[0])
+elif mode==5:
+ listdates(url)
+elif mode==6:
+ listsearches()
+elif mode==7:
+ delsearches()
+elif mode==8:
+ addremove(1,url)
+elif mode==9:
+ addremove(2,url)
+elif mode==10:
+ addremove(3,url)
+elif mode==11:
+ addremove(4,url)
+
diff --git a/plugin.video.tvkaista/resources/language/English/strings.xml
b/plugin.video.tvkaista/resources/language/English/strings.xml
index 1bb80ed..407d910 100644
--- a/plugin.video.tvkaista/resources/language/English/strings.xml
+++ b/plugin.video.tvkaista/resources/language/English/strings.xml
@@ -1,9 +1,9 @@
-<strings>
- <string id="30000">TVkaista Username</string>
- <string id="30001">TVkaista Password</string>
- <string id="30003">Video format</string>
- <string id="30004">Search</string>
- <string id="30005">Favourites</string>
- <string id="30006">set proxy server from website</string>
- <string id="30007">see www.tvkaista.fi/speedtest.html</string>
-</strings>
+<strings>
+ <string id="30000">TVkaista Username</string>
+ <string id="30001">TVkaista Password</string>
+ <string id="30003">Video format</string>
+ <string id="30004">Search</string>
+ <string id="30005">Favourites</string>
+ <string id="30006">set proxy server from website</string>
+ <string id="30007">see www.tvkaista.fi/speedtest.html</string>
+</strings>
diff --git a/plugin.video.tvkaista/resources/language/Finnish/strings.xml
b/plugin.video.tvkaista/resources/language/Finnish/strings.xml
index f0c418a..fccb2b6 100644
--- a/plugin.video.tvkaista/resources/language/Finnish/strings.xml
+++ b/plugin.video.tvkaista/resources/language/Finnish/strings.xml
@@ -1,9 +1,9 @@
-<strings>
- <string id="30000">TVkaista Kayttajatunnus</string>
- <string id="30001">TVkaista Salasana</string>
- <string id="30003">Videomuoto</string>
- <string id="30004">Haku</string>
- <string id="30005">Suosikit</string>
- <string id="30006">Aseta valimuistipalvelin www-sivustolta</string>
- <string id="30007">katso www.tvkaista.fi/speedtest.html</string>
-</strings>
+<strings>
+ <string id="30000">TVkaista Käyttäjätunnus</string>
+ <string id="30001">TVkaista Salasana</string>
+ <string id="30003">Videomuoto</string>
+ <string id="30004">Haku</string>
+ <string id="30005">Suosikit</string>
+ <string id="30006">Aseta välimuistipalvelin www-sivustolta</string>
+ <string id="30007">www.tvkaista.fi/speedtest.html</string>
+</strings>
diff --git a/plugin.video.tvkaista/resources/settings.xml
b/plugin.video.tvkaista/resources/settings.xml
index 3d65761..1ff3697 100644
--- a/plugin.video.tvkaista/resources/settings.xml
+++ b/plugin.video.tvkaista/resources/settings.xml
@@ -1,8 +1,8 @@
-<settings>
- <setting id="username" type="text" label="30000" default=""/>
- <setting id="password" type="text" option="hidden" label="30001"
default=""/>
- <setting type="sep" />
- <setting id="bitrate" type="enum" label="30003" values="300 kbps iTunes|1
Mbps Flash|2 Mbps MPEG4|8 Mbps Pro" default="1 Mbps Flash"/>
- <setting type="lsep" label="30006" />
- <setting type="lsep" label="30007" />
-</settings>
+<settings>
+ <setting id="username" type="text" label="30000" default=""/>
+ <setting id="password" type="text" option="hidden" label="30001"
default=""/>
+ <setting type="sep" />
+ <setting id="bitrate" type="enum" label="30003" values="300 kbps iTunes|1
Mbps MPEG4|2 Mbps MPEG4|8 Mbps Pro" default="1 Mbps MPEG4"/>
+ <setting type="lsep" label="30006" />
+ <setting type="lsep" label="30007" />
+</settings>
-----------------------------------------------------------------------
Summary of changes:
plugin.video.tvkaista/addon.xml | 8 +-
plugin.video.tvkaista/changelog.txt | 2 +
plugin.video.tvkaista/default.py | 950 ++++++++++----------
.../resources/language/English/strings.xml | 18 +-
.../resources/language/Finnish/strings.xml | 18 +-
plugin.video.tvkaista/resources/settings.xml | 16 +-
6 files changed, 518 insertions(+), 494 deletions(-)
hooks/post-receive
--
Plugins
------------------------------------------------------------------------------
Minimize network downtime and maximize team effectiveness.
Reduce network management and security costs.Learn how to hire
the most talented Cisco Certified professionals. Visit the
Employer Resources Portal
http://www.cisco.com/web/learning/employer_resources/index.html
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons