The branch, frodo has been updated
       via  f5e573fd64d11a91ea3ef4e92571490404d015c9 (commit)
       via  eec653cc1f48424d6cf520e78f2e08a5e091fa73 (commit)
      from  571fccaafaef107bfd0dd476abed9d6b54ec4c27 (commit)

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

commit f5e573fd64d11a91ea3ef4e92571490404d015c9
Author: Martijn Kaijser <[email protected]>
Date:   Fri Jan 4 23:41:04 2013 +0100

    [service.libraryautoupdate] -0.7.3

diff --git a/service.libraryautoupdate/addon.xml 
b/service.libraryautoupdate/addon.xml
index 2fdcfa3..633d093 100644
--- a/service.libraryautoupdate/addon.xml
+++ b/service.libraryautoupdate/addon.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="service.libraryautoupdate"
-    name="XBMC Library Auto Update" version="0.7.2" provider-name="robweber">
+    name="XBMC Library Auto Update" version="0.7.3" provider-name="robweber">
   <requires>
-    <import addon="xbmc.python" version="2.0"/>
+    <import addon="xbmc.python" version="2.1.0"/>
     <import addon="script.common.plugin.cache" version="1.3.0" />
   </requires>
   <extension point="xbmc.python.script" library="manual.py"> 
diff --git a/service.libraryautoupdate/changelog.txt 
b/service.libraryautoupdate/changelog.txt
index beb7394..2669270 100644
--- a/service.libraryautoupdate/changelog.txt
+++ b/service.libraryautoupdate/changelog.txt
@@ -1,3 +1,9 @@
+Version 0.7.3
+
+added support for multipathed sources in verify sources
+
+updated xbmc python version
+
 Version 0.7.2
 
 Fixed error with cleaning library
diff --git a/service.libraryautoupdate/service.py 
b/service.libraryautoupdate/service.py
index 22dd53e..f87c87b 100644
--- a/service.libraryautoupdate/service.py
+++ b/service.libraryautoupdate/service.py
@@ -5,6 +5,7 @@ import xbmc
 import xbmcvfs
 import xbmcgui
 import os
+import urllib2
 import resources.lib.utils as utils
 from resources.lib.croniter import croniter
 
@@ -301,7 +302,7 @@ class AutoUpdater:
         if(utils.getSetting("verify_paths") == 'true'):
             response = eval(xbmc.executeJSONRPC('{ "jsonrpc" : "2.0", "method" 
: "Files.GetSources", "params":{"media":"' + media_type + '"}, "id": 1}'))
             for source in response['result']['sources']:
-                if not xbmcvfs.exists(source['file']):
+                if not self._sourceExists(source['file']):
                     #let the user know this failed, if they subscribe to 
notifications
                     if(utils.getSetting('notify_next_run') == 'true'):
                         utils.showNotification(utils.getString(30050),"Source 
" + source['label'] + " does not exist")
@@ -350,4 +351,29 @@ class AutoUpdater:
         while(self.scanRunning()):
             time.sleep(5)
 
+    def _sourceExists(self,source):
+        #check if this is a multipath source
+        if(source.startswith('multipath://')):
+            #code adapted from xbmc source MultiPathDirectory.cpp
+            source = source[12:]
+
+            if(source[-1:] == "/"):
+                source = source[:-1]
+
+            splitSource = source.split('/')
+
+            if(len(splitSource) > 0):
+                for aSource in splitSource:
+                    if not xbmcvfs.exists(urllib2.unquote(aSource)):
+                        #if one source in the multi does not exist, return 
false
+                        return False
+
+                #if we make it here they all exist
+                return True
+            else:
+                return False
+
+        else:
+            return xbmcvfs.exists(source)
+
 

http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/scripts;a=commit;h=eec653cc1f48424d6cf520e78f2e08a5e091fa73

commit eec653cc1f48424d6cf520e78f2e08a5e091fa73
Author: Martijn Kaijser <[email protected]>
Date:   Fri Jan 4 23:40:38 2013 +0100

    [script.module.urlresolver] -2.0.4

diff --git a/script.module.urlresolver/addon.xml 
b/script.module.urlresolver/addon.xml
index c454ab0..1d5fef7 100644
--- a/script.module.urlresolver/addon.xml
+++ b/script.module.urlresolver/addon.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="script.module.urlresolver" 
             name="urlresolver" 
-            version="1.0.3" 
+            version="2.0.4" 
             provider-name="XBMCHub.com">
   <requires>
-    <import addon="xbmc.python" version="2.0" />
+    <import addon="xbmc.python" version="2.1.0" />
     <import addon="script.module.t0mm0.common" version="1.0.0"/>
-    <import addon="plugin.video.youtube"/>
+    <import addon="plugin.video.youtube" version="3.3.0"/>
   </requires>
   <extension point="xbmc.python.module" library="lib" />
   <extension point="xbmc.addon.metadata">
diff --git a/script.module.urlresolver/changelog.txt 
b/script.module.urlresolver/changelog.txt
index 0999208..37cc537 100644
--- a/script.module.urlresolver/changelog.txt
+++ b/script.module.urlresolver/changelog.txt
@@ -1,3 +1,8 @@
+[B]Version 2.0.4[/B]
+- Frodo branch
+- Updated putlocker and vidxden resolvers
+- Updated real-debrid
+
 [B]Version 1.0.3[/B]
 - Fixed putlocker
 
diff --git a/script.module.urlresolver/lib/urlresolver/plugins/putlocker.py 
b/script.module.urlresolver/lib/urlresolver/plugins/putlocker.py
index f7aa93d..15b858e 100644
--- a/script.module.urlresolver/lib/urlresolver/plugins/putlocker.py
+++ b/script.module.urlresolver/lib/urlresolver/plugins/putlocker.py
@@ -62,29 +62,22 @@ class PutlockerResolver(Plugin, UrlResolver, 
PluginSettings):
         #find playlist code
         r = re.search('\?stream=(.+?)\'', html)
         if r:
-            playlist_code = r.group(1)
+            code = r.group(1)
         else:
             common.addon.log_error('putlocker: playlist code not found')
             return False
         
-        #find download link
-        xml_url = re.sub('/(file|embed)/.+', '/get_file.php?stream=', web_url)
-        xml_url += playlist_code
-        try:
-            html = self.net.http_GET(xml_url).content
-        except urllib2.URLError, e:
-            common.addon.log_error('putlocker: got http error %d fetching %s' %
-                                    (e.code, xml_url))
-            return False
-
-        r = re.search('url="(.+?)"', html)
-        if r:
-            flv_url = r.group(1)
+        #download & return link.
+        if r and 'putlocker' in host:
+            Avi = "http://putlocker.com/get_file.php?stream=%s&original=1"%code
+            html = self.net.http_GET(Avi).content
+            final=re.compile('url="(.+?)"').findall(html)[0]
+            return 
"%s|User-Agent=%s"%(final,'Mozilla%2F5.0%20(Windows%20NT%206.1%3B%20rv%3A11.0)%20Gecko%2F20100101%20Firefox%2F11.0')
         else:
-            common.addon.log_error('putlocker: stream url not found')
-            return False
-        flv_url = flv_url.replace('&amp;','&') #ghizzu
-        return flv_url
+            Avi = "http://sockshare.com/get_file.php?stream=%s&original=1"%code
+            html = self.net.http_GET(Avi).content
+            final=re.compile('url="(.+?)"').findall(html)[0]
+            return 
"%s|User-Agent=%s"%(final,'Mozilla%2F5.0%20(Windows%20NT%206.1%3B%20rv%3A11.0)%20Gecko%2F20100101%20Firefox%2F11.0')
 
     def get_url(self, host, media_id):
         if 'putlocker' in host:
diff --git a/script.module.urlresolver/lib/urlresolver/plugins/realdebrid.py 
b/script.module.urlresolver/lib/urlresolver/plugins/realdebrid.py
index 0755b14..cd0c005 100644
--- a/script.module.urlresolver/lib/urlresolver/plugins/realdebrid.py
+++ b/script.module.urlresolver/lib/urlresolver/plugins/realdebrid.py
@@ -55,7 +55,7 @@ class RealDebridResolver(Plugin, UrlResolver, SiteAuth, 
PluginSettings):
         dialog = xbmcgui.Dialog()
 
         try:
-            url = 'http://real-debrid.com/ajax/deb.php?lang=en&sl=1&link=%s' % 
media_id
+            url = 'http://real-debrid.com/ajax/deb.php?lang=en&sl=1&link=%s' % 
media_id.replace('|User-Agent=Mozilla%2F5.0%20(Windows%20NT%206.1%3B%20rv%3A11.0)%20Gecko%2F20100101%20Firefox%2F11.0','')
             source = self.net.http_GET(url).content
         except Exception, e:
             exc_type, exc_obj, exc_tb = sys.exc_info()
diff --git a/script.module.urlresolver/lib/urlresolver/plugins/uploadc.py 
b/script.module.urlresolver/lib/urlresolver/plugins/uploadc.py
index 9153a57..0520c19 100644
--- a/script.module.urlresolver/lib/urlresolver/plugins/uploadc.py
+++ b/script.module.urlresolver/lib/urlresolver/plugins/uploadc.py
@@ -15,7 +15,6 @@
     You should have received a copy of the GNU General Public License
     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 """
-
 from t0mm0.common.net import Net
 from urlresolver.plugnplay.interfaces import UrlResolver
 from urlresolver.plugnplay.interfaces import PluginSettings
@@ -36,11 +35,12 @@ class UploadcResolver(Plugin, UrlResolver, PluginSettings):
         p = self.get_setting('priority') or 100
         self.priority = int(p)
         self.net = Net()
-        self.pattern = 'http://((?:www.)?uploadc.com)/([0-9a-zA-Z]+)'
+        # modified by mscreations. uploadc now needs the filename after the 
media id so make sure we match that
+        self.pattern = 
'http://((?:www.)?uploadc.com)/([0-9a-zA-Z]+/[0-9a-zA-Z/._]+)'
 
     def get_media_url(self, host, media_id):
         web_url = self.get_url(host, media_id)
-
+        
         #get html
         try:
             html = self.net.http_GET(web_url).content
@@ -62,18 +62,12 @@ class UploadcResolver(Plugin, UrlResolver, PluginSettings):
         else:
             common.addon.log_error(self.name + ': no fields found')
             return False
-
-        # get url from packed javascript
-        r = re.findall("<script type='text/javascript'>eval.*?return p}" +
-            "\((.*?)\)\s*</script>", html, re.DOTALL + re.IGNORECASE)
-        if r:
-            sJavascript = r[1]
-            sUnpacked = jsunpack.unpack(sJavascript)
-            sPattern = '<param name="src"0="(.*?)"'
-            r = re.search(sPattern, sUnpacked)
-            if r:
-                return r.group(1)
-
+            
+        # modified by mscreations. get the file url from the returned 
javascript
+        match = re.search("addVariable[(]'file','(.+?)'[)]", html, re.DOTALL + 
re.IGNORECASE)
+        if match:
+            return match.group(1)
+        
         return False
 
     def get_url(self, host, media_id):
diff --git a/script.module.urlresolver/lib/urlresolver/plugins/vidxden.py 
b/script.module.urlresolver/lib/urlresolver/plugins/vidxden.py
index 55c40ae..4aceaf4 100644
--- a/script.module.urlresolver/lib/urlresolver/plugins/vidxden.py
+++ b/script.module.urlresolver/lib/urlresolver/plugins/vidxden.py
@@ -23,15 +23,39 @@ vidxden hosts both avi and flv videos
 In testing there seems to be a timing issue with files coming up as not 
playable.
 This happens on both the addon and in a browser.
 """
-
-import re
-import urllib2
+import urllib2,urllib,xbmcaddon,socket,re,xbmc,os,xbmcgui
 from t0mm0.common.net import Net
 from urlresolver import common
 from urlresolver.plugnplay.interfaces import UrlResolver
 from urlresolver.plugnplay.interfaces import PluginSettings
 from urlresolver.plugnplay import Plugin
 
+#SET DEFAULT TIMEOUT FOR SLOW SERVERS:
+socket.setdefaulttimeout(30)
+
+#SET DIRECTORIES 
+local=xbmcaddon.Addon(id='script.module.urlresolver')
+logo='http://googlechromesupportnow.com/wp-content/uploads/2012/06/Installation-103-error-in-Chrome.png'
+img="%s/resources/puzzle.png"%local.getAddonInfo('path')
+
+class InputWindow(xbmcgui.WindowDialog):# Cheers to Bastardsmkr code already 
done in Putlocker PRO resolver.
+    def __init__(self, *args, **kwargs):
+        self.cptloc = kwargs.get('captcha')
+        self.img = xbmcgui.ControlImage(335,30,624,180,self.cptloc)
+        self.addControl(self.img)
+        self.kbd = xbmc.Keyboard()
+
+    def get(self):
+        self.show()
+        self.kbd.doModal()
+        if (self.kbd.isConfirmed()):
+            text = self.kbd.getText()
+            self.close()
+            return text
+        self.close()
+        return False
+
+
 class VidxdenResolver(Plugin, UrlResolver, PluginSettings):
     implements = [UrlResolver, PluginSettings]
     name = "vidxden"
@@ -44,30 +68,41 @@ class VidxdenResolver(Plugin, UrlResolver, PluginSettings):
     def get_media_url(self, host, media_id):
         web_url = self.get_url(host, media_id)
         """ Human Verification """
+
         try:
             resp = self.net.http_GET(web_url)
             html = resp.content
-            post_url = resp.get_url()
-
-            form_values = {}
-            for i in re.finditer('<input name="(.+?)".+?value="(.+?)"', html):
-                form_values[i.group(1)] = i.group(2)
-
-            html = self.net.http_POST(post_url, form_data=form_values).content
-
+            try: os.remove(img)
+            except: pass
+            try:
+                filename=re.compile('<input name="fname" type="hidden" 
value="(.+?)">').findall(html)[0]
+                noscript=re.compile('<iframe src="(.+?)"').findall(html)[0]
+                check = self.net.http_GET(noscript).content
+                hugekey=re.compile('id="adcopy_challenge" 
value="(.+?)">').findall(check)[0]
+                headers= {'User-Agent':'Mozilla/6.0 (Macintosh; I; Intel Mac 
OS X 11_7_9; de-LI; rv:1.9b4) Gecko/2012010317 Firefox/10.0a4',
+                         
'Host':'api.solvemedia.com','Referer':resp.get_url(),'Accept':'image/png,image/*;q=0.8,*/*;q=0.5'}
+                open(img, 'wb').write( 
self.net.http_GET("http://api.solvemedia.com%s"%re.compile('<img 
src="(.+?)"').findall(check)[0]).content)
+                solver = InputWindow(captcha=img)
+                puzzle = solver.get()
+                if puzzle:
+                    
data={'adcopy_response':urllib.quote_plus(puzzle),'adcopy_challenge':hugekey,'op':'download1','method_free':'1','usr_login':'','id':media_id,'fname':filename}
+                    html = self.net.http_POST(resp.get_url(),data).content
+            except:
+                xbmc.executebuiltin('XBMC.Notification([B][COLOR 
white]VIDXDEN[/COLOR][/B],[COLOR red]No such file or the file has been removed 
due to copyright infringement issues[/COLOR],2500,'+logo+')')
+                pass
         except urllib2.URLError, e:
             common.addon.log_error('vidxden: got http error %d fetching %s' %
                                   (e.code, web_url))
             return False
-        
+       
         #find packed javascript embed code     
         r = re.search('return p}\(\'(.+?);\',\d+,\d+,\'(.+?)\'\.split',html)
         if r:
             p, k = r.groups()
         else:
             common.addon.log_error('vidxden: packed javascript embed code not 
found')
-
-        decrypted_data = unpack_js(p, k)
+        try: decrypted_data = unpack_js(p, k)
+        except: pass
         
         #First checks for a flv url, then the if statement is for the avi url
         r = re.search('file.\',.\'(.+?).\'', decrypted_data)
@@ -79,7 +114,7 @@ class VidxdenResolver(Plugin, UrlResolver, PluginSettings):
             common.addon.log_error('vidxden: stream url not found')
             return False
 
-        return stream_url
+        return 
"%s|User-Agent=%s"%(stream_url,'Mozilla%2F5.0%20(Windows%20NT%206.1%3B%20rv%3A11.0)%20Gecko%2F20100101%20Firefox%2F11.0')
 
         
     def get_url(self, host, media_id):
@@ -88,8 +123,7 @@ class VidxdenResolver(Plugin, UrlResolver, PluginSettings):
         else:
             host = 'www.vidxden.com'
         return 'http://%s/%s' % (host, media_id)
-        
-        
+       
     def get_host_and_id(self, url):
         r = re.search('//(.+?)/(?:embed-)?([0-9a-z]+)', url)
         if r:
@@ -103,7 +137,7 @@ class VidxdenResolver(Plugin, UrlResolver, PluginSettings):
                          '(embed-)?[0-9a-z]+', url) or
                 'vidxden' in host or 'divxden' in host or
                 'vidbux' in host)
-        
+
         
 def unpack_js(p, k):
     '''emulate js unpacking code'''
@@ -135,4 +169,5 @@ def base36encode(number, 
alphabet='0123456789abcdefghijklmnopqrstuvwxyz'):
         base36 = alphabet[i] + base36
 
     return sign + base36
+        
 

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

Summary of changes:
 script.module.urlresolver/.gitignore               |   10 ++
 script.module.urlresolver/addon.xml                |    6 +-
 script.module.urlresolver/changelog.txt            |    5 +
 .../plugins/{realdebrid.py => alldebrid.py}        |   91 +++++++-------------
 .../lib/urlresolver/plugins/putlocker.py           |   29 +++----
 .../lib/urlresolver/plugins/realdebrid.py          |    2 +-
 .../lib/urlresolver/plugins/uploadc.py             |   24 ++---
 .../lib/urlresolver/plugins/vidxden.py             |   71 +++++++++++----
 service.libraryautoupdate/addon.xml                |    4 +-
 service.libraryautoupdate/changelog.txt            |    6 ++
 service.libraryautoupdate/service.py               |   28 ++++++-
 11 files changed, 157 insertions(+), 119 deletions(-)
 create mode 100644 script.module.urlresolver/.gitignore
 copy script.module.urlresolver/lib/urlresolver/plugins/{realdebrid.py => 
alldebrid.py} (58%)


hooks/post-receive
-- 
Scripts

------------------------------------------------------------------------------
Master HTML5, CSS3, ASP.NET, MVC, AJAX, Knockout.js, Web API and
much more. Get web development skills now with LearnDevNow -
350+ hours of step-by-step video tutorials by Microsoft MVPs and experts.
SALE $99.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122812
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons

Reply via email to