The branch, frodo has been updated
via c27497b8cd9233c72b68ab1e24289eed8467cf8e (commit)
from 18854451d23841b232049da4d9bdc9e8742f9d2f (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=c27497b8cd9233c72b68ab1e24289eed8467cf8e
commit c27497b8cd9233c72b68ab1e24289eed8467cf8e
Author: Martijn Kaijser <[email protected]>
Date: Wed May 28 15:41:28 2014 +0200
[plugin.video.noco] 1.0.1
diff --git a/plugin.video.noco/addon.py b/plugin.video.noco/addon.py
index 2958138..80e2618 100644
--- a/plugin.video.noco/addon.py
+++ b/plugin.video.noco/addon.py
@@ -25,15 +25,52 @@ api = nocoApi()
@plugin.route('/')
def index():
- token = getToken()
- partners = [{
- 'label': partner['partner_name'],
- 'icon': partner['icon_1024x576'],
- 'path': plugin.url_for('indexPartner', partner=partner['partner_key'])
- } for partner in api.get_partners(token['token'])]
- return plugin.finish(partners)
+ if plugin.get_setting('username') == '' or plugin.get_setting('password')
== '':
+ plugin.open_settings()
+ if plugin.get_setting('username') == '' or plugin.get_setting('password')
== '':
+ error=plugin.get_string('30050')
+ plugin.notify(msg=error, delay=10000)
+ else:
+ token = getToken()
+ partners = [{
+ 'label': partner['partner_name'],
+ 'icon': partner['icon_1024x576'],
+ 'path': plugin.url_for('indexMenu', partner=partner['partner_key'])
+ } for partner in api.get_partners(token['token'])]
+ return plugin.finish(partners)
+
@plugin.route('/partners/<partner>')
+def indexMenu(partner):
+ index = [
+ {'label': plugin.get_string('30060'),
+ 'path': plugin.url_for('indexLast', partner=partner)},
+ {'label': plugin.get_string('30061'),
+ 'path': plugin.url_for('indexPartner', partner=partner)},
+ {'label': plugin.get_string('30062'),
+ 'path': plugin.url_for('indexPopular', partner=partner)},
+ ]
+ return plugin.finish(index)
+
[email protected]('/partners/<partner>/last')
+def indexLast(partner):
+ token = getToken()
+ videos = []
+ num_last = str(plugin.get_setting('show_last'))
+ for video in api.get_last(partner, token['token'], num_last):
+ videos.append(getVideoInfos(video, partner,
video['family_TT'].encode('utf-8')))
+ return plugin.finish(videos)
+
[email protected]('/partners/<partner>/popular')
+def indexPopular(partner):
+ token = getToken()
+ videos = []
+ num_last = str(plugin.get_setting('show_last'))
+ for video in api.get_popular(partner, token['token'], num_last):
+ videos.append(getVideoInfos(video, partner,
video['family_TT'].encode('utf-8')))
+ return plugin.finish(videos)
+
[email protected]('/partners/<partner>/themes')
def indexPartner(partner):
token = getToken()
res = []
@@ -44,6 +81,15 @@ def indexPartner(partner):
} for theme in api.get_themes(partner, token['token'])]
return plugin.finish(themes)
[email protected]('/partners/<partner>/search')
+def search(partner):
+ token = getToken()
+ videos = []
+ query = plugin.keyboard(heading=plugin.get_string('30064'))
+ for video in api.search(partner, query, token['token']):
+ videos.append(getVideoInfos(video, partner,
video['family_TT'].encode('utf-8')))
+ return plugin.finish(videos)
+
@plugin.route('/partners/<partner>/themes/<theme>')
def indexThemes(partner, theme):
token = getToken()
@@ -60,56 +106,7 @@ def indexFamily(partner, theme, family):
videos = []
num_video = str(plugin.get_setting('show_n'))
for video in api.get_videos(partner, family, token['token'], num_video):
- if video['show_TT'] == None:
- label = video['family_TT'].encode('utf-8')+' -
'+str(video['episode_number'])
- else:
- label = video['family_TT'].encode('utf-8')+' -
'+str(video['episode_number']).encode('utf-8')+' -
'+unicode(video['show_TT']).encode('utf-8')
- if video['show_resume'] == None and video['family_resume'] == None:
- resume = ''
- elif video['show_resume'] == None and video['family_resume'] != None:
- resume = video['family_resume']
- elif video['family_resume'] == None and video['show_resume'] != None:
- resume = video['show_resume']
- else:
- resume = video['family_resume']+'\n\n'+video['show_resume']
- if video['mark_read'] == 1:
- read = '1'
- else:
- read = '0'
- aired = video['online_date_start_utc']
- infos = {
- 'genre': video['type_name'],
- 'episode': video['episode_number'],
- 'season': video['season_number'],
- 'title': label,
- 'studio': video['partner_name'],
- 'writer': video['partner_name'],
- 'director': video['partner_name'],
- #'rating': video[''],
- 'playcount': read,
- 'plot': resume,
- 'plotoutline': resume,
- 'tvshowtitle': video['family_TT'],
- 'aired': video['online_date_start_utc']
- }
- totaltime = unicode(video['duration_ms']/1000)
- resumetime = unicode(video['resume_play']/1000)
- properties = {
- 'resumetime': resumetime,
- 'totaltime': totaltime,
- 'fanart_image': video['banner_family']
- }
- stream_infos = {'video': {'duration': video['duration_ms']/1000 }}
- videos.append({
- 'label': label.decode("utf-8"),
- 'icon': video['screenshot_512x288'],
- 'thumbnail': video['screenshot_512x288'],
- 'info': infos,
- 'properties': properties,
- 'stream_info': stream_infos,
- 'path': plugin.url_for('playVideo', partner=partner,
family=family, video=video['id_show']),
- 'is_playable': True
- })
+ videos.append(getVideoInfos(video, partner, family))
return plugin.finish(videos)
@plugin.route('/partners/<partner>/families/<family>/<video>')
@@ -128,13 +125,68 @@ def playVideo(partner, family, video):
quality = 'HD_1080'
plugin.set_resolved_url(api.get_video(video, token['token'], quality))
+def getVideoInfos(video, partner, family):
+ if video['show_TT'] == None:
+ label = video['family_TT'].encode('utf-8')+' -
'+str(video['episode_number'])
+ else:
+ label = video['family_TT'].encode('utf-8')+' -
'+str(video['episode_number']).encode('utf-8')+' -
'+unicode(video['show_TT']).encode('utf-8')
+ if video['show_resume'] == None and video['family_resume'] == None:
+ resume = ''
+ elif video['show_resume'] == None and video['family_resume'] != None:
+ resume = video['family_resume']
+ elif video['family_resume'] == None and video['show_resume'] != None:
+ resume = video['show_resume']
+ else:
+ resume = video['family_resume']+'\n\n'+video['show_resume']
+ if video['mark_read'] == 1:
+ read = '1'
+ else:
+ read = '0'
+ aired = video['online_date_start_utc']
+ infos = {
+ 'genre': video['type_name'],
+ 'episode': video['episode_number'],
+ 'season': video['season_number'],
+ 'title': label,
+ 'studio': video['partner_name'],
+ 'writer': video['partner_name'],
+ 'director': video['partner_name'],
+ #'rating': video[''],
+ 'playcount': read,
+ 'plot': resume,
+ 'plotoutline': resume,
+ 'tvshowtitle': video['family_TT'],
+ 'aired': video['online_date_start_utc']
+ }
+ properties = {
+ 'fanart_image': video['banner_family']
+ }
+ if read == '0':
+ totaltime = unicode(video['duration_ms']/1000)
+ resumetime = unicode(video['resume_play']/1000)
+ properties['totaltime'] = totaltime
+ properties['resumetime'] = resumetime
+ stream_infos = {'video': {'duration': video['duration_ms']/1000 }}
+ v = {
+ 'label': label.decode("utf-8"),
+ 'icon': video['screenshot_512x288'],
+ 'thumbnail': video['screenshot_512x288'],
+ 'info': infos,
+ 'properties': properties,
+ 'stream_info': stream_infos,
+ 'path': plugin.url_for('playVideo', partner=partner, family=family,
video=video['id_show']),
+ 'is_playable': True
+ }
+ return v
+
def getToken():
token = plugin.get_storage('token')
username = plugin.get_setting('username')
password = plugin.get_setting('password')
if 'token' in token:
if float(token['expire']) < ( time.time() + 600 ):
- token['token'], token['expire'], token['renew'] =
api.renew_token(token['renew'])
+ #token['token'], token['expire'], token['renew'] =
api.renew_token(token['renew'])
+ token['token'], token['expire'], token['renew'] =
api.get_token(username, password)
else:
token['token'], token['expire'], token['renew'] =
api.get_token(username, password)
return token
diff --git a/plugin.video.noco/addon.xml b/plugin.video.noco/addon.xml
index d3945ed..6d65885 100644
--- a/plugin.video.noco/addon.xml
+++ b/plugin.video.noco/addon.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<addon id="plugin.video.noco" name="noco" version="1.0.0"
provider-name="Julien Gormotte (gormux)">
+<addon id="plugin.video.noco" name="noco" version="1.0.1"
provider-name="Julien Gormotte (gormux)">
<requires>
<import addon="xbmc.python" version="2.1.0"/>
<import addon="script.module.xbmcswift2" version="2.4.0"/>
diff --git a/plugin.video.noco/fanart.jpg b/plugin.video.noco/fanart.jpg
index 8347f05..3964123 100644
Binary files a/plugin.video.noco/fanart.jpg and b/plugin.video.noco/fanart.jpg
differ
diff --git a/plugin.video.noco/resources/language/English/strings.xml
b/plugin.video.noco/resources/language/English/strings.xml
index c2d85be..e754aeb 100644
--- a/plugin.video.noco/resources/language/English/strings.xml
+++ b/plugin.video.noco/resources/language/English/strings.xml
@@ -17,4 +17,15 @@
<string id="30024">Show autopromos</string>
<string id="30025">Show announces</string>
<string id="30026">Hide forbidden videos from age</string>
+
+ <!-- Messages -->
+ <string id="30050">You MUST provide a user and a password !</string>
+
+ <!-- Categories names -->
+ <string id="30060">Last videos</string>
+ <string id="30061">Themes</string>
+ <string id="30062">Most popular</string>
+ <string id="30063">Search</string>
+ <string id="30064">Enter your search terms</string>
+
</strings>
diff --git a/plugin.video.noco/resources/language/French/strings.xml
b/plugin.video.noco/resources/language/French/strings.xml
index 5b71492..5387726 100644
--- a/plugin.video.noco/resources/language/French/strings.xml
+++ b/plugin.video.noco/resources/language/French/strings.xml
@@ -17,4 +17,15 @@
<string id="30024">Afficher les autopromos</string>
<string id="30025">Afficher les annonces</string>
<string id="30026">Cacher les videos interdites à partir de</string>
+
+ <!-- Messages -->
+ <string id="30050">Vous DEVEZ fournir un utilisateur et un mot de passe
!</string>
+
+ <!-- Categories names -->
+ <string id="30060">Dernières vidéos</string>
+ <string id="30061">Thèmes</string>
+ <string id="30062">Les plus populaires</string>
+ <string id="30063">Recherche</string>
+ <string id="30064">Entrez votre recherche</string>
+
</strings>
diff --git a/plugin.video.noco/resources/lib/api.py
b/plugin.video.noco/resources/lib/api.py
index 0f7dd50..8fb2471 100644
--- a/plugin.video.noco/resources/lib/api.py
+++ b/plugin.video.noco/resources/lib/api.py
@@ -74,6 +74,23 @@ class nocoApi():
if not any(d['theme_key'] == element['theme_key'] for d in data):
data.append({'theme_key': element['theme_key'], 'theme_name':
element['theme_name'], 'icon': element['icon_1024x576']})
return data
+ def search(self, partner, query, token):
+ data = []
+ request = {'access_token': token, 'partner_key': partner, 'query':
query}
+ json_data = json.loads(requests.get(mainURL+'search/',
params=request).text)
+ for element in json_data:
+ if element['type'] == 'show':
+ request = {'access_token': token, 'partner_key': partner,
'id_show': str(element['id'])}
+
data.append(json.loads(requests.get(mainURL+'/shows/by_id/'+str(element['id']),
params=request).text))
+ return data
+ def get_last(self, partner, token, num_video):
+ request = {'access_token': token, 'partner_key': partner,
'elements_per_page': num_video}
+ data = json.loads(requests.get(mainURL+'shows/', params=request).text)
+ return data
+ def get_popular(self, partner, token, num_video):
+ request = {'access_token': token, 'partner_key': partner,
'elements_per_page': num_video}
+ data = json.loads(requests.get(mainURL+'shows/most_popular',
params=request).text)
+ return data
def get_families(self, partner, theme, token):
request = {'access_token': token, 'partner_key': partner, 'theme_key':
theme}
data = json.loads(requests.get(mainURL+'families',
params=request).text)
diff --git a/plugin.video.noco/resources/settings.xml
b/plugin.video.noco/resources/settings.xml
index d0b88b6..cd3fb52 100644
--- a/plugin.video.noco/resources/settings.xml
+++ b/plugin.video.noco/resources/settings.xml
@@ -9,6 +9,7 @@
<!-- Affichage -->
<category label="30006">
<setting id="show_n" subsetting="true" type="slider" label="30009"
default="100" range="10,10,1000" option="int"/>
+ <setting id="show_last" subsetting="true" type="slider" label="30012"
default="30" range="10,10,100" option="int"/>
<!-- <setting id="showseen" type="bool" label="30011" default="true"/>
-->
<setting id="quality" type="labelenum" label="30010"
values="LQ|HQ|TV|HD_720|HD_1080" default="HD_720"/>
</category>
-----------------------------------------------------------------------
Summary of changes:
plugin.video.noco/addon.py | 168 +++++++++++++-------
plugin.video.noco/addon.xml | 2 +-
plugin.video.noco/fanart.jpg | Bin 781478 -> 70000 bytes
.../resources/language/English/strings.xml | 11 ++
.../resources/language/French/strings.xml | 11 ++
plugin.video.noco/resources/lib/api.py | 17 ++
plugin.video.noco/resources/settings.xml | 1 +
7 files changed, 151 insertions(+), 59 deletions(-)
hooks/post-receive
--
Plugins
------------------------------------------------------------------------------
Time is money. Stop wasting it! Get your web API in 5 minutes.
www.restlet.com/download
http://p.sf.net/sfu/restlet
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons