The branch, dharma has been updated
       via  e111aedef8b6edc4a5dcee71887adf2be296a258 (commit)
      from  9560c5e5df96d5c85ee6c163661b53c9228c5343 (commit)

- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=e111aedef8b6edc4a5dcee71887adf2be296a258

commit e111aedef8b6edc4a5dcee71887adf2be296a258
Author: beenje <[email protected]>
Date:   Wed Dec 19 22:57:44 2012 +0100

    [plugin.video.nolife] updated to version 0.15.0

diff --git a/plugin.video.nolife/addon.xml b/plugin.video.nolife/addon.xml
index 45a5b3c..cdfcf28 100644
--- a/plugin.video.nolife/addon.xml
+++ b/plugin.video.nolife/addon.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="plugin.video.nolife"
        name="Nolife Online"
-       version="0.14"
+       version="0.15.0"
        provider-name="gormux">
   <requires>
     <import addon="xbmc.python" version="1.0"/>
@@ -15,15 +15,15 @@
     <platform>all</platform>
     <minversion>29000</minversion>
     <language>fr</language>
-  <summary>Nolife Online XBMC Plugin</summary>
+    <summary>Nolife Online XBMC Plugin</summary>
     <description lang="fr">Un plugin pour accéder au contenu de Nolife Online.
-Nécéssite un compte payant sur le site http://www.nolife-tv.com
+Les modes accès libre et payant sont proposés par le plugin. Pour obtenir un 
compte payant rendez-vous sur le site http://www.nolife-tv.com
 Abonnez-vous :)
 Pour toute question : [email protected] ou http://bugs.gormotte.info
     </description>
     <description lang="en">A plugin to access Nolife Online content.
-A paid account is necessary. Register on http://www.nolife-tv.com.
-Any question ? Ask [email protected] or see http://bugs.gormotte.info
+You can use either free or paid account. For paid account please register on 
http://www.nolife-tv.com
+Any question ? Ask [email protected], or see http://bugs.gormotte.info
     </description>
     <disclaimer lang="fr">Ce plugin n'est ni publié ni maintenu par Nolife, 
et donc non officiel.</disclaimer>
     <disclaimer lang="en">This plugin is not official. Any questions are for 
me and not Nolife stafff.</disclaimer>
diff --git a/plugin.video.nolife/default.py b/plugin.video.nolife/default.py
index 8f06ac4..526cee1 100644
--- a/plugin.video.nolife/default.py
+++ b/plugin.video.nolife/default.py
@@ -17,9 +17,21 @@ Nolife Online addon for XBMC
 Authors:     gormux, DeusP
 """
 
-import re, xbmcplugin, xbmcgui, xbmcaddon, urllib, urllib2, sys, cookielib, 
pickle
+import os, re, xbmcplugin, xbmcgui, xbmcaddon, urllib, urllib2, sys, 
cookielib, pickle
 from BeautifulSoup import BeautifulSoup
 
+"""
+Class used as a C-struct to store video informations
+"""
+class videoInfo:
+    pass
+
+"""
+Class used to report login error
+"""
+class loginExpcetion(Exception):
+    pass
+
 # Global variable definition
 ## Header for every log in this plugin
 pluginLogHeader = "[XBMC_NOLIFE] "
@@ -27,6 +39,9 @@ pluginLogHeader = "[XBMC_NOLIFE] "
 ## Values for the mode parameter
 MODE_LAST_SHOWS, MODE_CATEGORIES, MODE_SEARCH, MODE_SHOW_BY_URL, MODE_LINKS = 
range(5)
 
+## Values for the subscription mode
+FREE, STANDARD, SUPPORT = range(3)
+
 settings  = xbmcaddon.Addon(id='plugin.video.nolife')
 url       = 'http://online.nolife-tv.com/index.php?'
 name      = 'Nolife Online'
@@ -34,6 +49,8 @@ mode      = None
 version   = settings.getAddonInfo('version')
 useragent = "XBMC Nolife-plugin/" + version
 language = settings.getLocalizedString
+subscription = FREE
+fanartimage = os.path.join(settings.getAddonInfo("path"), "fanart.jpg")
 
 def remove_html_tags(data):
     """Permits to remove all HTML tags
@@ -121,17 +138,17 @@ def login():
     page = requestHandler.open("http://forum.nolife-tv.com/login.php";, 
loginrequest)
     res = BeautifulSoup(page.read())
     if re.compile('pas valide').findall(str(res)):
-        xbmc.log(msg=pluginLogHeader + "Invalid username, 
aborting",level=xbmc.LOGERROR)
+        xbmc.log(msg=pluginLogHeader + "Invalid username, 
aborting",level=xbmc.LOGFATAL)
         err = xbmcgui.Dialog()
-        err.ok("Erreur", "Nom d'utilisateur ou mot de passe 
invalide.","Veuillez vérifier les informations de connexion dans","les 
paramètres de l'addon.")
-        doanerror
+        err.ok(unicode(language(35002)), unicode(language(34001)), 
unicode(language(34002)))
+        raise loginExpcetion()
     elif re.compile('votre quota').findall(str(res)):
-        xbmc.log(msg=pluginLogHeader + "User account 
locked",level=xbmc.LOGERROR)
+        xbmc.log(msg=pluginLogHeader + "User account 
locked",level=xbmc.LOGSEVERE)
         err = xbmcgui.Dialog()
-        err.ok("Message", "Trop d'erreurs d'authentification.","Veuillez 
patienter 15 minutes avant de rééssayer","Vérifiez également vos 
informations de connexion.")
-        doanerror
+        err.ok(unicode(language(35001)), unicode(language(34003)), 
unicode(language(34004)), unicode(language(34005)))
+        raise loginExpcetion()
     else:
-        xbmc.log(msg=pluginLogHeader + "Valid User",level=xbmc.LOGERROR)
+        xbmc.log(msg=pluginLogHeader + "Valid User",level=xbmc.LOGDEBUG)
 
 def initialIndex():
     """Creates initial index
@@ -147,6 +164,7 @@ def getlastVideos():
         
     Get the videos in the "last videos" menu option
     """
+    showseen   = settings.getSetting( "showseen" )
     postrequest = urllib.urlencode({'emissions': 0,
                                    'famille': 0,
                                    'a': 'ge'})
@@ -154,37 +172,16 @@ def getlastVideos():
     page = requestHandler.open("http://mobile.nolife-tv.com/do.php";, 
postrequest)
     liste = BeautifulSoup(page.read()).findAll('li')
     for element in liste:
-        if re.compile('data-icon="arrow-r"').findall(str(element)):
-            
-            if  re.compile('icones/32/on').findall(str(element)):
-                _seen = True
-            else:
-                _seen = False
-            
-            reg_date = '<p style="padding-right:25px;'\
-                ' padding-left:10px;">.*</p>'
-            _thumb    = re.compile('data-thumb=".*"').findall(
-                                                              
str(element))[0][12:][:-1]
-            _date_len = remove_html_tags(
-                                         
re.compile(reg_date).findall(str(element))[0]
-                                         )
-            _duration = _date_len.split(' - ')[1]
-            
-            reg_vid = 'a href="emission-.*" '
-            _vid   = re.compile(reg_vid).findall(str(element))[0][17:][:-2]
-            
-            reg_desc = '<p style="padding-left:10px;"><strong>.*'
-            _desc  = remove_html_tags(
-                                      
re.compile(reg_desc).findall(str(element))[0][30:])
-            
-            _name  = remove_html_tags(
-                                      
re.compile('<h3.*').findall(str(element))[0])
-            
-            addlink( _name + " - " + _desc,
-                    "plugin://plugin.video.nolife?id=" + _vid,
-                    _thumb, 
-                    _duration,
-                    _seen )
+        extractVideoInfo(element)
+        
+        videoInfo = extractVideoInfo(element)
+        if ( showseen == "false" and videoInfo.seen == False ):
+            if isAvailableForUser(videoInfo.availability):
+                addlink( videoInfo.name + " - " + videoInfo.desc,
+                    "plugin://plugin.video.nolife?id=" + videoInfo.vid,
+                    videoInfo.thumb,
+                    videoInfo.duration,
+                    videoInfo.seen )
 
     
 def getcategories():
@@ -216,41 +213,43 @@ def search():
         liste = BeautifulSoup(page.read()).findAll('li')
 
         for element in liste:
-            if re.compile('data-icon="arrow-r"').findall(str(element)):
-                if  re.compile('icones/32/on').findall(str(element)):
-                    _seen = True
-                else:
-                    _seen = False
-                reg_srch = 'a href="emission-.*" '
-                _searchid = re.compile(reg_srch).findall(
-                                                    str(element))[0][17:][:-2]
-                reg_desc = '<p style="padding-left:10px;"><strong>.*'
-                _thumb    = re.compile('data-thumb=".*"').findall(
-                                                    str(element))[0][12:][:-1]
-                _bdesc = re.compile(reg_desc).findall(str(element))[0][30:]
-                _bname = re.compile('<h3.*').findall(str(element))[0]
-                _desc = remove_html_tags(_bdesc)
-                _name = remove_html_tags(_bname)
-                reg_date = '<p style="padding-right:25px;'\
-                           ' padding-left:10px;">.*</p>'
-                _date_len = remove_html_tags(
-                            re.compile(reg_date).findall(str(element))[0]
-                            )
-                _duration = _date_len.split(' - ')[1]
-                addlink(_name + " - " + _desc, 
-                        "plugin://plugin.video.nolife?id=" + _searchid, 
-                        _thumb, 
-                        _duration,
-                        _seen )
+            videoInfo = extractVideoSearchInfo(element)
+
+            if videoInfo != None:
+                if isAvailableForUser(videoInfo.availability):
+                    addlink(videoInfo.name + " - " + videoInfo.desc,
+                        "plugin://plugin.video.nolife?id=" + videoInfo.id,
+                        videoInfo.thumb,
+                        videoInfo.duration,
+                        videoInfo.seen )
 
 def getshows(category):
     """
     Gets shows in a category
     """
     emissions = parse_categories()
+    excluded_shows = [ '75', '104', '89' ]
     for emission in emissions:
-        if emission[0] == category:
-            add_dir(emission[1], emission[2], MODE_LINKS, emission[3])
+        if  not emission[2] in excluded_shows:
+            if emission[0] == category:
+                add_dir(emission[1], emission[2], MODE_LINKS, emission[3])
+
+def isAvailableForUser(type_of_show):
+    """
+    Return true is the show is available for user, false otherwise
+    """
+    if "Archive" in type_of_show:
+        if subscription >= SUPPORT:
+            return True
+        else:
+            return False
+    elif "Standard" in type_of_show:
+        if subscription >= STANDARD or settings.getSetting("extracts") == 
'true':
+            return True
+        else:
+            return False
+    else:
+        return True
 
 def getlinks(show):
     """
@@ -260,8 +259,7 @@ def getlinks(show):
     show_n     = settings.getSetting( "show_n" )
     showall    = settings.getSetting( "showall" )
     showseen   = settings.getSetting( "showseen" )
-    user       = settings.getSetting( "username" )
-    pwd        = settings.getSetting( "password" )
+
     if showall == "true":
         show_n = 65536
     emissions  = []
@@ -282,44 +280,20 @@ def getlinks(show):
             finished = True
         else:
             for element in liste:
+                
                 if int(float(show_n)) == len(emissions):
                     finished = True
                     break
-                if ( re.compile('data-icon="arrow-r"').findall(str(element))
-                     and int(float(show_n)) > len(emissions) ):
-                    if re.compile('icones/32/on').findall(str(element)):
-                        _seen = True
-                    else:
-                        _seen = False
-
-                    reg_date = '<p style="padding-right:25px;'\
-                               ' padding-left:10px;">.*</p>'
-                    _date_len = remove_html_tags(
-                                re.compile(reg_date).findall(str(element))[0]
-                                )
-                    _thumb    = re.compile('data-thumb=".*"').findall(
-                                                    str(element))[0][12:][:-1]
-                    _duration = _date_len.split(' - ')[1]
-
-                    req_id = 'a href="emission-.*" '
-                    _id = re.compile(req_id).findall(
-                                                    str(element))[0][17:][:-2]
-
-                    req_desc = '<p style="padding-left:10px;"><strong>.*'
-                    _desc = remove_html_tags(
-                            re.compile(req_desc).findall(str(element))[0][30:]
-                            )
-
-                    _name     = remove_html_tags(
-                                re.compile('<h3.*').findall(str(element))[0]
-                                )
-
-                    emissions.append([_id, 
-                                      _name, 
-                                      _desc, 
-                                      _duration, 
-                                      _seen, 
-                                      _thumb])
+                
+                videoInfo = extractVideoInfo(element)
+
+                if isAvailableForUser(videoInfo.availability):
+                        emissions.append([videoInfo.id,
+                                            videoInfo.name,
+                                            videoInfo.desc,
+                                            videoInfo.duration,
+                                            videoInfo.seen,
+                                            videoInfo.thumb])
             i = i + 1   
 
     for emission in emissions:
@@ -360,8 +334,6 @@ def playvideo(requestHandler, video):
     Plays video
     """
     settings = xbmcaddon.Addon(id='plugin.video.nolife')
-    user     = settings.getSetting( "username" )
-    pwd      = settings.getSetting( "password" )
     quality  = settings.getSetting( "quality" )
     if   quality == "HQ" or quality == "1":
         _video = video + "?quality=2"
@@ -376,6 +348,7 @@ def playvideo(requestHandler, video):
     else:
         _video = video
 
+    requestHandler.addheaders = [("User-agent", useragent)]
     page = requestHandler.open(_video)
     url  = page.geturl()
     xbmc.log(msg=pluginLogHeader + "URL :" + url,level=xbmc.LOGDEBUG)
@@ -440,25 +413,117 @@ def add_dir(name, url, mode, iconimage):
     
     # Hack to avoid incompatiblity of urllib with unicode string
     if isinstance(name, str):
-        xbmc.log(msg="[XXX] str dir",level=xbmc.LOGERROR)
         url = sys.argv[0]+"?url="+urllib.quote_plus(url)+\
             "&mode="+str(mode)+"&name="+urllib.quote_plus(name)
     else:
         url = sys.argv[0]+"?url="+urllib.quote_plus(url)+\
         "&mode="+str(mode)+"&name="+urllib.quote_plus(name.encode("ascii", 
"ignore"))
-    liz = xbmcgui.ListItem(name,
-                           iconImage="DefaultFolder.png",
-                           thumbnailImage=iconimage)
+    showid = url.split('?')[1].split('&')[0].split('=')[1]
+    thumbnailimage = os.path.join(settings.getAddonInfo("path"), 'resources', 
'images', showid + '.jpeg')
+    if not iconimage == '':
+        liz = xbmcgui.ListItem(name,
+                               iconImage=iconimage,
+                               thumbnailImage=iconimage)
+    else:
+        liz = xbmcgui.ListItem(name,
+                               iconImage=thumbnailimage,
+                               thumbnailImage=thumbnailimage)
+
     liz.setInfo( 
                  type="Video", 
                  infoLabels={ "Title": name } 
                )
+    liz.setProperty('fanart_image', fanartimage)
     ok  = xbmcplugin.addDirectoryItem( handle=int(sys.argv[1]), 
                                        url=url, 
                                        listitem=liz, 
                                        isFolder=True )
     return ok
 
+def get_subscription_mode():
+    """
+    Return the subscription mode for the current user
+    """
+    url = "http://mobile.nolife-tv.com/abonnement/";
+
+    page = requestHandler.open(url)
+    htmlContent = page.read();
+    if "Soutien" in htmlContent:
+        xbmc.log(msg=pluginLogHeader + "User has a support 
account",level=xbmc.LOGNOTICE)
+        return SUPPORT
+    elif "Standard" in htmlContent:
+        xbmc.log(msg=pluginLogHeader + "User has a standard 
account",level=xbmc.LOGNOTICE)
+        return STANDARD
+    else :
+        xbmc.log(msg=pluginLogHeader + "User has no 
account",level=xbmc.LOGNOTICE)
+        return FREE
+
+
+def extractVideoInfo(element):
+    """
+    Extract video info from html and store it in videoInfo class    
+    """
+    info = videoInfo()
+    if re.compile('data-icon="arrow-r"').findall(str(element)):
+        
+        if  re.compile('icones/32/on').findall(str(element)):
+            info.seen = True
+        else:
+            info.seen = False
+        
+        reg_date = '<p style="padding-right:25px;'\
+            ' padding-left:10px;">.*</p>'
+        info.thumb    = 
re.compile('data-thumb=".*"').findall(str(element))[0][12:][:-1]
+        _date_len = 
remove_html_tags(re.compile(reg_date).findall(str(element))[0])
+        info.duration = _date_len.split(' - ')[1]
+        
+        req_id = 'a href="emission-.*" '
+        info.id = re.compile(req_id).findall(str(element))[0][17:][:-2]
+        
+        req_availability = '<p style="float:right; margin-right:-15px; 
clear:right;"><strong>.*'
+        info.availability = 
remove_html_tags(re.compile(req_availability).findall(str(element))[0][57:].replace("[",
 "").replace("]", ""))
+
+        reg_vid = 'a href="emission-.*" '
+        info.vid   = re.compile(reg_vid).findall(str(element))[0][17:][:-2]
+        
+        reg_desc = '<p style="padding-left:10px;"><strong>.*'
+        info.desc  = 
remove_html_tags(re.compile(reg_desc).findall(str(element))[0][30:])
+
+        info.name  = 
remove_html_tags(re.compile('<h3.*').findall(str(element))[0])
+
+    return info
+
+def extractVideoSearchInfo(element):
+    """
+    Extract video info from html from a search page and store it in videoInfo 
class
+    """
+    info = None
+    if re.compile('data-icon="arrow-r"').findall(str(element)):
+        info = videoInfo()
+        if  re.compile('icones/32/on').findall(str(element)):
+            info.seen = True
+        else:
+            info.seen = False
+    
+        reg_srch = 'a href="emission-.*" '
+        info.id = re.compile(reg_srch).findall(str(element))[0][17:][:-2]
+
+        reg_desc = '<p style="padding-left:10px;"><strong>.*'
+        info.thumb    = 
re.compile('data-thumb=".*"').findall(str(element))[0][12:][:-1]
+        _bdesc = re.compile(reg_desc).findall(str(element))[0][30:]
+        _bname = re.compile('<h3.*').findall(str(element))[0]
+        info.desc = remove_html_tags(_bdesc)
+        info.name = remove_html_tags(_bname)
+
+        req_availibity = '<p style="float:right; margin-right:-15px; 
clear:right;"><strong>.*'
+        info.availability = 
remove_html_tags(re.compile(req_availibity).findall(str(element))[0][30:])
+    
+        reg_date = '<p style="padding-right:25px; padding-left:10px;">.*</p>'
+        _date_len = 
remove_html_tags(re.compile(reg_date).findall(str(element))[0])
+        info.duration = _date_len.split(' - ')[1]
+
+    return info
+
 ## Start of the add-on
 xbmc.log(msg=pluginLogHeader + "-----------------------",level=xbmc.LOGDEBUG)
 xbmc.log(msg=pluginLogHeader + "Nolife plugin main loop",level=xbmc.LOGDEBUG)
@@ -491,7 +556,14 @@ xbmc.log(msg=pluginLogHeader + "requested id : " + 
str(_id),level=xbmc.LOGDEBUG)
 xbmc.log(msg=pluginLogHeader + "No cookies, adding a jar",level=xbmc.LOGDEBUG)
 cj = cookielib.CookieJar()
 requestHandler = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
-login()
+
+# The login is only done for authenticated mode
+if settings.getSetting( "authenticate" ) == "true":
+    xbmc.log(msg=pluginLogHeader + "authentication 
requested",level=xbmc.LOGDEBUG)
+    login()
+
+# Find the access mode of the user
+subscription = get_subscription_mode()
 
 # Determining and executing action
 if( mode == None or url == None or len(url) < 1 ) and _id == 0:
diff --git a/plugin.video.nolife/resources/language/english/strings.xml 
b/plugin.video.nolife/resources/language/english/strings.xml
index bafd131..9c4bf2b 100644
--- a/plugin.video.nolife/resources/language/english/strings.xml
+++ b/plugin.video.nolife/resources/language/english/strings.xml
@@ -1,15 +1,31 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <strings>
+    <!-- Parameters -->
     <string id="32001">Authentication</string>
+    <string id="32010">Use a Nolife account</string>
     <string id="32011">Username</string>
     <string id="32012">Password</string>
+    <string id="32013">See previews</string>
     <string id="33001">Appearance</string>
     <string id="33011">Order by</string>
     <string id="33012">Show all videos</string>
     <string id="33013">Number of videos to show</string>
     <string id="33014">Quality</string>
     <string id="33015">Show already seen videos</string>
+    
+    <!-- List of shows messages -->
     <string id="33016">Last shows</string>
     <string id="33017">Shows</string>
     <string id="33018">Search</string>
+    
+    <!-- Error messages -->
+    <string id="34001">Invalid user name.</string>
+    <string id="34002">Please check your login informations in addon's' 
parameter menu.</string>
+    <string id="34003">There have been too many authentication errors.</string>
+    <string id="34004">You should wait 15 minutes before any new login 
attempts.</string>
+    <string id="34005">Please check your login informations.</string>
+    
+    <!-- Common messages -->
+    <string id="35001">Message</string>
+    <string id="35002">Error</string>
 </strings>
diff --git a/plugin.video.nolife/resources/language/french/strings.xml 
b/plugin.video.nolife/resources/language/french/strings.xml
index de7bdab..336e299 100644
--- a/plugin.video.nolife/resources/language/french/strings.xml
+++ b/plugin.video.nolife/resources/language/french/strings.xml
@@ -1,15 +1,31 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <strings>
+    <!-- Paramètres -->
     <string id="32001">Authentification</string>
+    <string id="32010">Utiliser un compte Nolife</string>
     <string id="32011">Nom d'utilisateur</string>
     <string id="32012">Mot de passe</string>
+    <string id="32013">Voir les extraits des émissions</string>
     <string id="33001">Apparence</string>
     <string id="33011">Classement</string>
     <string id="33012">Afficher toutes les émissions</string>
     <string id="33013">Nombre d'émissions à afficher</string>
     <string id="33014">Qualité vidéo</string>
     <string id="33015">Afficher les émissions déjà vues</string>
+    
+    <!-- Messages dans la liste -->
     <string id="33016">Dernières émissions</string>
     <string id="33017">Émissions</string>
     <string id="33018">Recherche</string>
+    
+    <!-- Messages d'erreur -->
+    <string id="34001">Nom d'utilisateur ou mot de passe invalide.</string>
+    <string id="34002">Veuillez vérifier les informations de connexion. Ces 
informations ce trouvent  dans les paramètres de l'addon.</string>
+    <string id="34003">Trop d'erreurs d'authentification.</string>
+    <string id="34004">Veuillez patienter 15 minutes avant de 
rééssayer.</string>
+    <string id="34005">Vérifiez également vos informations de 
connexion.</string>
+    
+    <!-- Messages généraux -->
+    <string id="35001">Message</string>
+    <string id="35002">Erreur</string>
 </strings>
diff --git a/plugin.video.nolife/resources/settings.xml 
b/plugin.video.nolife/resources/settings.xml
index 6a545f9..fe9bf69 100644
--- a/plugin.video.nolife/resources/settings.xml
+++ b/plugin.video.nolife/resources/settings.xml
@@ -3,8 +3,10 @@
 
     <!-- Authentication -->
     <category label="32001">
-        <setting id="username" type="text" label="32011" default=""/>
-        <setting id="password" type="text" option="hidden" label="32012" 
default=""/>
+        <setting id="authenticate" type="bool" label="32010" default="false" />
+        <setting id="username" type="text" label="32011" enable="eq(-1,true)" 
default="" />
+        <setting id="password" type="text" option="hidden" label="32012" 
default="" enable="eq(-2,true)"/>
+        <setting id="extracts" type="bool" option="hidden" label="32013" 
default="" enable="eq(-3,false)"/>
     </category>
     <!-- Affichage -->
     <category label="33001">
@@ -12,7 +14,7 @@
         <setting id="showall" type="bool" label="33012" default="false"/>
         <setting id="show_n" subsetting="true" type="slider" label="33013" 
default="30" range="10,10,100" enable="!eq(-1,true)"/>
         <setting id="showseen" type="bool" label="33015" default="true"/>
-        <setting id="quality" type="enum" label="33014" 
values="LQ|HQ|TV|720p|1080p" default="HQ"/>
+        <setting id="quality" type="enum" label="33014" 
values="LQ|HQ|TV|720p|1080p" default="TV"/>
     </category>
 
 </settings>

-----------------------------------------------------------------------

Summary of changes:
 plugin.video.nolife/addon.xml                      |   10 +-
 plugin.video.nolife/default.py                     |  294 ++++++++++++--------
 plugin.video.nolife/fanart.jpg                     |  Bin 0 -> 1233277 bytes
 .../resources/images/Actualit%C3%A9s.jpeg          |  Bin 0 -> 67053 bytes
 .../resources/images/Culture+%26+Style.jpeg        |  Bin 0 -> 39977 bytes
 plugin.video.nolife/resources/images/Fictions.jpeg |  Bin 0 -> 18877 bytes
 plugin.video.nolife/resources/images/Japon.jpeg    |  Bin 0 -> 31601 bytes
 .../resources/images/Jeu+vid%C3%A9o.jpeg           |  Bin 0 -> 40208 bytes
 plugin.video.nolife/resources/images/Musique.jpeg  |  Bin 0 -> 32427 bytes
 plugin.video.nolife/resources/images/Nolife.jpeg   |  Bin 0 -> 10500 bytes
 .../S%C3%A9lection+pour+d%C3%A9couvrir+Nolife.jpeg |  Bin 0 -> 10704 bytes
 .../images/http%3A%2F%2Fmobile.nolife-tv.com.jpeg  |  Bin 0 -> 10500 bytes
 .../resources/language/english/strings.xml         |   16 +
 .../resources/language/french/strings.xml          |   16 +
 plugin.video.nolife/resources/settings.xml         |    8 +-
 15 files changed, 225 insertions(+), 119 deletions(-)
 create mode 100644 plugin.video.nolife/fanart.jpg
 create mode 100644 plugin.video.nolife/resources/images/Actualit%C3%A9s.jpeg
 create mode 100644 plugin.video.nolife/resources/images/Culture+%26+Style.jpeg
 create mode 100644 plugin.video.nolife/resources/images/Fictions.jpeg
 create mode 100644 plugin.video.nolife/resources/images/Japon.jpeg
 create mode 100644 plugin.video.nolife/resources/images/Jeu+vid%C3%A9o.jpeg
 create mode 100644 plugin.video.nolife/resources/images/Musique.jpeg
 create mode 100644 plugin.video.nolife/resources/images/Nolife.jpeg
 create mode 100644 
plugin.video.nolife/resources/images/S%C3%A9lection+pour+d%C3%A9couvrir+Nolife.jpeg
 create mode 100644 
plugin.video.nolife/resources/images/http%3A%2F%2Fmobile.nolife-tv.com.jpeg


hooks/post-receive
-- 
Plugins

------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons

Reply via email to