diff options
| author | 2015-03-28 01:59:01 +0100 | |
|---|---|---|
| committer | 2015-03-28 01:59:01 +0100 | |
| commit | 589121e80835c63aea0880a53c6678de5c31c16e (patch) | |
| tree | a5acb58c9b06dd80a46cec888520559d115733c3 /module | |
| parent | [UlozTo] Update hoster (diff) | |
| download | pyload-589121e80835c63aea0880a53c6678de5c31c16e.tar.xz | |
Spare code cosmetics
Diffstat (limited to 'module')
57 files changed, 112 insertions, 118 deletions
| diff --git a/module/plugins/accounts/FilerNet.py b/module/plugins/accounts/FilerNet.py index 4067445af..ac5fd11da 100644 --- a/module/plugins/accounts/FilerNet.py +++ b/module/plugins/accounts/FilerNet.py @@ -16,7 +16,7 @@ class FilerNet(Account):      __authors__     = [("stickell", "l.stickell@yahoo.it")] -    TOKEN_PATTERN = r'_csrf_token" value="([^"]+)" />' +    TOKEN_PATTERN = r'_csrf_token" value="(.+?)" />'      WALID_UNTIL_PATTERN = r'Der Premium-Zugang ist gültig bis (.+)\.\s*</td>'      TRAFFIC_PATTERN = r'Traffic</th>\s*<td>([^<]+)</td>'      FREE_PATTERN = r'Account Status</th>\s*<td>\s*Free' diff --git a/module/plugins/accounts/FshareVn.py b/module/plugins/accounts/FshareVn.py index 0c76e2824..7fcf88f20 100644 --- a/module/plugins/accounts/FshareVn.py +++ b/module/plugins/accounts/FshareVn.py @@ -18,8 +18,8 @@ class FshareVn(Account):      VALID_UNTIL_PATTERN = ur'<dt>Thời hạn dùng:</dt>\s*<dd>([^<]+)</dd>' -    LIFETIME_PATTERN = ur'<dt>Lần đăng nhập trước:</dt>\s*<dd>[^<]+</dd>' -    TRAFFIC_LEFT_PATTERN = ur'<dt>Tổng Dung Lượng Tài Khoản</dt>\s*<dd[^>]*>([\d.]+) ([kKMG])B</dd>' +    LIFETIME_PATTERN = ur'<dt>Lần đăng nhập trước:</dt>\s*<dd>.+?</dd>' +    TRAFFIC_LEFT_PATTERN = ur'<dt>Tổng Dung Lượng Tài Khoản</dt>\s*<dd.*?>([\d.]+) ([kKMG])B</dd>'      DIRECT_DOWNLOAD_PATTERN = ur'<input type="checkbox"\s*([^=>]*)[^>]*/>Kích hoạt download trực tiếp</dt>' diff --git a/module/plugins/accounts/MegaRapidoNet.py b/module/plugins/accounts/MegaRapidoNet.py index 80e066244..d061d02bc 100644 --- a/module/plugins/accounts/MegaRapidoNet.py +++ b/module/plugins/accounts/MegaRapidoNet.py @@ -16,8 +16,8 @@ class MegaRapidoNet(Account):      __authors__     = [("Kagenoshin", "kagenoshin@gmx.ch")] -    VALID_UNTIL_PATTERN = r'<\s*?div[^>]*?class\s*?=\s*?[\'"]premium_index[\'"][^>]*>[^<]*?<[^>]*?b[^>]*>\s*?TEMPO\s*?PREMIUM[^<]*<[^>]*?/b[^>]*>\s*?(\d*)[^\d]*?DIAS[^\d]*?(\d*)[^\d]*?HORAS[^\d]*?(\d*)[^\d]*?MINUTOS[^\d]*?(\d*)[^\d]*?SEGUNDOS' -    USER_ID_PATTERN     = r'<\s*?div[^>]*?class\s*?=\s*?["\']checkbox_compartilhar["\'][^>]*>[^<]*<\s*?input[^>]*?name\s*?=\s*?["\']usar["\'][^>]*>[^<]*<\s*?input[^>]*?name\s*?=\s*?["\']user["\'][^>]*?value\s*?=\s*?["\'](.*?)\s*?["\']' +    VALID_UNTIL_PATTERN = r'<\s*?div[^>]*?class\s*?=\s*?[\'"]premium_index[\'"].*?>[^<]*?<[^>]*?b.*?>\s*?TEMPO\s*?PREMIUM.*?<[^>]*?/b.*?>\s*?(\d*)[^\d]*?DIAS[^\d]*?(\d*)[^\d]*?HORAS[^\d]*?(\d*)[^\d]*?MINUTOS[^\d]*?(\d*)[^\d]*?SEGUNDOS' +    USER_ID_PATTERN     = r'<\s*?div[^>]*?class\s*?=\s*?["\']checkbox_compartilhar["\'].*?>.*?<\s*?input[^>]*?name\s*?=\s*?["\']usar["\'].*?>.*?<\s*?input[^>]*?name\s*?=\s*?["\']user["\'][^>]*?value\s*?=\s*?["\'](.*?)\s*?["\']'      def loadAccountInfo(self, user, req): @@ -50,8 +50,8 @@ class MegaRapidoNet(Account):          if "sair" not in html.lower():              self.wrongPassword()          else: -        	m = re.search(self.USER_ID_PATTERN, html) -        	if m: -        		data['uid'] = m.group(1) -        	else: -        		self.fail("Couldn't find the user ID") +            m = re.search(self.USER_ID_PATTERN, html) +            if m: +                data['uid'] = m.group(1) +            else: +                self.fail("Couldn't find the user ID") diff --git a/module/plugins/accounts/MultishareCz.py b/module/plugins/accounts/MultishareCz.py index 0ac764ee1..3488e3288 100644 --- a/module/plugins/accounts/MultishareCz.py +++ b/module/plugins/accounts/MultishareCz.py @@ -16,7 +16,7 @@ class MultishareCz(Account):      TRAFFIC_LEFT_PATTERN = r'<span class="profil-zvyrazneni">Kredit:</span>\s*<strong>(?P<S>[\d.,]+) (?P<U>[\w^_]+)</strong>' -    ACCOUNT_INFO_PATTERN = r'<input type="hidden" id="(u_ID|u_hash)" name="[^"]*" value="([^"]+)">' +    ACCOUNT_INFO_PATTERN = r'<input type="hidden" id="(u_ID|u_hash)" name=".+?" value="(.+?)">'      def loadAccountInfo(self, user, req): diff --git a/module/plugins/accounts/UlozTo.py b/module/plugins/accounts/UlozTo.py index 7236a4fa8..6ddb34385 100644 --- a/module/plugins/accounts/UlozTo.py +++ b/module/plugins/accounts/UlozTo.py @@ -18,7 +18,7 @@ class UlozTo(Account):                         ("pulpe", None)] -    TRAFFIC_LEFT_PATTERN = r'<li class="menu-kredit"><a .*?title="[^"]*?GB = ([\d.]+) MB"' +    TRAFFIC_LEFT_PATTERN = r'<li class="menu-kredit"><a .*?title=".+?GB = ([\d.]+) MB"'      def loadAccountInfo(self, user, req): diff --git a/module/plugins/captcha/LinksaveIn.py b/module/plugins/captcha/LinksaveIn.py index a7ae715fe..e256da502 100644 --- a/module/plugins/captcha/LinksaveIn.py +++ b/module/plugins/captcha/LinksaveIn.py @@ -124,7 +124,7 @@ class LinksaveIn(OCR):              for y in xrange(new.size[1]):                  rgb = orgpix[x, y]                  r, g, b = rgb -                pix[x, y] = (255,255,255) +                pix[x, y] = (255, 255, 255)                  if r > max(b, g)+thresh:                      pix[x, y] = (0, 0, 0)                  if g < min(r, b): diff --git a/module/plugins/crypter/CrockoComFolder.py b/module/plugins/crypter/CrockoComFolder.py index a01f3e814..f56cc449a 100644 --- a/module/plugins/crypter/CrockoComFolder.py +++ b/module/plugins/crypter/CrockoComFolder.py @@ -18,7 +18,7 @@ class CrockoComFolder(SimpleCrypter):      __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] -    LINK_PATTERN = r'<td class="last"><a href="([^"]+)">download</a>' +    LINK_PATTERN = r'<td class="last"><a href="(.+?)">download</a>'  getInfo = create_getInfo(CrockoComFolder) diff --git a/module/plugins/crypter/CzshareComFolder.py b/module/plugins/crypter/CzshareComFolder.py index b1f242416..c317b1b49 100644 --- a/module/plugins/crypter/CzshareComFolder.py +++ b/module/plugins/crypter/CzshareComFolder.py @@ -19,7 +19,7 @@ class CzshareComFolder(Crypter):      FOLDER_PATTERN = r'<tr class="subdirectory">\s*<td>\s*<table>(.*?)</table>' -    LINK_PATTERN = r'<td class="col2"><a href="([^"]+)">info</a></td>' +    LINK_PATTERN = r'<td class="col2"><a href="(.+?)">info</a></td>'      def decrypt(self, pyfile): diff --git a/module/plugins/crypter/DepositfilesComFolder.py b/module/plugins/crypter/DepositfilesComFolder.py index b23d4a41e..46ec265c3 100644 --- a/module/plugins/crypter/DepositfilesComFolder.py +++ b/module/plugins/crypter/DepositfilesComFolder.py @@ -18,7 +18,7 @@ class DepositfilesComFolder(SimpleCrypter):      __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] -    LINK_PATTERN = r'<div class="progressName"[^>]*>\s*<a href="([^"]+)" title="[^"]*" target="_blank">' +    LINK_PATTERN = r'<div class="progressName".*?>\s*<a href="(.+?)" title=".+?" target="_blank">'  getInfo = create_getInfo(DepositfilesComFolder) diff --git a/module/plugins/crypter/EmbeduploadCom.py b/module/plugins/crypter/EmbeduploadCom.py index d61fc7fda..28633f634 100644 --- a/module/plugins/crypter/EmbeduploadCom.py +++ b/module/plugins/crypter/EmbeduploadCom.py @@ -21,7 +21,7 @@ class EmbeduploadCom(Crypter):      __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] -    LINK_PATTERN = r'<div id="([^"]+)"[^>]*>\s*<a href="([^"]+)" target="_blank" (?:class="DownloadNow"|style="color:red")>' +    LINK_PATTERN = r'<div id="(.+?)".*?>\s*<a href="(.+?)" target="_blank" (?:class="DownloadNow"|style="color:red")>'      def decrypt(self, pyfile): diff --git a/module/plugins/crypter/FileserveComFolder.py b/module/plugins/crypter/FileserveComFolder.py index 95ef49498..1363e2d45 100644 --- a/module/plugins/crypter/FileserveComFolder.py +++ b/module/plugins/crypter/FileserveComFolder.py @@ -20,7 +20,7 @@ class FileserveComFolder(Crypter):      FOLDER_PATTERN = r'<table class="file_list">(.*?)</table>' -    LINK_PATTERN = r'<a href="([^"]+)" class="sheet_icon wbold">' +    LINK_PATTERN = r'<a href="(.+?)" class="sheet_icon wbold">'      def decrypt(self, pyfile): diff --git a/module/plugins/crypter/FourChanOrg.py b/module/plugins/crypter/FourChanOrg.py index 40a18179c..c90c84b6f 100644 --- a/module/plugins/crypter/FourChanOrg.py +++ b/module/plugins/crypter/FourChanOrg.py @@ -23,5 +23,5 @@ class FourChanOrg(Crypter):      def decrypt(self, pyfile):          pagehtml = self.load(pyfile.url) -        images = set(re.findall(r'(images\.4chan\.org/[^/]*/src/[^"<]*)', pagehtml)) +        images = set(re.findall(r'(images\.4chan\.org/[^/]*/src/[^"<]+)', pagehtml))          self.urls = ["http://" + image for image in images] diff --git a/module/plugins/crypter/FreakhareComFolder.py b/module/plugins/crypter/FreakhareComFolder.py index cf89d6a6d..173660668 100644 --- a/module/plugins/crypter/FreakhareComFolder.py +++ b/module/plugins/crypter/FreakhareComFolder.py @@ -20,7 +20,7 @@ class FreakhareComFolder(SimpleCrypter):      __authors__     = [("stickell", "l.stickell@yahoo.it")] -    LINK_PATTERN = r'<a href="(http://freakshare\.com/files/[^"]+)" target="_blank">' +    LINK_PATTERN = r'<a href="(http://freakshare\.com/files/.+?)" target="_blank">'      NAME_PATTERN = r'Folder:</b> (?P<N>.+)'      PAGES_PATTERN = r'Pages: +(\d+)' diff --git a/module/plugins/crypter/FshareVnFolder.py b/module/plugins/crypter/FshareVnFolder.py index 04508198a..bbee53337 100644 --- a/module/plugins/crypter/FshareVnFolder.py +++ b/module/plugins/crypter/FshareVnFolder.py @@ -18,7 +18,7 @@ class FshareVnFolder(SimpleCrypter):      __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] -    LINK_PATTERN = r'<li class="w_80pc"><a href="([^"]+)" target="_blank">' +    LINK_PATTERN = r'<li class="w_80pc"><a href="(.+?)" target="_blank">'  getInfo = create_getInfo(FshareVnFolder) diff --git a/module/plugins/crypter/LetitbitNetFolder.py b/module/plugins/crypter/LetitbitNetFolder.py index f5cc5fa78..b60d754a7 100644 --- a/module/plugins/crypter/LetitbitNetFolder.py +++ b/module/plugins/crypter/LetitbitNetFolder.py @@ -20,7 +20,7 @@ class LetitbitNetFolder(Crypter):      FOLDER_PATTERN = r'<table>(.*)</table>' -    LINK_PATTERN = r'<a href="([^"]+)" target="_blank">' +    LINK_PATTERN = r'<a href="(.+?)" target="_blank">'      def decrypt(self, pyfile): diff --git a/module/plugins/crypter/LinkCryptWs.py b/module/plugins/crypter/LinkCryptWs.py index 018ed90ba..d3e75aad4 100644 --- a/module/plugins/crypter/LinkCryptWs.py +++ b/module/plugins/crypter/LinkCryptWs.py @@ -131,7 +131,7 @@ class LinkCryptWs(Crypter):      def unlockCaptchaProtection(self): -        captcha_url  = re.search(r'<form.*?id\s*?=\s*?"captcha"[^>]*?>.*?<\s*?input.*?src="([^"]*?)"', self.html, re.I | re.S).group(1) +        captcha_url  = re.search(r'<form.*?id\s*?=\s*?"captcha"[^>]*?>.*?<\s*?input.*?src="(.+?)"', self.html, re.I | re.S).group(1)          captcha_code = self.decryptCaptcha(captcha_url, forceUser=True, imgtype="gif", result_type='positional')          self.html = self.load(self.pyfile.url, post={"x": captcha_code[0], "y": captcha_code[1]}) @@ -190,7 +190,7 @@ class LinkCryptWs(Crypter):          self.logDebug("Search for Web links ")          package_links = [] -        pattern = r'<form action="http://linkcrypt.ws/out.html"[^>]*?>.*?<input[^>]*?value="([^"]*?)"[^>]*?name="file"' +        pattern = r'<form action="http://linkcrypt.ws/out.html"[^>]*?>.*?<input[^>]*?value="(.+?)"[^>]*?name="file"'          ids = re.findall(pattern, self.html, re.I | re.S)          self.logDebug("Decrypting %d Web links" % len(ids)) @@ -244,7 +244,7 @@ class LinkCryptWs(Crypter):          for line in self.container_html:              if type in line:                  jseval = self.handle_javascript(line) -                clink = re.search(r'href=["\']([^"\']*?)["\']',jseval,re.I) +                clink = re.search(r'href=["\'](["\']+)', jseval, re.I)                  if not clink:                      continue diff --git a/module/plugins/crypter/MegaRapidCzFolder.py b/module/plugins/crypter/MegaRapidCzFolder.py index 63d41982d..fadd6dbed 100644 --- a/module/plugins/crypter/MegaRapidCzFolder.py +++ b/module/plugins/crypter/MegaRapidCzFolder.py @@ -18,7 +18,7 @@ class MegaRapidCzFolder(SimpleCrypter):      __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] -    LINK_PATTERN = r'<td class="soubor"[^>]*><a href="([^"]+)">' +    LINK_PATTERN = r'<td class="soubor".*?><a href="(.+?)">'  getInfo = create_getInfo(MegaRapidCzFolder) diff --git a/module/plugins/crypter/MultiloadCz.py b/module/plugins/crypter/MultiloadCz.py index 2abb627c3..eea689a09 100644 --- a/module/plugins/crypter/MultiloadCz.py +++ b/module/plugins/crypter/MultiloadCz.py @@ -20,8 +20,8 @@ class MultiloadCz(Crypter):      __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] -    FOLDER_PATTERN = r'<form action="" method="get"><textarea[^>]*>([^>]*)</textarea></form>' -    LINK_PATTERN = r'<p class="manager-server"><strong>([^<]+)</strong></p><p class="manager-linky"><a href="([^"]+)">' +    FOLDER_PATTERN = r'<form action="" method="get"><textarea.*?>([^>]*)</textarea></form>' +    LINK_PATTERN = r'<p class="manager-server"><strong>([^<]+)</strong></p><p class="manager-linky"><a href="(.+?)">'      def decrypt(self, pyfile): diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py index 8e69a9323..7de2c0df7 100644 --- a/module/plugins/crypter/NCryptIn.py +++ b/module/plugins/crypter/NCryptIn.py @@ -27,7 +27,7 @@ class NCryptIn(Crypter):      JK_KEY = "jk"      CRYPTED_KEY = "crypted" -    NAME_PATTERN = r'<meta name="description" content="(?P<N>[^"]+)"' +    NAME_PATTERN = r'<meta name="description" content="(?P<N>.+?)"'      def setup(self): @@ -144,7 +144,7 @@ class NCryptIn(Crypter):          # Resolve anicaptcha          if "anicaptcha" in form:              self.logDebug("Captcha protected") -            captchaUri = re.search(r'src="(/temp/anicaptcha/[^"]+)', form).group(1) +            captchaUri = re.search(r'src="(/temp/anicaptcha/.+?)"', form).group(1)              captcha = self.decryptCaptcha("http://ncrypt.in" + captchaUri)              self.logDebug("Captcha resolved [%s]" % captcha)              postData['captcha'] = captcha diff --git a/module/plugins/crypter/PastebinCom.py b/module/plugins/crypter/PastebinCom.py index e8ffec4e7..751b47cc9 100644 --- a/module/plugins/crypter/PastebinCom.py +++ b/module/plugins/crypter/PastebinCom.py @@ -19,7 +19,7 @@ class PastebinCom(SimpleCrypter):      LINK_PATTERN = r'<div class="de\d+">(https?://[^ <]+)(?:[^<]*)</div>' -    NAME_PATTERN = r'<div class="paste_box_line1" title="(?P<N>[^"]+)">' +    NAME_PATTERN = r'<div class="paste_box_line1" title="(?P<N>.+?)">'  getInfo = create_getInfo(PastebinCom) diff --git a/module/plugins/crypter/QuickshareCzFolder.py b/module/plugins/crypter/QuickshareCzFolder.py index 0ccba2a5e..3e38d36b4 100644 --- a/module/plugins/crypter/QuickshareCzFolder.py +++ b/module/plugins/crypter/QuickshareCzFolder.py @@ -18,7 +18,7 @@ class QuickshareCzFolder(Crypter):      __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] -    FOLDER_PATTERN = r'<textarea[^>]*>(.*?)</textarea>' +    FOLDER_PATTERN = r'<textarea.*?>(.*?)</textarea>'      LINK_PATTERN = r'(http://www\.quickshare\.cz/\S+)' diff --git a/module/plugins/crypter/UlozToFolder.py b/module/plugins/crypter/UlozToFolder.py index a9a6117c0..3f2a60cf7 100644 --- a/module/plugins/crypter/UlozToFolder.py +++ b/module/plugins/crypter/UlozToFolder.py @@ -19,8 +19,8 @@ class UlozToFolder(Crypter):      FOLDER_PATTERN = r'<ul class="profile_files">(.*?)</ul>' -    LINK_PATTERN = r'<br /><a href="/([^"]+)">[^<]+</a>' -    NEXT_PAGE_PATTERN = r'<a class="next " href="/([^"]+)"> </a>' +    LINK_PATTERN = r'<br /><a href="/(.+?)">.+?</a>' +    NEXT_PAGE_PATTERN = r'<a class="next " href="/(.+?)"> </a>'      def decrypt(self, pyfile): diff --git a/module/plugins/hooks/DeleteFinished.py b/module/plugins/hooks/DeleteFinished.py index 75cb33e96..bde4ca259 100644 --- a/module/plugins/hooks/DeleteFinished.py +++ b/module/plugins/hooks/DeleteFinished.py @@ -9,9 +9,8 @@ class DeleteFinished(Hook):      __type__    = "hook"      __version__ = "1.12" -    __config__ = [("activated" , "bool", "Activated"                         , "False"), -                  ("interval"  , "int" , "Delete every (hours)"              , "72"   ), -                  ("deloffline", "bool", "Delete packages with offline links", "False")] +    __config__ = [("interval"  , "int" , "Check interval in hours"          , 72   ), +                  ("deloffline", "bool", "Delete package with offline links", False)]      __description__ = """Automatically delete all finished packages from queue"""      __license__     = "GPLv3" diff --git a/module/plugins/hooks/ExtractArchive.py b/module/plugins/hooks/ExtractArchive.py index c5f842fdd..8c40667c2 100644 --- a/module/plugins/hooks/ExtractArchive.py +++ b/module/plugins/hooks/ExtractArchive.py @@ -175,7 +175,7 @@ class ExtractArchive(Hook):                      print_exc()          if self.extractors: -            self.logInfo(_("Activated") + " " + "|".join("%s %s" % (Extractor.__name__,Extractor.VERSION) for Extractor in self.extractors)) +            self.logInfo(_("Activated") + " " + "|".join("%s %s" % (Extractor.__name__, Extractor.VERSION) for Extractor in self.extractors))              self.extractQueued()  #: Resume unfinished extractions          else:              self.logInfo(_("No Extract plugins activated")) diff --git a/module/plugins/hooks/MultishareCz.py b/module/plugins/hooks/MultishareCz.py index e696d3fef..6ead88c34 100644 --- a/module/plugins/hooks/MultishareCz.py +++ b/module/plugins/hooks/MultishareCz.py @@ -21,7 +21,7 @@ class MultishareCz(MultiHook):      __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] -    HOSTER_PATTERN = r'<img class="logo-shareserveru"[^>]*?alt="([^"]+)"></td>\s*<td class="stav">[^>]*?alt="OK"' +    HOSTER_PATTERN = r'<img class="logo-shareserveru"[^>]*?alt="(.+?)"></td>\s*<td class="stav">[^>]*?alt="OK"'      def getHosters(self): diff --git a/module/plugins/hoster/CrockoCom.py b/module/plugins/hoster/CrockoCom.py index 6a9715465..1d7468520 100644 --- a/module/plugins/hoster/CrockoCom.py +++ b/module/plugins/hoster/CrockoCom.py @@ -19,16 +19,16 @@ class CrockoCom(SimpleHoster):      __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] -    NAME_PATTERN = r'<span class="fz24">Download:\s*<strong>(?P<N>.*)' -    SIZE_PATTERN = r'<span class="tip1"><span class="inner">(?P<S>[^<]+)</span></span>' +    NAME_PATTERN    = r'<span class="fz24">Download:\s*<strong>(?P<N>.*)' +    SIZE_PATTERN    = r'<span class="tip1"><span class="inner">(?P<S>[^<]+)</span></span>'      OFFLINE_PATTERN = r'<h1>Sorry,<br />the page you\'re looking for <br />isn\'t here.</h1>|File not found' -    CAPTCHA_PATTERN = re.compile(r"u='(/file_contents/captcha/\w+)';\s*w='(\d+)';") +    CAPTCHA_PATTERN = r"u='(/file_contents/captcha/\w+)';\s*w='(\d+)';" -    FORM_PATTERN = r'<form  method="post" action="([^"]+)">(.*?)</form>' -    FORM_INPUT_PATTERN = r'<input[^>]* name="?([^" ]+)"? value="?([^" ]+)"?[^>]*>' +    FORM_PATTERN = r'<form  method="post" action="(.+?)">(.*?)</form>' +    FORM_INPUT_PATTERN = r'<input[^>]* name="?([^" ]+)"? value="?([^" ]+)"?.*?>' -    NAME_REPLACEMENTS = [(r'<[^>]*>', '')] +    NAME_REPLACEMENTS = [(r'<.*?>', '')]      def handleFree(self, pyfile): diff --git a/module/plugins/hoster/CzshareCom.py b/module/plugins/hoster/CzshareCom.py index 6494ce0bd..8f72f2148 100644 --- a/module/plugins/hoster/CzshareCom.py +++ b/module/plugins/hoster/CzshareCom.py @@ -22,7 +22,7 @@ class CzshareCom(SimpleHoster):      __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] -    NAME_PATTERN    = r'<div class="tab" id="parameters">\s*<p>\s*Cel. n.zev: <a href=[^>]*>(?P<N>[^<]+)</a>' +    NAME_PATTERN    = r'<div class="tab" id="parameters">\s*<p>\s*Cel. n.zev: <a href=.*?>(?P<N>[^<]+)</a>'      SIZE_PATTERN    = r'<div class="tab" id="category">(?:\s*<p>[^\n]*</p>)*\s*Velikost:\s*(?P<S>[\d .,]+)(?P<U>[\w^_]+)\s*</div>'      OFFLINE_PATTERN = r'<div class="header clearfix">\s*<h2 class="red">' @@ -31,10 +31,10 @@ class CzshareCom(SimpleHoster):      CHECK_TRAFFIC = True -    FREE_URL_PATTERN     = r'<a href="([^"]+)" class="page-download">[^>]*alt="([^"]+)" /></a>' +    FREE_URL_PATTERN     = r'<a href="(.+?)" class="page-download">[^>]*alt="(.+?)" /></a>'      FREE_FORM_PATTERN    = r'<form action="download\.php" method="post">\s*<img src="captcha\.php" id="captcha" />(.*?)</form>'      PREMIUM_FORM_PATTERN = r'<form action="/profi_down\.php" method="post">(.*?)</form>' -    FORM_INPUT_PATTERN   = r'<input[^>]* name="([^"]+)" value="([^"]+)"[^>]*/>' +    FORM_INPUT_PATTERN   = r'<input[^>]* name="(.+?)" value="(.+?)"[^>]*/>'      MULTIDL_PATTERN      = r'<p><font color=\'red\'>Z[^<]*PROFI.</font></p>'      USER_CREDIT_PATTERN  = r'<div class="credit">\s*kredit: <strong>([\d .,]+)(\w+)</strong>\s*</div><!-- .credit -->' diff --git a/module/plugins/hoster/DataHu.py b/module/plugins/hoster/DataHu.py index 58e5b7e3e..955c94437 100644 --- a/module/plugins/hoster/DataHu.py +++ b/module/plugins/hoster/DataHu.py @@ -24,7 +24,7 @@ class DataHu(SimpleHoster):      INFO_PATTERN = ur'<title>(?P<N>.*) \((?P<S>[^)]+)\) let\xf6lt\xe9se</title>'      OFFLINE_PATTERN = ur'Az adott f\xe1jl nem l\xe9tezik' -    LINK_FREE_PATTERN = r'<div class="download_box_button"><a href="([^"]+)">' +    LINK_FREE_PATTERN = r'<div class="download_box_button"><a href="(.+?)">'      def setup(self): diff --git a/module/plugins/hoster/DepositfilesCom.py b/module/plugins/hoster/DepositfilesCom.py index e6f47dc0a..95fd7c1b1 100644 --- a/module/plugins/hoster/DepositfilesCom.py +++ b/module/plugins/hoster/DepositfilesCom.py @@ -28,7 +28,7 @@ class DepositfilesCom(SimpleHoster):      OFFLINE_PATTERN = r'<span class="html_download_api-not_exists"></span>'      NAME_REPLACEMENTS = [(r'\%u([0-9A-Fa-f]{4})', lambda m: unichr(int(m.group(1), 16))), -                              (r'.*<b title="(?P<N>[^"]+).*', "\g<N>")] +                              (r'.*<b title="(?P<N>.+?)".*', "\g<N>")]      URL_REPLACEMENTS  = [(__pattern__ + ".*", "https://dfiles.eu/files/\g<ID>")]      COOKIES = [("dfiles.eu", "lang_current", "en")] diff --git a/module/plugins/hoster/DlFreeFr.py b/module/plugins/hoster/DlFreeFr.py index 38cc675a6..72d15852c 100644 --- a/module/plugins/hoster/DlFreeFr.py +++ b/module/plugins/hoster/DlFreeFr.py @@ -48,8 +48,8 @@ class DlFreeFr(SimpleHoster):                         ("Toilal", "toilal.dev@gmail.com")] -    NAME_PATTERN = r'Fichier:</td>\s*<td[^>]*>(?P<N>[^>]*)</td>' -    SIZE_PATTERN = r'Taille:</td>\s*<td[^>]*>(?P<S>[\d.,]+\w)o' +    NAME_PATTERN = r'Fichier:</td>\s*<td.*?>(?P<N>[^>]*)</td>' +    SIZE_PATTERN = r'Taille:</td>\s*<td.*?>(?P<S>[\d.,]+\w)o'      OFFLINE_PATTERN = r'Erreur 404 - Document non trouv|Fichier inexistant|Le fichier demandé n\'a pas été trouvé' diff --git a/module/plugins/hoster/EdiskCz.py b/module/plugins/hoster/EdiskCz.py index a27bf46d2..cfa6da4eb 100644 --- a/module/plugins/hoster/EdiskCz.py +++ b/module/plugins/hoster/EdiskCz.py @@ -18,7 +18,7 @@ class EdiskCz(SimpleHoster):      __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] -    INFO_PATTERN = r'<span class="fl" title="(?P<N>[^"]+)">\s*.*?\((?P<S>[\d.,]+) (?P<U>[\w^_]+)\)</h1></span>' +    INFO_PATTERN = r'<span class="fl" title="(?P<N>.+?)">\s*.*?\((?P<S>[\d.,]+) (?P<U>[\w^_]+)\)</h1></span>'      OFFLINE_PATTERN = r'<h3>This file does not exist due to one of the following:</h3><ul><li>'      ACTION_PATTERN = r'/en/download/(\d+/.*\.html)' diff --git a/module/plugins/hoster/ExtabitCom.py b/module/plugins/hoster/ExtabitCom.py index e0c02e08e..a485f0c4d 100644 --- a/module/plugins/hoster/ExtabitCom.py +++ b/module/plugins/hoster/ExtabitCom.py @@ -21,7 +21,7 @@ class ExtabitCom(SimpleHoster):      __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] -    NAME_PATTERN = r'<th>File:</th>\s*<td class="col-fileinfo">\s*<div title="(?P<N>[^"]+)">' +    NAME_PATTERN = r'<th>File:</th>\s*<td class="col-fileinfo">\s*<div title="(?P<N>.+?)">'      SIZE_PATTERN = r'<th>Size:</th>\s*<td class="col-fileinfo">(?P<S>[^<]+)</td>'      OFFLINE_PATTERN = r'>File not found<'      TEMP_OFFLINE_PATTERN = r'>(File is temporary unavailable|No download mirror)<' diff --git a/module/plugins/hoster/FilejungleCom.py b/module/plugins/hoster/FilejungleCom.py index 8a8aee9e2..236603c6e 100644 --- a/module/plugins/hoster/FilejungleCom.py +++ b/module/plugins/hoster/FilejungleCom.py @@ -19,7 +19,7 @@ class FilejungleCom(FileserveCom):      URLS = ["http://www.filejungle.com/f/", "http://www.filejungle.com/check_links.php",              "http://www.filejungle.com/checkReCaptcha.php"]      LINKCHECK_TR = r'<li>\s*(<div class="col1">.*?)</li>' -    LINKCHECK_TD = r'<div class="(?:col )?col\d">(?:<[^>]*>| )*([^<]*)' +    LINKCHECK_TD = r'<div class="(?:col )?col\d">(?:<.*?>| )*([^<]*)'      LONG_WAIT_PATTERN = r'<h1>Please wait for (\d+) (\w+)\s*to download the next file\.</h1>' diff --git a/module/plugins/hoster/FilepostCom.py b/module/plugins/hoster/FilepostCom.py index 610de51f8..78960dc6d 100644 --- a/module/plugins/hoster/FilepostCom.py +++ b/module/plugins/hoster/FilepostCom.py @@ -21,7 +21,7 @@ class FilepostCom(SimpleHoster):      __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] -    INFO_PATTERN = r'<input type="text" id="url" value=\'<a href[^>]*>(?P<N>[^>]+?) - (?P<S>[\d.,]+) (?P<U>[\w^_]+)</a>\' class="inp_text"/>' +    INFO_PATTERN = r'<input type="text" id="url" value=\'<a href.*?>(?P<N>[^>]+?) - (?P<S>[\d.,]+) (?P<U>[\w^_]+)</a>\' class="inp_text"/>'      OFFLINE_PATTERN = r'class="error_msg_title"> Invalid or Deleted File. </div>|<div class="file_info file_info_deleted">'      PREMIUM_ONLY_PATTERN = r'members only. Please upgrade to premium|a premium membership is required to download this file' diff --git a/module/plugins/hoster/FileserveCom.py b/module/plugins/hoster/FileserveCom.py index 6f316cea3..4bca2eb59 100644 --- a/module/plugins/hoster/FileserveCom.py +++ b/module/plugins/hoster/FileserveCom.py @@ -48,7 +48,7 @@ class FileserveCom(Hoster):      URLS = ["http://www.fileserve.com/file/", "http://www.fileserve.com/link-checker.php",              "http://www.fileserve.com/checkReCaptcha.php"]      LINKCHECK_TR = r'<tr>\s*(<td>http://www\.fileserve\.com/file/.*?)</tr>' -    LINKCHECK_TD = r'<td>(?:<[^>]*>| )*([^<]*)' +    LINKCHECK_TD = r'<td>(?:<.*?>| )*([^<]*)'      CAPTCHA_KEY_PATTERN = r'var reCAPTCHA_publickey=\'(.+?)\''      LONG_WAIT_PATTERN = r'<li class="title">You need to wait (\d+) (\w+) to start another download\.</li>' diff --git a/module/plugins/hoster/HugefilesNet.py b/module/plugins/hoster/HugefilesNet.py index b7e599a50..3fdcca1ba 100644 --- a/module/plugins/hoster/HugefilesNet.py +++ b/module/plugins/hoster/HugefilesNet.py @@ -17,7 +17,7 @@ class HugefilesNet(XFSHoster):      __authors__     = [("stickell", "l.stickell@yahoo.it")] -    SIZE_PATTERN = r'File Size:</span>\s*<span[^>]*>(?P<S>[^<]+)</span></div>' +    SIZE_PATTERN = r'File Size:</span>\s*<span.*?>(?P<S>[^<]+)</span></div>'      FORM_INPUTS_MAP = {'ctype': re.compile(r'\d+')} diff --git a/module/plugins/hoster/IfolderRu.py b/module/plugins/hoster/IfolderRu.py index 01618f37d..0f09731e4 100644 --- a/module/plugins/hoster/IfolderRu.py +++ b/module/plugins/hoster/IfolderRu.py @@ -10,7 +10,7 @@ class IfolderRu(SimpleHoster):      __type__    = "hoster"      __version__ = "0.39" -    __pattern__ = r'http://(?:www|files\.)?(?:ifolder\.ru|metalarea\.org|rusfolder\.(?:com|net|ru))/(?:files/)?(?P<ID>\d+)' +    __pattern__ = r'http://(?:www)?(files\.)?(ifolder\.ru|metalarea\.org|rusfolder\.(com|net|ru))/(files/)?(?P<ID>\d+)'      __config__  = [("use_premium", "bool", "Use premium account if available", True)]      __description__ = """Ifolder.ru hoster plugin""" @@ -22,13 +22,13 @@ class IfolderRu(SimpleHoster):      NAME_PATTERN    = ur'(?:<div><span>)?Название:(?:</span>)? <b>(?P<N>[^<]+)</b><(?:/div|br)>'      SIZE_PATTERN    = ur'(?:<div><span>)?Размер:(?:</span>)? <b>(?P<S>[^<]+)</b><(?:/div|br)>' -    OFFLINE_PATTERN = ur'<p>Файл номер <b>[^<]*</b> (не найден|удален) !!!</p>' +    OFFLINE_PATTERN = ur'<p>Файл номер <b>.*?</b> (не найден|удален) !!!</p>' -    SESSION_ID_PATTERN = r'<input type="hidden" name="session" value="([^"]+)"' -    INTS_SESSION_PATTERN = r'\(\'ints_session\'\);\s*if\(tag\)\{tag\.value = "([^"]+)";\}' +    SESSION_ID_PATTERN = r'<input type="hidden" name="session" value="(.+?)"' +    INTS_SESSION_PATTERN = r'\(\'ints_session\'\);\s*if\(tag\)\{tag\.value = "(.+?)";\}'      HIDDEN_INPUT_PATTERN = r'var v = .*?name=\'(.+?)\' value=\'1\'' -    LINK_FREE_PATTERN = r'<a href="([^"]+)" class="downloadbutton_files"' +    LINK_FREE_PATTERN = r'<a href="(.+?)" class="downloadbutton_files"'      WRONG_CAPTCHA_PATTERN = ur'<font color=Red>неверный код,<br>введите еще раз</font><br>' diff --git a/module/plugins/hoster/Keep2ShareCc.py b/module/plugins/hoster/Keep2ShareCc.py index 6916797bd..5afa87a4a 100644 --- a/module/plugins/hoster/Keep2ShareCc.py +++ b/module/plugins/hoster/Keep2ShareCc.py @@ -30,7 +30,7 @@ class Keep2ShareCc(SimpleHoster):      OFFLINE_PATTERN      = r'File not found or deleted|Sorry, this file is blocked or deleted|Error 404'      TEMP_OFFLINE_PATTERN = r'Downloading blocked due to' -    LINK_FREE_PATTERN    = r'"([^"]+url.html?file=.+?)"|window\.location\.href = \'(.+?)\';' +    LINK_FREE_PATTERN    = r'"(.+?url.html?file=.+?)"|window\.location\.href = \'(.+?)\';'      LINK_PREMIUM_PATTERN = r'window\.location\.href = \'(.+?)\';'      CAPTCHA_PATTERN = r'src="(/file/captcha\.html.+?)"' @@ -67,7 +67,7 @@ class Keep2ShareCc(SimpleHoster):      def handleFree(self, pyfile): -        self.fid  = re.search(r'<input type="hidden" name="slow_id" value="([^"]+)">', self.html).group(1) +        self.fid  = re.search(r'<input type="hidden" name="slow_id" value="(.+?)">', self.html).group(1)          self.html = self.load(pyfile.url, post={'yt0': '', 'slow_id': self.fid})          self.checkErrors() diff --git a/module/plugins/hoster/MegaRapidCz.py b/module/plugins/hoster/MegaRapidCz.py index d03225d8e..577a3d511 100644 --- a/module/plugins/hoster/MegaRapidCz.py +++ b/module/plugins/hoster/MegaRapidCz.py @@ -36,13 +36,13 @@ class MegaRapidCz(SimpleHoster):                         ("Walter Purcaro", "vuolter@gmail.com")] -    NAME_PATTERN = r'<h1[^>]*><span[^>]*>(?:<a[^>]*>)?(?P<N>[^<]+)' +    NAME_PATTERN = r'<h1.*?><span.*?>(?:<a.*?>)?(?P<N>[^<]+)'      SIZE_PATTERN = r'<td class="i">Velikost:</td>\s*<td class="h"><strong>\s*(?P<S>[\d.,]+) (?P<U>[\w^_]+)</strong></td>'      OFFLINE_PATTERN = ur'Nastala chyba 404|Soubor byl smazán'      CHECK_TRAFFIC = True -    LINK_PREMIUM_PATTERN = r'<a href="([^"]+)" title="Stahnout">([^<]+)</a>' +    LINK_PREMIUM_PATTERN = r'<a href="(.+?)" title="Stahnout">([^<]+)</a>'      ERR_LOGIN_PATTERN  = ur'<div class="error_div"><strong>Stahování je přístupné pouze přihlášeným uživatelům'      ERR_CREDIT_PATTERN = ur'<div class="error_div"><strong>Stahování zdarma je možné jen přes náš' diff --git a/module/plugins/hoster/MegaRapidoNet.py b/module/plugins/hoster/MegaRapidoNet.py index b38374646..b5bd7f3f2 100644 --- a/module/plugins/hoster/MegaRapidoNet.py +++ b/module/plugins/hoster/MegaRapidoNet.py @@ -8,8 +8,8 @@ from module.plugins.internal.MultiHoster import MultiHoster  def random_with_N_digits(n):      rand = "0."      not_zero = 0 -    for i in range(1,n+1): -        r = randint(0,9) +    for i in range(1, n + 1): +        r = randint(0, 9)          if(r > 0):              not_zero += 1          rand += str(r) @@ -33,9 +33,9 @@ class MegaRapidoNet(MultiHoster):      __authors__     = [("Kagenoshin", "kagenoshin@gmx.ch")] -    LINK_PREMIUM_PATTERN = r'<\s*?a[^>]*?title\s*?=\s*?["\'][^"\']*?download["\'][^>]*?href=["\']([^"\']*)' +    LINK_PREMIUM_PATTERN = r'<\s*?a[^>]*?title\s*?=\s*?["\'].*?download["\'][^>]*?href=["\']([^"\']+)' -    ERROR_PATTERN = r'<\s*?div[^>]*?class\s*?=\s*?["\']?alert-message error[^>]*>([^<]*)' +    ERROR_PATTERN = r'<\s*?div[^>]*?class\s*?=\s*?["\']?alert-message error.*?>([^<]*)'      def handlePremium(self, pyfile): diff --git a/module/plugins/hoster/MegasharesCom.py b/module/plugins/hoster/MegasharesCom.py index 473675b64..c6ccdb587 100644 --- a/module/plugins/hoster/MegasharesCom.py +++ b/module/plugins/hoster/MegasharesCom.py @@ -20,17 +20,17 @@ class MegasharesCom(SimpleHoster):                         ("Walter Purcaro", "vuolter@gmail.com")] -    NAME_PATTERN = r'<h1 class="black xxl"[^>]*title="(?P<N>[^"]+)">' +    NAME_PATTERN = r'<h1 class="black xxl"[^>]*title="(?P<N>.+?)">'      SIZE_PATTERN = r'<strong><span class="black">Filesize:</span></strong> (?P<S>[\d.,]+) (?P<U>[\w^_]+)'      OFFLINE_PATTERN = r'<dd class="red">(Invalid Link Request|Link has been deleted|Invalid link)' -    LINK_PATTERN = r'<div id="show_download_button_%d"[^>]*>\s*<a href="([^"]+)">' +    LINK_PATTERN = r'<div id="show_download_button_%d".*?>\s*<a href="(.+?)">' -    PASSPORT_LEFT_PATTERN = r'Your Download Passport is: <[^>]*>(\w+).*?You have.*?<[^>]*>.*?([\d.]+) (\w+)' +    PASSPORT_LEFT_PATTERN = r'Your Download Passport is: <.*?>(\w+).*?You have.*?<.*?>.*?([\d.]+) (\w+)'      PASSPORT_RENEW_PATTERN = r'(\d+):<strong>(\d+)</strong>:<strong>(\d+)</strong>'      REACTIVATE_NUM_PATTERN = r'<input[^>]*id="random_num" value="(\d+)" />'      REACTIVATE_PASSPORT_PATTERN = r'<input[^>]*id="passport_num" value="(\w+)" />' -    REQUEST_URI_PATTERN = r'var request_uri = "([^"]+)";' +    REQUEST_URI_PATTERN = r'var request_uri = "(.+?)";'      NO_SLOTS_PATTERN = r'<dd class="red">All download slots for this link are currently filled' diff --git a/module/plugins/hoster/MovReelCom.py b/module/plugins/hoster/MovReelCom.py index 9b8679c10..2fe5184ae 100644 --- a/module/plugins/hoster/MovReelCom.py +++ b/module/plugins/hoster/MovReelCom.py @@ -15,7 +15,7 @@ class MovReelCom(XFSHoster):      __authors__     = [("JorisV83", "jorisv83-pyload@yahoo.com")] -    LINK_PATTERN = r'<a href="([^"]+)">Download Link' +    LINK_PATTERN = r'<a href="(.+?)">Download Link'  getInfo = create_getInfo(MovReelCom) diff --git a/module/plugins/hoster/NovafileCom.py b/module/plugins/hoster/NovafileCom.py index bdd66473b..b00f71635 100644 --- a/module/plugins/hoster/NovafileCom.py +++ b/module/plugins/hoster/NovafileCom.py @@ -20,8 +20,8 @@ class NovafileCom(XFSHoster):                         ("stickell", "l.stickell@yahoo.it")] -    ERROR_PATTERN = r'class="alert[^"]*alert-separate"[^>]*>\s*(?:<p>)?(.*?)\s*</' -    WAIT_PATTERN  = r'<p>Please wait <span id="count"[^>]*>(\d+)</span> seconds</p>' +    ERROR_PATTERN = r'class="alert.+?alert-separate".*?>\s*(?:<p>)?(.*?)\s*</' +    WAIT_PATTERN  = r'<p>Please wait <span id="count".*?>(\d+)</span> seconds</p>'      LINK_PATTERN = r'<a href="(http://s\d+\.novafile\.com/.*?)" class="btn btn-green">Download File</a>' diff --git a/module/plugins/hoster/NowDownloadSx.py b/module/plugins/hoster/NowDownloadSx.py index 2fd9293c7..5ef36d270 100644 --- a/module/plugins/hoster/NowDownloadSx.py +++ b/module/plugins/hoster/NowDownloadSx.py @@ -28,7 +28,7 @@ class NowDownloadSx(SimpleHoster):      WAIT_PATTERN = r'\.countdown\(\{until: \+(\d+),'      LINK_FREE_PATTERN = r'(http://s\d+\.coolcdn\.info/nowdownload/.+?)["\']' -    NAME_REPLACEMENTS = [("&#?\w+;", fixup), (r'<[^>]*>', '')] +    NAME_REPLACEMENTS = [("&#?\w+;", fixup), (r'<.*?>', '')]      def setup(self): diff --git a/module/plugins/hoster/OneFichierCom.py b/module/plugins/hoster/OneFichierCom.py index 0a49084cf..e7d7675e0 100644 --- a/module/plugins/hoster/OneFichierCom.py +++ b/module/plugins/hoster/OneFichierCom.py @@ -41,6 +41,16 @@ class OneFichierCom(SimpleHoster):          self.resumeDownload = True +    #@NOTE: Temp work-around to `Content-Disposition=filename*=UTF-8` bug! +    def handleDirect(self, pyfile): +        self.link = self.directLink(pyfile.url, self.resumeDownload) + +        if self.link: +            remote = urllib2.urlopen(link) +            name   = remote.info()['Content-Disposition'].split(';') +            pyfile.name = name[1].split('filename=')[1][1:] + +      def handleFree(self, pyfile):          id = self.info['pattern']['ID1'] or self.info['pattern']['ID2']          url, inputs = self.parseHtmlForm('action="https://1fichier.com/\?%s' % id) @@ -55,21 +65,6 @@ class OneFichierCom(SimpleHoster):          self.download(url, post=inputs) -    def handleDirect(self, pyfile): -        link = self.directLink(pyfile.url, self.resumeDownload) - -        if link: -            self.logInfo(_("Direct download link detected")) -            remote = urllib2.urlopen(link) -            name = remote.info()['Content-Disposition'].split(';') -            filename = name[1].split('filename=')[1] -            filename = filename[1:-1] -            self.logDebug("filename=" + filename) -            pyfile.name = filename -            self.link = link -        else: -            self.logDebug("Direct download link not found") -      def handlePremium(self, pyfile):          self.download(pyfile.url, post={'dl': "Download", 'did': 0}) diff --git a/module/plugins/hoster/PornhubCom.py b/module/plugins/hoster/PornhubCom.py index 1bb787f09..9e0b16a85 100644 --- a/module/plugins/hoster/PornhubCom.py +++ b/module/plugins/hoster/PornhubCom.py @@ -64,7 +64,7 @@ class PornhubCom(Hoster):          if not self.html:              self.download_html() -        m = re.search(r'<title[^>]+>([^<]+) - ', self.html) +        m = re.search(r'<title.+?>([^<]+) - ', self.html)          if m:              name = m.group(1)          else: diff --git a/module/plugins/hoster/PromptfileCom.py b/module/plugins/hoster/PromptfileCom.py index 97edbd48e..3815a1a24 100644 --- a/module/plugins/hoster/PromptfileCom.py +++ b/module/plugins/hoster/PromptfileCom.py @@ -18,10 +18,10 @@ class PromptfileCom(SimpleHoster):      __authors__     = [("igel", "igelkun@myopera.com")] -    INFO_PATTERN = r'<span style="[^"]*" title="[^"]*">(?P<N>.*?) \((?P<S>[\d.,]+) (?P<U>[\w^_]+)\)</span>' -    OFFLINE_PATTERN = r'<span style="[^"]*" title="File Not Found">File Not Found</span>' +    INFO_PATTERN = r'<span style=".+?" title=".+?">(?P<N>.*?) \((?P<S>[\d.,]+) (?P<U>[\w^_]+)\)</span>' +    OFFLINE_PATTERN = r'<span style=".+?" title="File Not Found">File Not Found</span>' -    CHASH_PATTERN = r'<input type="hidden" name="chash" value="([^"]*)" />' +    CHASH_PATTERN = r'<input type="hidden" name="chash" value="(.+?)" />'      LINK_FREE_PATTERN = r'<a href=\"(.+)\" target=\"_blank\" class=\"view_dl_link\">Download File</a>' diff --git a/module/plugins/hoster/QuickshareCz.py b/module/plugins/hoster/QuickshareCz.py index c9ed1c024..250a33d0d 100644 --- a/module/plugins/hoster/QuickshareCz.py +++ b/module/plugins/hoster/QuickshareCz.py @@ -30,7 +30,7 @@ class QuickshareCz(SimpleHoster):          self.getFileInfo()          # parse js variables -        self.jsvars = dict((x, y.strip("'")) for x, y in re.findall(r"var (\w+) = ([\d.]+|'[^']*')", self.html)) +        self.jsvars = dict((x, y.strip("'")) for x, y in re.findall(r"var (\w+) = ([\d.]+|'.+?')", self.html))          self.logDebug(self.jsvars)          pyfile.name = self.jsvars['ID3'] diff --git a/module/plugins/hoster/RapidgatorNet.py b/module/plugins/hoster/RapidgatorNet.py index 19c77f15d..2626ec925 100644 --- a/module/plugins/hoster/RapidgatorNet.py +++ b/module/plugins/hoster/RapidgatorNet.py @@ -43,7 +43,7 @@ class RapidgatorNet(SimpleHoster):      LINK_FREE_PATTERN = r'return \'(http://\w+.rapidgator.net/.*)\';'      RECAPTCHA_PATTERN  = r'"http://api\.recaptcha\.net/challenge\?k=(.*?)"' -    ADSCAPTCHA_PATTERN = r'(http://api\.adscaptcha\.com/Get\.aspx[^"\']*)' +    ADSCAPTCHA_PATTERN = r'(http://api\.adscaptcha\.com/Get\.aspx[^"\']+)'      SOLVEMEDIA_PATTERN = r'http://api\.solvemedia\.com/papi/challenge\.script\?k=(.*?)"' diff --git a/module/plugins/hoster/SendspaceCom.py b/module/plugins/hoster/SendspaceCom.py index c3130135b..148217fe6 100644 --- a/module/plugins/hoster/SendspaceCom.py +++ b/module/plugins/hoster/SendspaceCom.py @@ -22,10 +22,10 @@ class SendspaceCom(SimpleHoster):      SIZE_PATTERN    = r'<div class="file_description reverse margin_center">\s*<b>File Size:</b>\s*(?P<S>[\d.,]+)(?P<U>[\w^_]+)\s*</div>'      OFFLINE_PATTERN = r'<div class="msg error" style="cursor: default">Sorry, the file you requested is not available.</div>' -    LINK_FREE_PATTERN = r'<a id="download_button" href="([^"]+)"' +    LINK_FREE_PATTERN = r'<a id="download_button" href="(.+?)"' -    CAPTCHA_PATTERN      = r'<td><img src="(/captchas/captcha\.php?captcha=([^"]+))"></td>' -    USER_CAPTCHA_PATTERN = r'<td><img src="/captchas/captcha\.php?user=([^"]+))"></td>' +    CAPTCHA_PATTERN      = r'<td><img src="(/captchas/captcha\.php?captcha=(.+?))"></td>' +    USER_CAPTCHA_PATTERN = r'<td><img src="/captchas/captcha\.php?user=(.+?))"></td>'      def handleFree(self, pyfile): diff --git a/module/plugins/hoster/StreamCz.py b/module/plugins/hoster/StreamCz.py index 11d4efcdb..97bed8109 100644 --- a/module/plugins/hoster/StreamCz.py +++ b/module/plugins/hoster/StreamCz.py @@ -32,10 +32,10 @@ class StreamCz(Hoster):      __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] -    NAME_PATTERN = r'<link rel="video_src" href="http://www\.stream\.cz/\w+/(\d+)-([^"]+)" />' +    NAME_PATTERN = r'<link rel="video_src" href="http://www\.stream\.cz/\w+/(\d+)-(.+?)" />'      OFFLINE_PATTERN = r'<h1 class="commonTitle">Str.nku nebylo mo.n. nal.zt \(404\)</h1>' -    CDN_PATTERN = r'<param name="flashvars" value="[^"]*&id=(?P<ID>\d+)(?:&cdnLQ=(?P<cdnLQ>\d*))?(?:&cdnHQ=(?P<cdnHQ>\d*))?(?:&cdnHD=(?P<cdnHD>\d*))?&' +    CDN_PATTERN = r'<param name="flashvars" value=".+?&id=(?P<ID>\d+)(?:&cdnLQ=(?P<cdnLQ>\d*))?(?:&cdnHQ=(?P<cdnHQ>\d*))?(?:&cdnHD=(?P<cdnHD>\d*))?&'      def setup(self): diff --git a/module/plugins/hoster/UloziskoSk.py b/module/plugins/hoster/UloziskoSk.py index e8355500c..39a375b49 100644 --- a/module/plugins/hoster/UloziskoSk.py +++ b/module/plugins/hoster/UloziskoSk.py @@ -22,10 +22,10 @@ class UloziskoSk(SimpleHoster):      SIZE_PATTERN = ur'Veľkosť súboru: <strong>(?P<S>[\d.,]+) (?P<U>[\w^_]+)</strong><br />'      OFFLINE_PATTERN = ur'<span class = "red">Zadaný súbor neexistuje z jedného z nasledujúcich dôvodov:</span>' -    LINK_FREE_PATTERN = r'<form name = "formular" action = "([^"]+)" method = "post">' -    ID_PATTERN = r'<input type = "hidden" name = "id" value = "([^"]+)" />' -    CAPTCHA_PATTERN = r'<img src="(/obrazky/obrazky\.php\?fid=[^"]+)" alt="" />' -    IMG_PATTERN = ur'<strong>PRE ZVÄČŠENIE KLIKNITE NA OBRÁZOK</strong><br /><a href = "([^"]+)">' +    LINK_FREE_PATTERN = r'<form name = "formular" action = "(.+?)" method = "post">' +    ID_PATTERN = r'<input type = "hidden" name = "id" value = "(.+?)" />' +    CAPTCHA_PATTERN = r'<img src="(/obrazky/obrazky\.php\?fid=.+?)" alt="" />' +    IMG_PATTERN = ur'<strong>PRE ZVÄČŠENIE KLIKNITE NA OBRÁZOK</strong><br /><a href = "(.+?)">'      def process(self, pyfile): diff --git a/module/plugins/hoster/UnibytesCom.py b/module/plugins/hoster/UnibytesCom.py index 93e060b6e..7753f1264 100644 --- a/module/plugins/hoster/UnibytesCom.py +++ b/module/plugins/hoster/UnibytesCom.py @@ -24,10 +24,10 @@ class UnibytesCom(SimpleHoster):      HOSTER_DOMAIN = "unibytes.com" -    INFO_PATTERN = r'<span[^>]*?id="fileName"[^>]*>(?P<N>[^>]+)</span>\s*\((?P<S>\d.*?)\)' +    INFO_PATTERN = r'<span[^>]*?id="fileName".*?>(?P<N>[^>]+)</span>\s*\((?P<S>\d.*?)\)'      WAIT_PATTERN = r'Wait for <span id="slowRest">(\d+)</span> sec' -    LINK_FREE_PATTERN = r'<a href="([^"]+)">Download</a>' +    LINK_FREE_PATTERN = r'<a href="(.+?)">Download</a>'      def handleFree(self, pyfile): diff --git a/module/plugins/hoster/UploadedTo.py b/module/plugins/hoster/UploadedTo.py index cd1cee6d7..cc64a28eb 100644 --- a/module/plugins/hoster/UploadedTo.py +++ b/module/plugins/hoster/UploadedTo.py @@ -101,7 +101,7 @@ class UploadedTo(SimpleHoster):          if "type:'download'" in self.html:              self.correctCaptcha()              try: -                self.link = re.search("url:'([^']+)", self.html).group(1) +                self.link = re.search("url:'(.+?)'", self.html).group(1)              except Exception:                  pass diff --git a/module/plugins/hoster/UpstoreNet.py b/module/plugins/hoster/UpstoreNet.py index d5d30177a..ec0c88c82 100644 --- a/module/plugins/hoster/UpstoreNet.py +++ b/module/plugins/hoster/UpstoreNet.py @@ -23,7 +23,7 @@ class UpstoreNet(SimpleHoster):      OFFLINE_PATTERN = r'<span class="error">File not found</span>'      WAIT_PATTERN = r'var sec = (\d+)' -    CHASH_PATTERN = r'<input type="hidden" name="hash" value="([^"]*)">' +    CHASH_PATTERN = r'<input type="hidden" name="hash" value="(.+?)">'      LINK_FREE_PATTERN = r'<a href="(https?://.*?)" target="_blank"><b>' diff --git a/module/plugins/hoster/VeehdCom.py b/module/plugins/hoster/VeehdCom.py index e240df912..78da91020 100644 --- a/module/plugins/hoster/VeehdCom.py +++ b/module/plugins/hoster/VeehdCom.py @@ -52,7 +52,7 @@ class VeehdCom(Hoster):          if not self.html:              self.download_html() -        m = re.search(r'<title[^>]*>([^<]+) on Veehd</title>', self.html) +        m = re.search(r'<title.*?>([^<]+) on Veehd</title>', self.html)          if m is None:              self.error(_("Video title not found")) @@ -73,7 +73,7 @@ class VeehdCom(Hoster):          if not self.html:              self.download_html() -        m = re.search(r'<embed type="video/divx" src="(http://([^/]*\.)?veehd\.com/dl/[^"]+)"', +        m = re.search(r'<embed type="video/divx" src="(http://([^/]*\.)?veehd\.com/dl/.+?)"',                            self.html)          if m is None:              self.error(_("Embedded video url not found")) diff --git a/module/plugins/internal/CaptchaService.py b/module/plugins/internal/CaptchaService.py index fcb8f0095..3978a96c4 100644 --- a/module/plugins/internal/CaptchaService.py +++ b/module/plugins/internal/CaptchaService.py @@ -251,8 +251,8 @@ class AdsCaptcha(CaptchaService):      __authors__     = [("pyLoad Team", "admin@pyload.org")] -    CAPTCHAID_PATTERN  = r'api\.adscaptcha\.com/Get\.aspx\?[^"\']*CaptchaId=(\d+)' -    PUBLICKEY_PATTERN = r'api\.adscaptcha\.com/Get\.aspx\?[^"\']*PublicKey=([\w-]+)' +    CAPTCHAID_PATTERN  = r'api\.adscaptcha\.com/Get\.aspx\?.*?CaptchaId=(\d+)' +    PUBLICKEY_PATTERN = r'api\.adscaptcha\.com/Get\.aspx\?.*?PublicKey=([\w-]+)'      def detect_key(self, html=None): @@ -358,7 +358,7 @@ class SolveMedia(CaptchaService):          html = self.plugin.req.load("http://api.solvemedia.com/papi/challenge.noscript",                                      get={'k': key})          try: -            challenge = re.search(r'<input type=hidden name="adcopy_challenge" id="adcopy_challenge" value="([^"]+)">', +            challenge = re.search(r'<input type=hidden name="adcopy_challenge" id="adcopy_challenge" value="(.+?)">',                                    html).group(1)              server    = "http://api.solvemedia.com/papi/media" | 
