From 034d87c836f9fba82142a06b5f666c84ca10bd50 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@users.noreply.github.com>
Date: Tue, 7 Apr 2015 21:26:23 +0200
Subject: [YadiSk] Fix https://github.com/pyload/pyload/issues/1321

---
 module/plugins/hoster/YadiSk.py | 45 ++++++++++++++++++++---------------------
 1 file changed, 22 insertions(+), 23 deletions(-)

(limited to 'module/plugins/hoster')

diff --git a/module/plugins/hoster/YadiSk.py b/module/plugins/hoster/YadiSk.py
index 57d8ae786..c3749d30d 100644
--- a/module/plugins/hoster/YadiSk.py
+++ b/module/plugins/hoster/YadiSk.py
@@ -1,7 +1,6 @@
 # -*- coding: utf-8 -*-
 
 import re
-import pycurl
 import random
 
 from module.common.json_layer import json_loads
@@ -11,13 +10,13 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
 class YadiSk(SimpleHoster):
     __name__    = "YadiSk"
     __type__    = "hoster"
-    __version__ = "0.02"
+    __version__ = "0.03"
 
     __pattern__ = r'https?://yadi\.sk/d/\w+'
 
     __description__ = """Yadi.sk hoster plugin"""
     __license__     = "GPLv3"
-    __authors__     = [("GammaC0de", "nomail@fakemailbox.com")]
+    __authors__     = [("GammaC0de", None)]
 
 
     OFFLINE_PATTERN = r'Nothing found'
@@ -32,7 +31,7 @@ class YadiSk(SimpleHoster):
     def handleFree(self, pyfile):
         m = re.search(r'<script id="models-client" type="application/json">(.+?)</script>', self.html)
         if m is None:
-            self.fail(_("could not find required json data"))
+            self.error(_("could not find required json data"))
 
         res = json_loads(m.group(1))
 
@@ -41,45 +40,45 @@ class YadiSk(SimpleHoster):
         yadisk_id   = None
         yadisk_size = None
         yadisk_name = None
-        yadisk_hash = None
-        try:  #@TODO: Copy to apiInfo method
+
+        try:  #@TODO: Copy to apiInfo
             for sect in res:
                 if 'model' in sect:
-                    if sect['model'] == 'config':
+                    if sect['model'] == "config":
                         yadisk_ver = sect['data']['version']
                         yadisk_sk  = sect['data']['sk']
 
-                    elif sect['model'] == 'resource':
+                    elif sect['model'] == "resource":
                         yadisk_id   = sect['data']['id']
                         yadisk_size = sect['data']['meta']['size']
                         yadisk_name = sect['data']['name']
 
-        except Exception:
-            self.fail(_("Unexpected server response"))
+        except Exception, e:
+            self.fail(_("Unexpected server response"), e)
 
-        if None is in (yadisk_id, yadisk_sk, yadisk_id, yadisk_size, yadisk_name):
-           self.fail(_("json data is missing important information, cannot continue"))
+        if None in (yadisk_id, yadisk_sk, yadisk_id, yadisk_size, yadisk_name):
+           self.error(_("Missing JSON data"))
 
         self.pyfile.size = yadisk_size
         self.pyfile.name = yadisk_name
 
         yadisk_idclient = ""
-        for _i in range(1, 32):
+        for _i in range(32):
             yadisk_idclient += random.choice('0123456abcdef')
 
-        result_json = self.load("https://yadi.sk/models/?_m=do-get-resource-url",
-                                post={'idClient': yadisk_idclient,
-                                      'version' : yadisk_ver,
-                                      '_model.0': "do-get-resource-url",
-                                      'sk'      : yadisk_sk,
-                                      'id.0'    : yadisk_id})
-
-        res = json_loads(result_json)
         try:
-            self.link = res['models'][0]['data']['file']
+            self.html = self.load("https://yadi.sk/models/",
+                                  get={'_m': "do-get-resource-url"},
+                                  post={'idClient': yadisk_idclient,
+                                        'version' : yadisk_ver,
+                                        '_model.0': "do-get-resource-url",
+                                        'sk'      : yadisk_sk,
+                                        'id.0'    : yadisk_id})
+
+            self.link = json_loads(self.html)['models'][0]['data']['file']
 
         except Exception:
-            self.fail(_("faild to retrieve the download url"))
+            pass
 
 
 getInfo = create_getInfo(YadiSk)
-- 
cgit v1.2.3