The branch, frodo has been updated
       via  b8d531f5c7202ecca26dea339351a604254aa971 (commit)
      from  25272cbf02529593fe52ac576a8c4e7935e91d26 (commit)

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

commit b8d531f5c7202ecca26dea339351a604254aa971
Author: Martijn Kaijser <mcm.kaij...@gmail.com>
Date:   Wed Nov 27 09:44:14 2013 +0100

    [plugin.video.zapiks] 1.1.1

diff --git a/plugin.video.zapiks/addon.xml b/plugin.video.zapiks/addon.xml
index e1664d3..45390cd 100644
--- a/plugin.video.zapiks/addon.xml
+++ b/plugin.video.zapiks/addon.xml
@@ -1,20 +1,25 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

-<addon id="plugin.video.zapiks"

-       name="Zapiks"

-       version="1.0.1"

-       provider-name="divingmule">

-  <requires>

-    <import addon="xbmc.python" version="2.0"/>

-    <import addon="script.module.beautifulsoup" version="3.0.8"/>

-    <import addon="script.common.plugin.cache" version="0.9.1"/>

-  </requires>

-  <extension point="xbmc.python.pluginsource"

-            library="default.py">

-        <provides>video</provides>

-  </extension>

-  <extension point="xbmc.addon.metadata">

-    <summary>Videos from zapiks.com</summary>

-    <description>Extreme sports videos from the French website 
zapiks.com</description>

-    <platform>all</platform>

-  </extension>

+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<addon id="plugin.video.zapiks"
+       name="Zapiks"
+       version="1.1.1"
+       provider-name="divingmule">
+  <requires>
+    <import addon="xbmc.python" version="2.1.0"/>
+    <import addon="script.module.beautifulsoup4" version="4.3.1"/>
+    <import addon="script.module.xmltodict" version="0.7.0"/>
+    <import addon="script.common.plugin.cache" version="2.5.2"/>
+  </requires>
+  <extension point="xbmc.python.pluginsource" library="default.py">
+    <provides>video</provides>
+  </extension>
+  <extension point="xbmc.addon.metadata">
+    <summary>Videos from zapiks.com</summary>
+    <description>Extreme sports videos from zapiks.com</description>
+    <platform>all</platform>
+    <language>en</language>
+    <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
+    <source>https://github.com/divingmule/plugin.video.zapiks</source>
+    <forum>http://forum.xbmc.org/showthread.php?tid=178992</forum>
+    <website>http://www.zapiks.com</website>
+  </extension>
 </addon>
\ No newline at end of file
diff --git a/plugin.video.zapiks/changelog.txt 
b/plugin.video.zapiks/changelog.txt
index d4b9c4e..3f9fa81 100644
--- a/plugin.video.zapiks/changelog.txt
+++ b/plugin.video.zapiks/changelog.txt
@@ -1,23 +1,32 @@
-Version 1.0.1

-bug fixes

-added new categories

-

-Version 1.0.0

-new for eden-pre

-

-Version 0.0.6

-fix website changed from .fr to .com

-

-Version 0.0.5

-fix for pagenation

-

-Version 0.0.4

-added sorting of videos with addon settings

-cleaned up names a bit

-

-

-Version 0.0.3

-new icon  thanks freezy

-

-Version 0.0.2

+Version 1.1.1
+update fanart
+
+Version 1.1.0
+added setting "Enable HD" default is True
+moved video filter setting to a list item
+update partner vidoes, now "Zapiks Pro"
+change python api for gotham compatibility
+
+Version 1.0.1
+bug fixes
+added new categories
+
+Version 1.0.0
+new for eden-pre
+
+Version 0.0.6
+fix website changed from .fr to .com
+
+Version 0.0.5
+fix for pagenation
+
+Version 0.0.4
+added sorting of videos with addon settings
+cleaned up names a bit
+
+
+Version 0.0.3
+new icon  thanks freezy
+
+Version 0.0.2
 initial
\ No newline at end of file
diff --git a/plugin.video.zapiks/default.py b/plugin.video.zapiks/default.py
index 68dbdbf..e8677b7 100644
--- a/plugin.video.zapiks/default.py
+++ b/plugin.video.zapiks/default.py
@@ -1,173 +1,217 @@
-import urllib

-import urllib2

-import re

-import os

-import xbmcplugin

-import xbmcgui

-import xbmcaddon

-import StorageServer

-from BeautifulSoup import BeautifulSoup

-

-__settings__ = xbmcaddon.Addon(id='plugin.video.zapiks')

-__language__ = __settings__.getLocalizedString

-sort = __settings__.getSetting('sort_method')

-home = __settings__.getAddonInfo('path')

-cache = StorageServer.StorageServer("zapiks", 24)

-base = 'http://www.zapiks.com'

-icon_path = 'http://zapiks-xbmc.googlecode.com/svn/images/'

-fanart = icon_path+'fanart.jpg'

-

-

-def getRequest(url):

-        headers = {'User-agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; 
rv:10.0.2) Gecko/20100101 Firefox/10.0.2',

-                   'Referer' : base}

-        req = urllib2.Request(url,None,headers)

-        response = urllib2.urlopen(req)

-        data = response.read()

-        response.close()

-        return data

-

-

-def cache_base():

-        data = getRequest(base)

-        return(data, 200)

-

-

-def categories():

-        soup = BeautifulSoup(cache.cacheFunction(cache_base)[0], 
convertEntities=BeautifulSoup.HTML_ENTITIES)

-        items = soup('ul', attrs={'id' : "sports_navigation"})[0]('a')

-        for i in items:

-            href = i['href']

-            if not href == '#':

-                href = i['href'][:-1]

-                if sort == '0':

-                    href = href+'1'

-                if sort == '1':

-                    href = href+'/popular_1.php'

-                if sort == '2':

-                    href = href+'/alltimebuzzed_1.php'

-                if sort == '3':

-                    href = '/_'+href[1:]+'/premium_1.php'

-                title = i.string

-                thumb = icon_path+i.string+'.png'

-                addDir(title, base+href, 1, thumb)

-        addDir(__language__(30000), 'getPartners', 3, icon_path+'partner.png')

-

-

-def getPartners():

-        soup = BeautifulSoup(cache.cacheFunction(cache_base)[0], 
convertEntities=BeautifulSoup.HTML_ENTITIES)

-        partners_items = soup('div', attrs={'id' : "partners"})[0]('a')

-        pro_items = soup('div', attrs={'id' : "pro_all"})[0]('a')

-        for i in pro_items:

-            items = partners_items.append(i)

-        for i in partners_items:

-            href = i['href']

-            title = i['title']

-            thumb = i.img['src']

-            addDir(title, base+href, 1, thumb)

-

-

-def indexPage(url):

-        soup = BeautifulSoup(getRequest(url), 
convertEntities=BeautifulSoup.HTML_ENTITIES)

-        videos = soup.findAll('div', attrs={'class' : "media_thumbnail 
medium"})

-        for i in videos:

-            try:

-                url = i('a')[0]['href']

-                name = i('a')[0]['title']

-                thumb = i('img')[0]['src']

-                addLink(name, base+url, 2, thumb)

-            except:

-                continue

-        try:

-            nextPage = soup.find('span', attrs={'class' : 
"next"})('a')[1]['href']

-            addDir(__language__(30001), base+nextPage, 1, os.path.join(home, 
'resources', 'images', 'next.png'))

-        except:

-            pass

-

-

-def videoLinks(url):

-        soup = BeautifulSoup(getRequest(url))

-        vid = soup.find('link', attrs={'rel' : "video_src"})['href']

-        new_soup = 
BeautifulSoup(getRequest('http://www.zapiks.com/view/index.php?file='+vid[-5:]+'&lang=fr'))

-        item = xbmcgui.ListItem(path = new_soup.file.string)

-        xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, item)

-

-

-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

-

-

-def addLink(name,url,mode,iconimage):

-        
u=sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)+"&name="+urllib.quote_plus(name)

-        ok=True

-        liz=xbmcgui.ListItem(name, iconImage="DefaultVideo.png", 
thumbnailImage=iconimage)

-        liz.setInfo( type="Video", infoLabels={ "Title": name } )

-        liz.setProperty("IsPlayable","true")

-        liz.setProperty("Fanart_Image", fanart)

-        
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz,isFolder=False)

-        return ok

-

-

-def addDir(name,url,mode,iconimage):

-        
u=sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)+"&name="+urllib.quote_plus(name)

-        ok=True

-        liz=xbmcgui.ListItem(name, iconImage="DefaultVideo.png", 
thumbnailImage=iconimage)

-        liz.setInfo( type="Video", infoLabels={ "Title": name } )

-        liz.setProperty("Fanart_Image", fanart)

-        
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz,isFolder=True)

-        return ok

-

-

-params=get_params()

-url=None

-name=None

-mode=None

-

-try:

-    url=urllib.unquote_plus(params["url"])

-except:

-    pass

-try:

-    name=urllib.unquote_plus(params["name"])

-except:

-    pass

-try:

-    mode=int(params["mode"])

-except:

-    pass

-

-print "Mode: "+str(mode)

-print "URL: "+str(url)

-print "Name: "+str(name)

-

-if mode==None or url==None or len(url)<1:

-    print ""

-    categories()

-

-elif mode==1:

-    print ""

-    indexPage(url)

-

-elif mode==2:

-    print ""

-    videoLinks(url)

-

-elif mode==3:

-    print ""

-    getPartners()

-

-xbmcplugin.endOfDirectory(int(sys.argv[1]))
\ No newline at end of file
+import urllib
+import urllib2
+from urlparse import urlparse, parse_qs
+from traceback import format_exc
+
+import StorageServer
+import xmltodict
+from bs4 import BeautifulSoup
+
+import xbmcplugin
+import xbmcgui
+import xbmcaddon
+
+addon = xbmcaddon.Addon()
+addon_version = addon.getAddonInfo('version')
+addon_id = addon.getAddonInfo('id')
+cache = StorageServer.StorageServer("zapiks", 24)
+icon = addon.getAddonInfo('icon')
+fanart = addon.getAddonInfo('fanart')
+language = addon.getLocalizedString
+base_url = 'http://www.zapiks.com'
+
+
+def addon_log(string):
+    try:
+        log_message = string.encode('utf-8', 'ignore')
+    except:
+        log_message = 'addonException: addon_log'
+    xbmc.log("[%s-%s]: %s" %(addon_id, addon_version, log_message), 
level=xbmc.LOGDEBUG)
+
+
+def make_request(url, post_data=None):
+    addon_log('Request URL: %s' %url)
+    headers = {
+        'User-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) 
Gecko/20100101 Firefox/24.0',
+        'Referer': base_url
+        }
+    try:
+        req = urllib2.Request(url, post_data, headers)
+        response = urllib2.urlopen(req)
+        data = response.read()
+        response.close()
+        return data
+    except urllib2.URLError, e:
+        addon_log( 'We failed to open "%s".' % url)
+        if hasattr(e, 'reason'):
+            addon_log('We failed to reach a server.')
+            addon_log('Reason: %s' %e.reason)
+        if hasattr(e, 'code'):
+            addon_log('We failed with error code - %s.' %e.code)
+
+
+def cache_categories():
+    soup = BeautifulSoup(make_request(base_url), 'html.parser')
+    items = soup('ul', attrs={'id' : "sports_navigation"})[0]('a')
+    cats = [{'name': i.string.encode('utf-8'), 'url': i['href']} for i in 
items]
+    return cats
+    
+    
+def cache_pro_categories():
+    label_list = ['marques', 'events', 'prods', 'riders', 'crews', 'media']
+    label_dict = {}
+    index = 30001
+    for i in range(len(label_list)):
+        index += 1
+        label_dict[label_list[i]] = language(index)
+    soup = BeautifulSoup(make_request('http://www.zapiks.com/pro/'), 
'html.parser')
+    pro_list = [{'label': label_dict[i.h2['class'][1].split('-')[1]],
+                 'items': [{'title': x.a['title'].encode('utf-8'),
+                            'url': x.a['href'],
+                            'thumb': x.img['src']} for
+            x in i('div')]} for i in soup('div', class_='pro-type-bloc')]
+    return pro_list
+    
+    
+def display_pro_categories():
+    for i in range(30002, 30008):
+        add_dir(language(i), 'pro_cat', icon, 'get_pro_cat')
+        
+        
+def display_pro_category(cat_name):
+    cat_list = cache.cacheFunction(cache_pro_categories)
+    items = [i['items'] for i in cat_list if i['label'] == cat_name][0]
+    for i in items:
+        add_dir(i['title'], i['url'], i['thumb'], 'get_category')
+
+
+def display_categories():
+    add_dir(language(30000), None, icon, 'get_partners')
+    items = cache.cacheFunction(cache_categories)
+    for i in items:
+        if i['name'] == 'more sports': continue
+        add_dir(i['name'].title(), i['url'], icon, 'get_category')
+
+
+def display_category(url):
+    if url.endswith('_/'):
+        nav = get_navigation(base_url + url)
+        dir_name = 'Filters - '
+        for i in nav['filters']:
+            dir_name += '%s | ' %i['name']
+        add_dir(dir_name, 'filter', icon, 'select_filter')
+        soup = BeautifulSoup(make_request(base_url + nav['url']), 
'html.parser')
+    else:
+        soup = BeautifulSoup(make_request(base_url + url), 'html.parser')
+    if '/pro/' in url:
+        items = soup.find('div', attrs={'id': 'content'})('div', 
class_='media_thumbnail')
+    else:
+        items = soup.find('div', class_='col wrapper')('div', 
class_='media_thumbnail')
+    for i in items:
+        title = i.a['title'].encode('utf-8')
+        add_dir(title, base_url + i.a['href'], i.img['src'], 'resolve_url')
+
+    try:
+        page_url = soup.find('h4', class_='page_navigator')('a', 
class_='next')[0]['href']
+        if page_url and page_url != url:
+            add_dir(language(30001), page_url, icon, 'get_category')
+    except:
+        pass
+
+
+def get_navigation(url):
+    soup = BeautifulSoup(make_request(url), 'html.parser')
+    nav_tags = soup.find('div', attrs={'id': 'content'})('div', 
class_='col')[:3]
+    page_url = soup.find('div', attrs={'id': 'central_block'}).a['href']
+    nav = {'url': page_url,
+           'filters': [{'name': i.a['title'].encode('utf-8').title(),
+                        'url': i.a['href']} for
+                            i in nav_tags]}
+    cache.set('navigation', repr(nav))
+    addon_log(repr(nav))
+    return nav
+
+
+def select_filter():
+    nav = eval(cache.get('navigation'))
+    dialog = xbmcgui.Dialog()
+    ret = dialog.select(language(30009), [i['name'] for i in nav['filters']])
+    if ret > -1:
+        return display_category(nav['filters'][ret]['url'])
+
+
+def resolve_url(url, thumb):
+    video_id = thumb.split('/')[-1].split('-')[0]
+    data_url = 'http://www.zapiks.fr/view/index.php'
+    params = {
+        'file': video_id,
+        'lang': 'en',
+        'referer': urllib.quote(url)
+        }
+    data = xmltodict.parse(make_request(data_url, urllib.urlencode(params)))
+    if addon.getSetting('enable_hd') == 'true':
+        try:
+            return data['config']['hd.file']
+        except:
+            addon_log('addonException: hd.file: %s' %format_exc())
+            pass
+    return data['config']['file']
+    
+
+def add_dir(name, url, iconimage, mode):
+    params = {'name': name, 'url': url, 'mode': mode, 'thumb': iconimage}
+    url = '%s?%s' %(sys.argv[0], urllib.urlencode(params))
+    listitem = xbmcgui.ListItem(name, iconImage="DefaultFolder.png", 
thumbnailImage=iconimage)
+    isfolder = True
+    if mode == 'resolve_url':
+        isfolder = False
+        listitem.setProperty('IsPlayable', 'true')
+    listitem.setProperty("Fanart_Image", fanart)
+    listitem.setInfo(type="Video", infoLabels={'Title': name})
+    xbmcplugin.addDirectoryItem(int(sys.argv[1]), url, listitem, isfolder)
+
+
+def get_params():
+    p = parse_qs(sys.argv[2][1:])
+    for i in p.keys():
+        p[i] = p[i][0]
+    return p
+
+
+params = get_params()
+addon_log(repr(params))
+
+try:
+    mode = params['mode']
+except:
+    mode = None
+
+if mode == None:
+    display_categories()
+    xbmcplugin.endOfDirectory(int(sys.argv[1]))
+
+elif mode == 'get_category':
+    display_category(params['url'])
+    xbmcplugin.endOfDirectory(int(sys.argv[1]))
+
+elif mode == 'resolve_url':
+    success = False
+    resolved_url = resolve_url(params['url'], params['thumb'])
+    if resolved_url:
+        success = True
+    else:
+        resolved_url = ''
+    item = xbmcgui.ListItem(path=resolved_url)
+    xbmcplugin.setResolvedUrl(int(sys.argv[1]), success, item)
+
+elif mode == 'select_filter':
+    select_filter()
+    xbmcplugin.endOfDirectory(int(sys.argv[1]))
+    
+elif mode == 'get_partners':
+    display_pro_categories()
+    xbmcplugin.endOfDirectory(int(sys.argv[1]))
+
+elif mode == 'get_pro_cat':
+    display_pro_category(params['name'])
+    xbmcplugin.endOfDirectory(int(sys.argv[1]))
\ No newline at end of file
diff --git a/plugin.video.zapiks/fanart.jpg b/plugin.video.zapiks/fanart.jpg
index 2775bc3..60e1d11 100644
Binary files a/plugin.video.zapiks/fanart.jpg and 
b/plugin.video.zapiks/fanart.jpg differ
diff --git a/plugin.video.zapiks/resources/language/English/strings.xml 
b/plugin.video.zapiks/resources/language/English/strings.xml
index 75c8a87..14cc5e5 100644
--- a/plugin.video.zapiks/resources/language/English/strings.xml
+++ b/plugin.video.zapiks/resources/language/English/strings.xml
@@ -1,10 +1,13 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>

-<strings>

-  <string id="30000">Partner Videos</string>

-  <string id="30001">Next Page</string>

-  <string id="30002">Most Recent</string>

-  <string id="30003">Most Viewed</string>

-  <string id="30004">Most Buzzed</string>

-  <string id="30005">Staff Picks</string>

-  <string id="30006">Sort Videos by</string>

+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<strings>
+  <string id="30000">Zapiks Pro</string>
+  <string id="30001">Next Page</string>
+  <string id="30002">Brands</string>
+  <string id="30003">Events</string>
+  <string id="30004">Productions</string>
+  <string id="30005">Athletes</string>
+  <string id="30006">Crews</string>
+  <string id="30007">Media</string>
+  <string id="30008">Enable HD</string>
+  <string id="30009">Choose Filter</string>
 </strings>
\ No newline at end of file
diff --git a/plugin.video.zapiks/resources/settings.xml 
b/plugin.video.zapiks/resources/settings.xml
index 85430f1..59cef38 100644
--- a/plugin.video.zapiks/resources/settings.xml
+++ b/plugin.video.zapiks/resources/settings.xml
@@ -1,3 +1,4 @@
-<settings>

-   <setting id="sort_method" type="enum" lvalues="30002|30003|30004|30005" 
label="30006" default="0"/>

+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<settings>
+   <setting id="enable_hd" type="bool" label="30008" default="true"/>
 </settings>
\ No newline at end of file

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

Summary of changes:
 plugin.video.zapiks/addon.xml                      |   43 ++-
 plugin.video.zapiks/changelog.txt                  |   53 ++--
 plugin.video.zapiks/default.py                     |  390 +++++++++++---------
 plugin.video.zapiks/fanart.jpg                     |  Bin 117915 -> 335591 
bytes
 plugin.video.zapiks/resources/images/next.png      |  Bin 18680 -> 0 bytes
 .../resources/language/English/strings.xml         |   21 +-
 plugin.video.zapiks/resources/settings.xml         |    5 +-
 7 files changed, 287 insertions(+), 225 deletions(-)
 delete mode 100644 plugin.video.zapiks/resources/images/next.png


hooks/post-receive
-- 
Plugins

------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk
_______________________________________________
Xbmc-addons mailing list
Xbmc-addons@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/xbmc-addons

Reply via email to