The branch, eden has been updated
       via  e1f33f28087913b092c14769d8c96887c270dced (commit)
       via  22e171e8476b6bbd0be1238d072bbf16041b763a (commit)
      from  b9bc5bffbedb68eff672c782254f8f4628afffda (commit)

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

commit e1f33f28087913b092c14769d8c96887c270dced
Author: beenje <[email protected]>
Date:   Sat Aug 3 23:00:22 2013 +0200

    [plugin.video.howstuffworks_com] updated to version 1.0.2

diff --git a/plugin.video.howstuffworks_com/addon.xml 
b/plugin.video.howstuffworks_com/addon.xml
index 0f7eaf2..319131e 100644
--- a/plugin.video.howstuffworks_com/addon.xml
+++ b/plugin.video.howstuffworks_com/addon.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<addon id="plugin.video.howstuffworks_com" name="HowStuffWorks.com" 
version="1.0.1" provider-name="AddonScriptorDE">
+<addon id="plugin.video.howstuffworks_com" name="HowStuffWorks.com" 
version="1.0.2" provider-name="AddonScriptorDE">
     <requires>
         <import addon="xbmc.python" version="2.0"/>
     </requires>
@@ -11,6 +11,9 @@
         <summary lang="en">Learn How Everything Works!</summary>
         <language>en</language>
         <description lang="en">Learn How Everything Works!</description>
-    <platform>all</platform>
+        <website>http://www.howstuffworks.com</website>
+        
<source>https://github.com/AddonScriptorDE/plugin.video.howstuffworks_com</source>
+        <forum>http://forum.xbmc.org/showthread.php?tid=137984</forum>
+        <email>AddonScriptorDE at yahoo dot de</email>
     </extension>
 </addon>
diff --git a/plugin.video.howstuffworks_com/changelog.txt 
b/plugin.video.howstuffworks_com/changelog.txt
index df317e3..d132d0f 100644
--- a/plugin.video.howstuffworks_com/changelog.txt
+++ b/plugin.video.howstuffworks_com/changelog.txt
@@ -1,4 +1,6 @@
 1.0.0
 - First Try
 1.0.1
-- Added workaround for buffering issue
\ No newline at end of file
+- Added workaround for buffering issue
+1.0.2
+- Fixed site changes
diff --git a/plugin.video.howstuffworks_com/default.py 
b/plugin.video.howstuffworks_com/default.py
index 125604a..fc7ef17 100644
--- a/plugin.video.howstuffworks_com/default.py
+++ b/plugin.video.howstuffworks_com/default.py
@@ -1,264 +1,254 @@
 #!/usr/bin/python
 # -*- coding: utf-8 -*-
-import urllib,urllib2,re,xbmcplugin,xbmcgui,sys,xbmcaddon,base64,socket
+import urllib
+import urllib2
+import socket
+import sys
+import re
+import xbmcplugin
+import xbmcgui
+import xbmcaddon
 
+addon = xbmcaddon.Addon()
 socket.setdefaulttimeout(30)
 pluginhandle = int(sys.argv[1])
-settings = xbmcaddon.Addon(id='plugin.video.howstuffworks_com')
-translation = settings.getLocalizedString
+translation = addon.getLocalizedString
+forceViewMode = addon.getSetting("forceViewMode") == "true"
+viewMode = str(addon.getSetting("viewMode"))
+autoPlay = int(addon.getSetting("autoPlay"))
+urlMain = "http://www.howstuffworks.com";
 
-forceViewMode=settings.getSetting("forceViewMode")
-if forceViewMode=="true":
-  forceViewMode=True
-else:
-  forceViewMode=False
-viewMode=str(settings.getSetting("viewMode"))
-autoPlay=int(settings.getSetting("autoPlay"))
 
 def index():
-        addDir(translation(30003), "", "search", "")
-        listCategories("http://videos.howstuffworks.com/";)
+    addDir(translation(30002), urlMain+"/videos", "listType", "")
+    content = getUrl(urlMain+"/videos")
+    content = content[content.find('<div class="module module-slider 
slider-paged pre shows"'):]
+    content = content[:content.find('<div class="slider-ui">')]
+    spl = content.split('<div class="fragment-media  media-vertical 
paged-member member-')
+    for i in range(1, len(spl), 1):
+        entry = spl[i]
+        match = re.compile('<div class="media-title">.+?>(.+?)</a>', 
re.DOTALL).findall(entry)
+        title = match[0]
+        title = cleanTitle(title)
+        match = re.compile('href="(.+?)"', re.DOTALL).findall(entry)
+        url = match[0]
+        match = re.compile('src="(.+?)"', re.DOTALL).findall(entry)
+        thumb = match[0]  # .replace("/w_160/w_640/","/h_720/")
+        addDir(title, url, 'listType', thumb)
+    addDir(translation(30005), "", "listCollections", "")
+    addDir(translation(30006), "", "listCats", "")
+    addDir(translation(30007), "", "search", "")
+    xbmcplugin.endOfDirectory(pluginhandle)
+
+
+def listType(url):
+    addDir(translation(30003), url, "listLatest", "")
+    addDir(translation(30004), url, "listMostWatched", "")
+    xbmcplugin.endOfDirectory(pluginhandle)
+
 
-def listCategories(url):
-        content = getUrl(url)
-        spl=content.split('<td class="exploreCats"')
-        if len(spl)>2:
-          addDir(translation(30004),url,'listPlaylists',"")
-          addDir(translation(30005),url,'listLatestVideos',"")
-          if url!="http://videos.howstuffworks.com/":
-            addDir(translation(30006)+" ("+translation(30007)+" 
500)",url,'listVideos',"")
-          for i in range(1,len(spl),1):
-            entry=spl[i]
-            match=re.compile('Category Explorer : (.+?)">(.+?)</a> 
(.+?)</td>', re.DOTALL).findall(entry)
-            title=match[0][0]+" "+match[0][2]
-            title=cleanTitle(title)
-            match=re.compile('href="(.+?)"', re.DOTALL).findall(entry)
-            url=match[0]
-            addDir(title,url,'listCategories',"")
-        else:
-          listVideos(url)
-        xbmcplugin.endOfDirectory(pluginhandle)
-        if forceViewMode==True:
-          xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
+def listLatest(url):
+    content = getUrl(url)
+    spl = content.split('<div class="fragment-media  media-vertical 
grid-member member-')
+    for i in range(1, len(spl), 1):
+        entry = spl[i]
+        match = re.compile('<div class="media-title">.+?>(.+?)</a>', 
re.DOTALL).findall(entry)
+        title = match[0]
+        title = cleanTitle(title)
+        match = re.compile('href="(.+?)"', re.DOTALL).findall(entry)
+        url = match[0]
+        match = re.compile('src="(.+?)"', re.DOTALL).findall(entry)
+        thumb = match[0]  # .replace("/w_160/w_640/","/h_720/")
+        addLink(title, url, 'playVideo', thumb)
+    xbmcplugin.endOfDirectory(pluginhandle)
+    if forceViewMode:
+        xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
 
-def listVideos(url):
-        xbmcplugin.addSortMethod(pluginhandle, xbmcplugin.SORT_METHOD_LABEL)
-        content = 
getUrl("http://videos.howstuffworks.com/syndicate.php?f=rss&c=content&u="+urllib.quote_plus(url))
-        spl=content.split('<item>')
-        for i in range(1,len(spl),1):
-            entry=spl[i]
-            match=re.compile('<title>(.+?)</title>', re.DOTALL).findall(entry)
-            title=match[0]
-            title=cleanTitle(title)
-            match=re.compile('<description>(.+?)</description>', 
re.DOTALL).findall(entry)
-            desc=""
-            if len(match)>0:
-              desc=match[0]
-              desc=cleanTitle(desc)
-            
match=re.compile('<link>http://videos.howstuffworks.com/(.+?)/(.+?)-(.+?)</link>',
 re.DOTALL).findall(entry)
-            id=match[0][1]
-            match=re.compile('url="(.+?)"', re.DOTALL).findall(entry)
-            thumb=match[0]
-            addLink(title,id,'playVideo',thumb,desc)
-        xbmcplugin.endOfDirectory(pluginhandle)
-        if forceViewMode==True:
-          xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
 
-def listLatestVideos(url):
-        content = getUrl(url)
-        content = content[content.find('<div class="content recent">'):]
-        content = content[:content.find('<div class="item-list browse-videos 
module">')]
-        spl=content.split('<div class="item center">')
-        for i in range(1,len(spl),1):
-            entry=spl[i]
-            match=re.compile('alt="(.+?)"', re.DOTALL).findall(entry)
-            title=match[0]
-            title=cleanTitle(title)
-            match=re.compile('&nbsp;\\((.+?)\\)', re.DOTALL).findall(entry)
-            length=match[0]
-            match=re.compile('href="/(.+?)/(.+?)-(.+?)"', 
re.DOTALL).findall(entry)
-            id=match[0][1]
-            match=re.compile('src="(.+?)"', re.DOTALL).findall(entry)
-            thumb=match[0]
-            addLink(title,id,'playVideo',thumb,"",length)
-        xbmcplugin.endOfDirectory(pluginhandle)
-        if forceViewMode==True:
-          xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
+def listMostWatched(url):
+    content = getUrl(url)
+    content = content[content.find('<div class="module module-slider 
slider-paged pre most-watched"'):]
+    content = content[:content.find('<div class="slider-ui">')]
+    spl = content.split('<div class="fragment-media  media-vertical 
paged-member member-')
+    for i in range(1, len(spl), 1):
+        entry = spl[i]
+        match = re.compile('<div class="media-title">.+?>(.+?)</a>', 
re.DOTALL).findall(entry)
+        title = match[0]
+        title = cleanTitle(title)
+        match = re.compile('href="(.+?)"', re.DOTALL).findall(entry)
+        url = match[0]
+        match = re.compile('src="(.+?)"', re.DOTALL).findall(entry)
+        thumb = match[0]  # .replace("/w_160/w_640/","/h_720/")
+        addLink(title, url, 'playVideo', thumb)
+    xbmcplugin.endOfDirectory(pluginhandle)
+    if forceViewMode:
+        xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
 
-def listPlaylists(url):
-        if url.find("/ajax/")==-1:
-          content = getUrl(url)
-          match=re.compile('contentId:"(.+?)"', re.DOTALL).findall(content)
-          content = 
getUrl("http://videos.howstuffworks.com/ajax/top-playlists-videos?page=1&camcid="+match[0]+"&pageType=VideoCategory";)
-        else:
-          content = getUrl(url)
-        spl=content.split('<div class="item center">')
-        for i in range(1,len(spl),1):
-            entry=spl[i]
-            match=re.compile('alt="(.+?)"', re.DOTALL).findall(entry)
-            title=match[0]
-            title=cleanTitle(title)
-            match=re.compile('<br />\\((.+?)\\)</a>', re.DOTALL).findall(entry)
-            vids=match[0]
-            title=title+" ("+vids+")"
-            match=re.compile('href="(.+?)"', re.DOTALL).findall(entry)
-            url=match[0]
-            match=re.compile('src="(.+?)"', re.DOTALL).findall(entry)
-            thumb=match[0]
-            addDir(title,url,'listPlaylist',thumb)
-        if content.find('id="btnNextVideos"')>=0:
-          content=content[content.find('<div class="rightVideoArrow">'):]
-          match=re.compile("getTopPlaylists\\('(.+?)','(.+?)','(.+?)'\\)", 
re.DOTALL).findall(entry)
-          page=match[0][0]
-          id=match[0][1]
-          type=match[0][2]
-          
url="http://videos.howstuffworks.com/ajax/top-playlists-videos?page="+page+"&camcid="+id+"&pageType="+type
-          addDir(translation(30001)+" ("+page+")",url,'listPlaylists',"")
-        xbmcplugin.endOfDirectory(pluginhandle)
-        if forceViewMode==True:
-          xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
 
-def listPlaylist(url):
-        content = getUrl(url)
-        spl=content.split('<div class="line itemContainer"')
-        for i in range(1,len(spl),1):
-            entry=spl[i]
-            match=re.compile('class="bold">(.+?) \\((.+?)\\)</a>', 
re.DOTALL).findall(entry)
-            title=match[0][0]
-            length=match[0][1]
-            title=cleanTitle(title)
-            match=re.compile('short_description="(.+?)"', 
re.DOTALL).findall(entry)
-            desc=match[0]
-            desc=cleanTitle(desc)
-            match=re.compile('video_id="(.+?)"', re.DOTALL).findall(entry)
-            id=match[0]
-            match=re.compile('src="(.+?)"', re.DOTALL).findall(entry)
-            thumb=match[0]
-            addLink(title,id,'playVideo',thumb,desc,length)
-        match=re.compile('<div id="next-page-video" title="(.+?)" 
url="(.+?)"', re.DOTALL).findall(entry)
-        if len(match)>0:
-          addDir(translation(30001),match[0][1],'listPlaylist',"")
-        xbmcplugin.endOfDirectory(pluginhandle)
-        if forceViewMode==True:
-          xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
+def listCollections():
+    content = getUrl(urlMain+"/videos")
+    content = content[content.find('<div class="module module-slider 
slider-paged pre top-collections"'):]
+    content = content[:content.find('<div class="slider-ui">')]
+    spl = content.split('<div class="fragment-media  media-vertical 
paged-member member-')
+    for i in range(1, len(spl), 1):
+        entry = spl[i]
+        match = re.compile('<div class="media-title">.+?>(.+?)</a>', 
re.DOTALL).findall(entry)
+        title = match[0]
+        title = cleanTitle(title)
+        match = re.compile('href="(.+?)"', re.DOTALL).findall(entry)
+        url = match[0]
+        match = re.compile('src="(.+?)"', re.DOTALL).findall(entry)
+        thumb = match[0]  # .replace("/w_160/w_640/","/h_720/")
+        addDir(title, url, 'listType', thumb)
+    xbmcplugin.endOfDirectory(pluginhandle)
+    if forceViewMode:
+        xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
+
+
+def listCats():
+    content = getUrl(urlMain+"/videos")
+    content = content[content.find('<ul id="subChannelNav">'):]
+    content = content[:content.find('</ul>')]
+    match = re.compile('<a class="event-click-tracking" 
href="(.+?)".+?>(.+?)</a>', re.DOTALL).findall(content)
+    for url, title in match:
+        addDir(cleanTitle(title), url, 'listType', "")
+    xbmcplugin.endOfDirectory(pluginhandle)
+
 
 def search():
-        keyboard = xbmc.Keyboard('', translation(30003))
-        keyboard.doModal()
-        if keyboard.isConfirmed() and keyboard.getText():
-          search_string = keyboard.getText().replace(" ","+")
-          
listSearch('http://videos.howstuffworks.com/search.php?media=video&terms='+search_string)
+    keyboard = xbmc.Keyboard('', translation(30003))
+    keyboard.doModal()
+    if keyboard.isConfirmed() and keyboard.getText():
+        search_string = keyboard.getText().replace(" ", "+")
+        
listSearch('http://videos.howstuffworks.com/search.php?media=video&terms='+search_string)
+
 
 def listSearch(url):
-        results=[]
-        content = getUrl(url)
-        spl=content.split('<div class="item video">')
-        for i in range(1,len(spl),1):
-            entry=spl[i]
-            match=re.compile('title="(.+?)"', re.DOTALL).findall(entry)
-            title=match[0]
-            title=cleanTitle(title)
-            match=re.compile('<h4>Time: (.+?)</h4>', re.DOTALL).findall(entry)
-            length=match[0]
-            match=re.compile('<td colspan="2">(.+?)</td>', 
re.DOTALL).findall(entry)
-            desc=match[0]
-            
match=re.compile('href="http://videos.howstuffworks.com/(.+?)/(.+?)-(.+?)"', 
re.DOTALL).findall(entry)
-            id=match[0][1]
-            match=re.compile('src="(.+?)"', re.DOTALL).findall(entry)
-            thumb=match[0]
-            if id not in results:
-              results.append(id)
-              addLink(title,id,'playVideo',thumb,desc,length)
-        if content.find('<div class="more-results">')>0:
-          content=content[content.find('<div class="more-results">'):]
-          content=content[:content.find('</div>')]
-          spl=content.split("<a href=")
-          for i in range(1,len(spl),1):
-            entry=spl[i]
-            if entry.find('<span class="uppercase">next</span>')>0:
-              match=re.compile('"(.+?)"', re.DOTALL).findall(entry)
-              
addDir(translation(30002),match[0].replace("&amp;","&"),'listSearch',"")
-        xbmcplugin.endOfDirectory(pluginhandle)
-        if forceViewMode==True:
-          xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
+    results = []
+    content = getUrl(url)
+    spl = content.split('<div class="item video">')
+    for i in range(1, len(spl), 1):
+        entry = spl[i]
+        match = re.compile('title="(.+?)"', re.DOTALL).findall(entry)
+        title = match[0]
+        title = cleanTitle(title)
+        match = re.compile('<h4>Time: (.+?)</h4>', re.DOTALL).findall(entry)
+        length = match[0]
+        if length.startswith("00:"):
+            length="1"
+        match = re.compile('<td colspan="2">(.+?)</td>', 
re.DOTALL).findall(entry)
+        desc = match[0]
+        match = re.compile('href="(.+?)"', re.DOTALL).findall(entry)
+        url = match[0]
+        match = re.compile('src="(.+?)"', re.DOTALL).findall(entry)
+        thumb = match[0]
+        if url not in results:
+            results.append(url)
+            addLink(title, url, 'playVideo', thumb, desc, length)
+    if content.find('<div class="more-results">') > 0:
+        content = content[content.find('<div class="more-results">'):]
+        content = content[:content.find('</div>')]
+        spl = content.split("<a href=")
+        for i in range(1, len(spl), 1):
+            entry = spl[i]
+            if '<span class="uppercase">next</span>' in entry:
+                match = re.compile('"(.+?)"', re.DOTALL).findall(entry)
+                addDir(translation(30001), match[0].replace("&amp;", "&"), 
'listSearch', "")
+    xbmcplugin.endOfDirectory(pluginhandle)
+    if forceViewMode:
+        xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
 
-def playVideo(id):
-        content = 
getUrl("http://static.discoverymedia.com/videos/components/hsw/"+id+"-title/smil-service.smil";)
-        match=re.compile('<meta name="httpBase" content="(.+?)"', 
re.DOTALL).findall(content)
-        base=match[0]
-        maxBitrate=0
-        match=re.compile('<video src="(.+?)" system-bitrate="(.+?)"/>', 
re.DOTALL).findall(content)
+
+def playVideo(url):
+    content = getUrl(url)
+    match = re.compile("m3u8                   : '(.*?)'", 
re.DOTALL).findall(content)
+    finalUrl = match[0]
+    if finalUrl:
+        listitem = xbmcgui.ListItem(path=finalUrl)
+        xbmcplugin.setResolvedUrl(pluginhandle, True, listitem)
+    else:
+        match = re.compile("reference_id       : '(.+?)-title'", 
re.DOTALL).findall(content)
+        content = 
getUrl("http://static.discoverymedia.com/videos/components/hsw/"+match[0]+"-title/smil-service.smil";)
+        match = re.compile('<meta name="httpBase".+?content="(.+?)"', 
re.DOTALL).findall(content)
+        base = match[0]
+        maxBitrate = 0
+        match = re.compile('<video src="(.+?)" system-bitrate="(.+?)"', 
re.DOTALL).findall(content)
         for urlTemp, bitrateTemp in match:
-          bitrate=int(bitrateTemp)
-          if bitrate>maxBitrate:
-            maxBitrate=bitrate
-            url=urlTemp
-        url=base+"/"+url+"?v=2.6.8&fp=&r=&g="
-        listitem = xbmcgui.ListItem(path=url)
+            bitrate = int(bitrateTemp)
+            if bitrate > maxBitrate:
+                maxBitrate = bitrate
+                finalUrl = urlTemp
+        finalUrl = base+"/"+finalUrl+"?v=2.6.8&fp=&r=&g="
+        listitem = xbmcgui.ListItem(path=finalUrl)
         xbmcplugin.setResolvedUrl(pluginhandle, True, listitem)
-        if autoPlay>0:
-          xbmc.sleep(autoPlay*1000)
-          if xbmc.Player().isPlaying()==True and 
int(xbmc.Player().getTime())==0:
-            xbmc.Player().pause()
+        if autoPlay > 0:
+            xbmc.sleep(autoPlay*1000)
+            if xbmc.Player().isPlaying() == True and 
int(xbmc.Player().getTime()) == 0:
+                xbmc.Player().pause()
+
 
 def cleanTitle(title):
-        
title=title.replace("&lt;","<").replace("&gt;",">").replace("&amp;","&").replace("&#039;","\\").replace("&quot;","\"").replace("&szlig;","ß").replace("&ndash;","-")
-        
title=title.replace("&Auml;","Ä").replace("&Uuml;","Ü").replace("&Ouml;","Ö").replace("&auml;","ä").replace("&uuml;","ü").replace("&ouml;","ö")
-        title=title.strip()
-        return title
+    title = title.replace("&lt;", "<").replace("&gt;", ">").replace("&amp;", 
"&").replace("&#039;", "\\").replace("&quot;", "\"").replace("&szlig;", 
"ß").replace("&ndash;", "-")
+    title = title.replace("&Auml;", "Ä").replace("&Uuml;", 
"Ü").replace("&Ouml;", "Ö").replace("&auml;", "ä").replace("&uuml;", 
"ü").replace("&ouml;", "ö")
+    title = title.strip()
+    return title
+
 
 def getUrl(url):
-        req = urllib2.Request(url)
-        req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; rv:11.0) 
Gecko/20100101 Firefox/13.0')
-        response = urllib2.urlopen(req)
-        link=response.read()
-        response.close()
-        return link
+    req = urllib2.Request(url)
+    req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; rv:22.0) 
Gecko/20100101 Firefox/22.0')
+    response = urllib2.urlopen(req)
+    link = response.read()
+    response.close()
+    return link
+
 
 def parameters_string_to_dict(parameters):
-        ''' Convert parameters encoded in a URL to a dict. '''
-        paramDict = {}
-        if parameters:
-            paramPairs = parameters[1:].split("&")
-            for paramsPair in paramPairs:
-                paramSplits = paramsPair.split('=')
-                if (len(paramSplits)) == 2:
-                    paramDict[paramSplits[0]] = paramSplits[1]
-        return paramDict
+    ''' Convert parameters encoded in a URL to a dict. '''
+    paramDict = {}
+    if parameters:
+        paramPairs = parameters[1:].split("&")
+        for paramsPair in paramPairs:
+            paramSplits = paramsPair.split('=')
+            if (len(paramSplits)) == 2:
+                paramDict[paramSplits[0]] = paramSplits[1]
+    return paramDict
+
+
+def addLink(name, url, mode, iconimage, desc="", length=""):
+    u = sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)
+    ok = True
+    liz = xbmcgui.ListItem(name, iconImage="DefaultVideo.png", 
thumbnailImage=iconimage)
+    liz.setInfo(type="Video", infoLabels={"Title": name, "Plot": desc, 
"Duration": length})
+    liz.setProperty('IsPlayable', 'true')
+    ok = xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=u, 
listitem=liz)
+    return ok
+
 
-def addLink(name,url,mode,iconimage,desc,length=""):
-        u=sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)
-        ok=True
-        liz=xbmcgui.ListItem(name, iconImage="DefaultVideo.png", 
thumbnailImage=iconimage)
-        liz.setInfo( type="Video", infoLabels={ "Title": name, "Plot": desc, 
"Duration": length } )
-        liz.setProperty('IsPlayable', 'true')
-        
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz)
-        return ok
+def addDir(name, url, mode, iconimage):
+    u = sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)
+    ok = True
+    liz = xbmcgui.ListItem(name, iconImage="DefaultFolder.png", 
thumbnailImage=iconimage)
+    liz.setInfo(type="Video", infoLabels={"Title": name})
+    ok = xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=u, 
listitem=liz, isFolder=True)
+    return ok
 
-def addDir(name,url,mode,iconimage):
-        u=sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)
-        ok=True
-        liz=xbmcgui.ListItem(name, iconImage="DefaultFolder.png", 
thumbnailImage=iconimage)
-        liz.setInfo( type="Video", infoLabels={ "Title": name } )
-        
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz,isFolder=True)
-        return ok
-         
-params=parameters_string_to_dict(sys.argv[2])
-mode=params.get('mode')
-url=params.get('url')
-if type(url)==type(str()):
-  url=urllib.unquote_plus(url)
+params = parameters_string_to_dict(sys.argv[2])
+mode = urllib.unquote_plus(params.get('mode', ''))
+url = urllib.unquote_plus(params.get('url', ''))
 
 if mode == 'listVideos':
     listVideos(url)
-elif mode == 'listCategories':
-    listCategories(url)
-elif mode == 'listPlaylists':
-    listPlaylists(url)
-elif mode == 'listPlaylist':
-    listPlaylist(url)
-elif mode == 'listLatestVideos':
-    listLatestVideos(url)
+elif mode == 'listLatest':
+    listLatest(url)
+elif mode == 'listType':
+    listType(url)
+elif mode == 'listMostWatched':
+    listMostWatched(url)
+elif mode == 'listCollections':
+    listCollections()
+elif mode == 'listCats':
+    listCats()
 elif mode == 'playVideo':
     playVideo(url)
 elif mode == 'search':
diff --git 
a/plugin.video.howstuffworks_com/resources/language/English/strings.xml 
b/plugin.video.howstuffworks_com/resources/language/English/strings.xml
index e42a6c7..46ee346 100644
--- a/plugin.video.howstuffworks_com/resources/language/English/strings.xml
+++ b/plugin.video.howstuffworks_com/resources/language/English/strings.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <strings>
   <string id="30001">Next Page</string>
-  <string id="30002">More results</string>
-  <string id="30003">Search</string>
-  <string id="30004">Top Playlists</string>
-  <string id="30005">Latest Videos</string>
-  <string id="30006">All Videos</string>
-  <string id="30007">max</string>
+  <string id="30002">All Videos</string>
+  <string id="30003">Latest</string>
+  <string id="30004">Most Watched</string>
+  <string id="30005">Top Collections</string>
+  <string id="30006">Categories</string>
+  <string id="30007">Search</string>
   <string id="30101">Force View</string>
   <string id="30102">ViewID</string>
   <string id="30103">Autoplay after sec (0=OFF)</string>
diff --git a/plugin.video.howstuffworks_com/resources/settings.xml 
b/plugin.video.howstuffworks_com/resources/settings.xml
index 5feb0ac..8eeeddf 100644
--- a/plugin.video.howstuffworks_com/resources/settings.xml
+++ b/plugin.video.howstuffworks_com/resources/settings.xml
@@ -1,5 +1,5 @@
 <settings>
    <setting id="autoPlay" type="number" label="30103" default="5"/>
-   <setting id="forceViewMode" type="bool" label="30101" default="false"/>
+   <setting id="forceViewMode" type="bool" label="30101" default="true"/>
    <setting id="viewMode" type="number" label="30102" default="500"/>
 </settings>

http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=22e171e8476b6bbd0be1238d072bbf16041b763a

commit 22e171e8476b6bbd0be1238d072bbf16041b763a
Author: beenje <[email protected]>
Date:   Sat Aug 3 23:00:21 2013 +0200

    [plugin.video.wired_com] updated to version 1.0.2

diff --git a/plugin.video.wired_com/addon.xml b/plugin.video.wired_com/addon.xml
index 321c7b6..03e930e 100644
--- a/plugin.video.wired_com/addon.xml
+++ b/plugin.video.wired_com/addon.xml
@@ -1,8 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<addon id="plugin.video.wired_com" name="Wired.com" version="1.0.1" 
provider-name="AddonScriptorDE">
+<addon id="plugin.video.wired_com" name="Wired.com" version="1.0.2" 
provider-name="AddonScriptorDE">
     <requires>
         <import addon="xbmc.python" version="2.0"/>
-        <import addon="script.module.pyamf" version="0.6.1"/>
     </requires>
     <extension point="xbmc.python.pluginsource" library="default.py">
         <provides>video</provides>
@@ -12,7 +11,9 @@
         <summary lang="en">Watch videos from the technology magazine 
Wired</summary>
         <language>en</language>
         <description lang="en">Watch videos from the technology magazine 
Wired</description>
-        <disclaimer lang="en">Some parts of this addon may not be legal in 
your country of residence - please check with your local laws before 
installing.</disclaimer>
-    <platform>all</platform>
+        <website>http://www.wired.com</website>
+        
<source>https://github.com/AddonScriptorDE/plugin.video.wired_com</source>
+        <forum>http://forum.xbmc.org/showthread.php?tid=136354</forum>
+        <email>AddonScriptorDE at yahoo dot de</email>
     </extension>
 </addon>
diff --git a/plugin.video.wired_com/changelog.txt 
b/plugin.video.wired_com/changelog.txt
index 3d3c90c..7333214 100644
--- a/plugin.video.wired_com/changelog.txt
+++ b/plugin.video.wired_com/changelog.txt
@@ -1,4 +1,6 @@
 1.0.0
 - First Try
 1.0.1
-- Fixed site changes
\ No newline at end of file
+- Fixed site changes
+1.0.2 / 2.0.2
+- Fixed site changes
diff --git a/plugin.video.wired_com/default.py 
b/plugin.video.wired_com/default.py
index 211bc30..3174d6c 100644
--- a/plugin.video.wired_com/default.py
+++ b/plugin.video.wired_com/default.py
@@ -1,161 +1,165 @@
 #!/usr/bin/python
 # -*- coding: utf-8 -*-
-import 
urllib,urllib2,re,xbmcplugin,xbmcgui,sys,xbmcaddon,base64,httplib,socket,time
-from pyamf import remoting
+import urllib
+import urllib2
+import socket
+import sys
+import re
+import xbmcplugin
+import xbmcgui
+import xbmcaddon
 
+addon = xbmcaddon.Addon()
 socket.setdefaulttimeout(30)
 pluginhandle = int(sys.argv[1])
-addon = xbmcaddon.Addon(id='plugin.video.wired_com')
 translation = addon.getLocalizedString
+forceViewMode = addon.getSetting("forceViewMode") == "true"
+useThumbAsFanart = addon.getSetting("useThumbAsFanart") == "true"
+viewMode = str(addon.getSetting("viewMode"))
+quality = addon.getSetting("quality")
+urlMain = "http://video.wired.com";
 
-maxBitRate=addon.getSetting("maxBitRate")
-forceViewMode=addon.getSetting("forceViewMode")
-if forceViewMode=="true":
-  forceViewMode=True
-else:
-  forceViewMode=False
-viewMode=str(addon.getSetting("viewMode"))
-
-qual=[512000,1024000,2048000,3072000,4096000,5120000]
-maxBitRate=qual[int(maxBitRate)]
 
 def index():
-        addDir("Latest","http://www.wired.com/video/";,'listVideos',"")
-        content = getUrl("http://www.wired.com/video/";)
-        content = content[content.find('<li class="bc_topics 
bc_otherChannels">'):]
-        content = content[:content.find("</div>")]
-        match=re.compile('<li><a href="(.+?)">(.+?)</a></li>', 
re.DOTALL).findall(content)
-        for url,title in match:
-          if title!="Nebula":
-            addDir(title,"http://www.wired.com"+url,'listVideos',"")
-        xbmcplugin.endOfDirectory(pluginhandle)
-        if forceViewMode==True:
-          xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
+    addDir(translation(30001), urlMain, 'listVideos', "")
+    content = getUrl(urlMain+"/series")
+    spl = content.split('<div class="cne-thumb-image cne-rollover">')
+    for i in range(1, len(spl), 1):
+        entry = spl[i]
+        match = re.compile('<p class="cne-series-title">(.+?)</p>', 
re.DOTALL).findall(entry)
+        title = match[0]
+        title = cleanTitle(title)
+        match = re.compile('<span class="cne-thumb-description">(.+?)</span>', 
re.DOTALL).findall(entry)
+        desc = match[0]
+        desc = cleanTitle(desc)
+        match = re.compile('href="(.+?)"', re.DOTALL).findall(entry)
+        url = urlMain+match[0]
+        match = re.compile('src="(.+?)"', re.DOTALL).findall(entry)
+        thumb = 
match[0].replace("/c_fill,d_placeholder_cne.jpg,g_face,h_270,q_90,w_480", "")
+        addDir(title, url, 'listVideos', thumb, desc)
+    addDir(translation(30002), "", 'listCats', "")
+    addDir(translation(30004), "", 'search', "")
+    xbmcplugin.endOfDirectory(pluginhandle)
+
+
+def listCats():
+    content = getUrl(urlMain)
+    content = content[content.find('<ul class="cne-category-select">'):]
+    content = content[:content.find('</ul>')]
+    match = re.compile('<a href="/\?category=(.+?)" class="cne-ajax" 
data-ajaxurl="(.+?)" id="(.+?)">(.+?)</a>', re.DOTALL).findall(content)
+    for url, url2, id, title in match:
+        addDir(cleanTitle(title), urlMain+"/?category="+url, 'listVideos', "")
+    xbmcplugin.endOfDirectory(pluginhandle)
+
 
 def listVideos(url):
-        ids=[]
-        urlMain = url
-        content = getUrl(url)
-        spl=content.split('<div class="lineupThumb">')
-        for i in range(1,len(spl),1):
-            entry=spl[i]
-            match=re.compile('_popDesc_1" class="bc_popDesc">(.+?)</div>', 
re.DOTALL).findall(entry)
-            desc=""
-            if len(match)>0:
-              desc=match[0]
-              desc=cleanTitle(desc)
-            match=re.compile('alt="(.+?)"', re.DOTALL).findall(entry)
-            title=match[0]
-            title=cleanTitle(title)
-            match=re.compile('<div id="bc_(.+?)_', re.DOTALL).findall(entry)
-            id=match[0]
-            match=re.compile('_thumbUrl_1" class="bc_popDesc">(.+?)</div>', 
re.DOTALL).findall(entry)
-            thumb=""
-            if len(match)>0:
-              thumb=match[0]
-            if not id in ids:
-              ids.append(id)
-              addLink(title,id,'playBrightCoveStream',thumb,desc)
-        xbmcplugin.endOfDirectory(pluginhandle)
-        if forceViewMode==True:
-          xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
+    urlTemp = url
+    content = getUrl(url).replace("\\", "")
+    if "/series/" not in url and "/videos/load?" not in url:
+        content = content[content.find('<div class="cne-thumb-grid-container 
cne-context-container">'):]
+    spl = content.split('<div class="cne-thumb cne-episode-block"')
+    for i in range(1, len(spl), 1):
+        entry = spl[i]
+        match = re.compile('<span class="cne-rollover-name">(.+?)</span>', 
re.DOTALL).findall(entry)
+        title = match[0]
+        title = cleanTitle(title)
+        match = re.compile('<span 
class="cne-rollover-description">(.+?)</span>', re.DOTALL).findall(entry)
+        desc = match[0]
+        desc = cleanTitle(desc)
+        match = re.compile('href="(.+?)"', re.DOTALL).findall(entry)
+        url = urlMain+match[0]
+        match = re.compile('src="(.+?)"', re.DOTALL).findall(entry)
+        thumb = 
match[0].replace("/c_fill,d_placeholder_cne.jpg,g_face,h_151,q_90,w_270", "")
+        addLink(title, url, 'playVideo', thumb, desc)
+    match = re.compile('<div class="cne-more-videos cne-light-button" 
>.+?data-ajaxurl="(.+?)"', re.DOTALL).findall(content)
+    # match2=re.compile("'ajaxurl', '(.+?)'", re.DOTALL).findall(content)
+    if match and "?category=" not in urlTemp:
+        addDir(translation(30003), urlMain+match[0].replace("&amp;", 
"&").replace("/load?page=", "/load?context=browse&page="), 'listVideos', "")
+    # elif match2:
+    #    addDir(translation(30003), urlMain+match2[0].replace("&amp;","&"), 
'listVideos', "")
+    xbmcplugin.endOfDirectory(pluginhandle)
+    if forceViewMode:
+        xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
+
 
 def search():
-        keyboard = xbmc.Keyboard('', translation(30004))
-        keyboard.doModal()
-        if keyboard.isConfirmed() and keyboard.getText():
-          search_string = keyboard.getText().replace(" ","+")
-          content = 
getUrl('http://www.redbull.tv/cs/Satellite?_=1341632208902&pagename=RBWebTV%2FRBWTVSearchResult&q='+search_string)
-          if content.find("<!-- Episodes -->")>=0:
-            content = content[content.find('<!-- Episodes -->'):]
-            spl=content.split('<div class="results-item">')
-            for i in range(1,len(spl),1):
-                entry=spl[i]
-                match=re.compile('<span style="font-weight: 
bold;">(.+?)</span><br/>', re.DOTALL).findall(entry)
-                title=match[0]
-                title=cleanTitle(title)
-                match=re.compile('href="(.+?)"', re.DOTALL).findall(entry)
-                url="http://www.redbull.tv"+match[0]
-                addLink(title,url,'playVideo',"")
-          xbmcplugin.endOfDirectory(pluginhandle)
-          if forceViewMode==True:
-            xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
-
-def playBrightCoveStream(bc_videoID):
-        bc_playerID = 1716442119
-        bc_publisherID = 1564549380
-        bc_const = "70e339d95edc21381e28c3d5f182e9b653c2a35e"
-        conn = httplib.HTTPConnection("c.brightcove.com")
-        envelope = remoting.Envelope(amfVersion=3)
-        envelope.bodies.append(("/1", 
remoting.Request(target="com.brightcove.player.runtime.PlayerMediaFacade.findMediaById",
 body=[bc_const, bc_playerID, bc_videoID, bc_publisherID], envelope=envelope)))
-        conn.request("POST", "/services/messagebroker/amf?playerId=" + 
str(bc_playerID), str(remoting.encode(envelope).read()), {'content-type': 
'application/x-amf'})
-        response = conn.getresponse().read()
-        response = remoting.decode(response).bodies[0][1].body
-        streamUrl = ""
-        for item in sorted(response['renditions'], key=lambda 
item:item['encodingRate'], reverse=False):
-          encRate = item['encodingRate']
-          if encRate < maxBitRate:
-            streamUrl = item['defaultURL']
-        if streamUrl=="":
-          streamUrl=response['FLVFullLengthURL']
-        if streamUrl!="":
-          url = streamUrl[0:streamUrl.find("&")]
-          playpath = streamUrl[streamUrl.find("&")+1:]
-          listItem = xbmcgui.ListItem(path=url+' playpath='+playpath)
-          xbmcplugin.setResolvedUrl(pluginhandle,True,listItem)
+    keyboard = xbmc.Keyboard('', translation(30004))
+    keyboard.doModal()
+    if keyboard.isConfirmed() and keyboard.getText():
+        search_string = keyboard.getText().replace(" ", "%20")
+        listVideos("http://video.wired.com/videos/search/"+search_string)
+
+
+def playVideo(url):
+    content = getUrl(url)
+    match = re.compile('<link itemprop="contentURL" href="(.+?)">', 
re.DOTALL).findall(content)
+    finalUrl = match[0]
+    if quality == "1":
+        finalUrl = finalUrl.replace("low.mp4", "high.webm")
+    else:
+        finalUrl = finalUrl.replace("low.mp4", "low.webm")
+    listItem = xbmcgui.ListItem(path=finalUrl)
+    xbmcplugin.setResolvedUrl(pluginhandle, True, listItem)
+
 
 def cleanTitle(title):
-        
title=title.replace("&lt;","<").replace("&gt;",">").replace("&amp;","&").replace("&#039;","'").replace("&quot;","\"").replace("&szlig;","ß").replace("&ndash;","-")
-        
title=title.replace("&Auml;","Ä").replace("&Uuml;","Ü").replace("&Ouml;","Ö").replace("&auml;","ä").replace("&uuml;","ü").replace("&ouml;","ö")
-        title=title.strip()
-        return title
+    title = title.replace("&lt;", "<").replace("&gt;", ">").replace("&amp;", 
"&").replace("&#x27;", "'").replace("&#039;", "'").replace("&quot;", 
"\"").replace("&szlig;", "ß").replace("&ndash;", "-")
+    title = title.replace("&Auml;", "Ä").replace("&Uuml;", 
"Ü").replace("&Ouml;", "Ö").replace("&auml;", "ä").replace("&uuml;", 
"ü").replace("&ouml;", "ö")
+    title = title.replace("n                           ", "").replace("n       
                ", "").strip()
+    return title
+
 
 def getUrl(url):
-        req = urllib2.Request(url)
-        req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; rv:15.0) 
Gecko/20100101 Firefox/15.0.1')
-        response = urllib2.urlopen(req)
-        link=response.read()
-        response.close()
-        return link
+    req = urllib2.Request(url)
+    req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; rv:22.0) 
Gecko/20100101 Firefox/22.0')
+    response = urllib2.urlopen(req)
+    link = response.read()
+    response.close()
+    return link
+
 
 def parameters_string_to_dict(parameters):
-        ''' Convert parameters encoded in a URL to a dict. '''
-        paramDict = {}
-        if parameters:
-            paramPairs = parameters[1:].split("&")
-            for paramsPair in paramPairs:
-                paramSplits = paramsPair.split('=')
-                if (len(paramSplits)) == 2:
-                    paramDict[paramSplits[0]] = paramSplits[1]
-        return paramDict
-
-def addLink(name,url,mode,iconimage,desc):
-        u=sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)
-        ok=True
-        liz=xbmcgui.ListItem(name, iconImage="DefaultVideo.png", 
thumbnailImage=iconimage)
-        liz.setInfo( type="Video", infoLabels={ "Title": name , "Plot": desc } 
)
-        liz.setProperty('IsPlayable', 'true')
-        
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz)
-        return ok
-
-def addDir(name,url,mode,iconimage):
-        u=sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)
-        ok=True
-        liz=xbmcgui.ListItem(name, iconImage="DefaultFolder.png", 
thumbnailImage=iconimage)
-        liz.setInfo( type="Video", infoLabels={ "Title": name } )
-        
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz,isFolder=True)
-        return ok
-         
-params=parameters_string_to_dict(sys.argv[2])
-mode=params.get('mode')
-url=params.get('url')
-if type(url)==type(str()):
-  url=urllib.unquote_plus(url)
+    ''' Convert parameters encoded in a URL to a dict. '''
+    paramDict = {}
+    if parameters:
+        paramPairs = parameters[1:].split("&")
+        for paramsPair in paramPairs:
+            paramSplits = paramsPair.split('=')
+            if (len(paramSplits)) == 2:
+                paramDict[paramSplits[0]] = paramSplits[1]
+    return paramDict
+
+
+def addLink(name, url, mode, iconimage, desc):
+    u = sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)
+    ok = True
+    liz = xbmcgui.ListItem(name, iconImage="DefaultVideo.png", 
thumbnailImage=iconimage)
+    liz.setInfo(type="Video", infoLabels={"Title": name, "Plot": desc})
+    liz.setProperty('IsPlayable', 'true')
+    if useThumbAsFanart:
+        liz.setProperty("fanart_image", iconimage)
+    ok = xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=u, 
listitem=liz)
+    return ok
+
+
+def addDir(name, url, mode, iconimage, desc=""):
+    u = sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)
+    ok = True
+    liz = xbmcgui.ListItem(name, iconImage="DefaultFolder.png", 
thumbnailImage=iconimage)
+    liz.setInfo(type="Video", infoLabels={"Title": name, "Plot": desc})
+    ok = xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=u, 
listitem=liz, isFolder=True)
+    return ok
+
+params = parameters_string_to_dict(sys.argv[2])
+mode = urllib.unquote_plus(params.get('mode', ''))
+url = urllib.unquote_plus(params.get('url', ''))
 
 if mode == 'listVideos':
     listVideos(url)
-elif mode == 'playBrightCoveStream':
-    playBrightCoveStream(url)
+elif mode == 'listCats':
+    listCats()
+elif mode == 'playVideo':
+    playVideo(url)
 elif mode == 'search':
     search()
 else:
diff --git a/plugin.video.wired_com/resources/language/English/strings.xml 
b/plugin.video.wired_com/resources/language/English/strings.xml
index 730b49b..c3a1553 100644
--- a/plugin.video.wired_com/resources/language/English/strings.xml
+++ b/plugin.video.wired_com/resources/language/English/strings.xml
@@ -1,7 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <strings>
-  <string id="30001">Next Page</string>
-  <string id="30101">Maximum bitrate</string>
+  <string id="30001">Latest</string>
+  <string id="30002">Categories</string>
+  <string id="30003">Next Page</string>
+  <string id="30004">Search</string>
+  <string id="30101">Quality</string>
   <string id="30102">Force View</string>
   <string id="30103">ViewID</string>
+  <string id="30104">Use thumb as fanart</string>
 </strings>
diff --git a/plugin.video.wired_com/resources/language/German/strings.xml 
b/plugin.video.wired_com/resources/language/German/strings.xml
index 77b0add..b631d98 100644
--- a/plugin.video.wired_com/resources/language/German/strings.xml
+++ b/plugin.video.wired_com/resources/language/German/strings.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <strings>
-  <string id="30001">Nächste Seite</string>
-  <string id="30101">Maximale Bitrate</string>
+  <string id="30003">Nächste Seite</string>
+  <string id="30101">Qualität</string>
   <string id="30102">View erzwingen</string>
+  <string id="30104">Thumb als Fanart nutzen</string>
 </strings>
diff --git a/plugin.video.wired_com/resources/settings.xml 
b/plugin.video.wired_com/resources/settings.xml
index 2e5e663..fc1c8df 100644
--- a/plugin.video.wired_com/resources/settings.xml
+++ b/plugin.video.wired_com/resources/settings.xml
@@ -1,5 +1,6 @@
 <settings>
-   <setting id="maxBitRate" type="enum" label="30101" 
values="500kb|1000kb|2000kb|3000kb|4000kb|5000kb" default="5"/>
-   <setting id="forceViewMode" type="bool" label="30102" default="false"/>
+   <setting id="quality" type="enum" label="30101" values="SD|1080p" 
default="1"/>
+   <setting id="useThumbAsFanart" type="bool" label="30104" default="true"/>
+   <setting id="forceViewMode" type="bool" label="30102" default="true"/>
    <setting id="viewMode" type="number" label="30103" default="500"/>
 </settings>

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

Summary of changes:
 plugin.video.howstuffworks_com/addon.xml           |    7 +-
 plugin.video.howstuffworks_com/changelog.txt       |    4 +-
 plugin.video.howstuffworks_com/default.py          |  450 ++++++++++----------
 .../resources/language/English/strings.xml         |   12 +-
 .../resources/settings.xml                         |    2 +-
 plugin.video.wired_com/addon.xml                   |    9 +-
 plugin.video.wired_com/changelog.txt               |    4 +-
 plugin.video.wired_com/default.py                  |  276 ++++++------
 .../resources/language/English/strings.xml         |    8 +-
 .../resources/language/German/strings.xml          |    5 +-
 plugin.video.wired_com/resources/settings.xml      |    5 +-
 11 files changed, 395 insertions(+), 387 deletions(-)


hooks/post-receive
-- 
Plugins

------------------------------------------------------------------------------
Get your SQL database under version control now!
Version control is standard for application code, but databases havent 
caught up. So what steps can you take to put your SQL databases under 
version control? Why should you start doing it? Read more to find out.
http://pubads.g.doubleclick.net/gampad/clk?id=49501711&iu=/4140/ostg.clktrk
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons

Reply via email to