summaryrefslogtreecommitdiffstats
path: root/module/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'module/plugins')
-rw-r--r--module/plugins/accounts/MegaRapidoNet.py57
-rw-r--r--module/plugins/hooks/AntiVirus.py7
-rw-r--r--module/plugins/hooks/MegaRapidoNet.py81
-rw-r--r--module/plugins/hoster/MegaRapidoNet.py53
-rw-r--r--module/plugins/internal/SimpleHoster.py6
5 files changed, 200 insertions, 4 deletions
diff --git a/module/plugins/accounts/MegaRapidoNet.py b/module/plugins/accounts/MegaRapidoNet.py
new file mode 100644
index 000000000..80e066244
--- /dev/null
+++ b/module/plugins/accounts/MegaRapidoNet.py
@@ -0,0 +1,57 @@
+# -*- coding: utf-8 -*-
+
+import re
+import time
+
+from module.plugins.Account import Account
+
+
+class MegaRapidoNet(Account):
+ __name__ = "MegaRapidoNet"
+ __type__ = "account"
+ __version__ = "0.02"
+
+ __description__ = """MegaRapido.net account plugin"""
+ __license__ = "GPLv3"
+ __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*?["\']'
+
+
+ def loadAccountInfo(self, user, req):
+ validuntil = None
+ trafficleft = None
+ premium = False
+
+ html = req.load("http://megarapido.net/gerador", decode=True)
+
+ validuntil = re.search(self.VALID_UNTIL_PATTERN, html)
+ if validuntil:
+ #hier weitermachen!!! (müssen umbedingt die zeit richtig machen damit! (sollte aber möglich))
+ validuntil = time.time() + int(validuntil.group(1)) * 24 * 3600 + int(validuntil.group(2)) * 3600 + int(validuntil.group(3)) * 60 + int(validuntil.group(4))
+ trafficleft = -1
+ premium = True
+
+ return {'validuntil' : validuntil,
+ 'trafficleft': trafficleft,
+ 'premium' : premium}
+
+
+ def login(self, user, data, req):
+ req.load("http://megarapido.net/login")
+ req.load("http://megarapido.net/painel_user/ajax/logar.php",
+ post={'login': user, 'senha': data['password']},
+ decode=True)
+
+ html = req.load("http://megarapido.net/gerador")
+
+ 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")
diff --git a/module/plugins/hooks/AntiVirus.py b/module/plugins/hooks/AntiVirus.py
index ffed86836..6f88b982a 100644
--- a/module/plugins/hooks/AntiVirus.py
+++ b/module/plugins/hooks/AntiVirus.py
@@ -11,9 +11,10 @@ from module.utils import fs_encode, save_join
class AntiVirus(Hook):
__name__ = "AntiVirus"
__type__ = "hook"
- __version__ = "0.04"
+ __version__ = "0.05"
- __config__ = [("action" , "Antivirus default;Delete;Quarantine", "Manage infected files" , "Antivirus default"), #@TODO: add trash option (use Send2Trash lib)
+ #@TODO: add trash option (use Send2Trash lib)
+ __config__ = [("action" , "Antivirus default;Delete;Quarantine", "Manage infected files" , "Antivirus default"),
("quardir" , "folder" , "Quarantine folder" , "" ),
("scanfailed", "bool" , "Scan incompleted files (failed downloads)", False ),
("cmdfile" , "file" , "Antivirus executable" , "" ),
@@ -58,7 +59,7 @@ class AntiVirus(Hook):
if err:
self.logWarning(filename, err)
- if not self.getConfig('ignore-err')
+ if not self.getConfig('ignore-err'):
self.logDebug("Delete/Quarantine task is aborted")
return
diff --git a/module/plugins/hooks/MegaRapidoNet.py b/module/plugins/hooks/MegaRapidoNet.py
new file mode 100644
index 000000000..33c74ae6f
--- /dev/null
+++ b/module/plugins/hooks/MegaRapidoNet.py
@@ -0,0 +1,81 @@
+# -*- coding: utf-8 -*-
+
+import re
+
+from module.plugins.internal.MultiHook import MultiHook
+
+
+class MegaRapidoNet(MultiHook):
+ __name__ = "MegaRapidoNet"
+ __type__ = "hook"
+ __version__ = "0.02"
+
+ __config__ = [("pluginmode" , "all;listed;unlisted", "Use for plugins" , "all"),
+ ("pluginlist" , "str" , "Plugin list (comma separated)", "" ),
+ ("reload" , "bool" , "Reload plugin list" , True ),
+ ("reloadinterval", "int" , "Reload interval in hours" , 12 )]
+
+ __description__ = """MegaRapido.net hook plugin"""
+ __license__ = "GPLv3"
+ __authors__ = [("Kagenoshin", "kagenoshin@gmx.ch")]
+
+
+ def getHosters(self):
+ hosters = {'1fichier': [],#leave it there are so many possible addresses?
+ '1st-files': ['1st-files.com'],
+ '2shared': ['2shared.com'],
+ '4shared': ['4shared.com', '4shared-china.com'],
+ 'asfile': ['http://asfile.com/'],
+ 'bitshare': ['bitshare.com'],
+ 'brupload': ['brupload.net'],
+ 'crocko': ['crocko.com','easy-share.com'],
+ 'dailymotion': ['dailymotion.com'],
+ 'depfile': ['depfile.com'],
+ 'depositfiles': ['depositfiles.com', 'dfiles.eu'],
+ 'dizzcloud': ['dizzcloud.com'],
+ 'dl.dropbox': [],
+ 'extabit': ['extabit.com'],
+ 'extmatrix': ['extmatrix.com'],
+ 'facebook': [],
+ 'file4go': ['file4go.com'],
+ 'filecloud': ['filecloud.io','ifile.it','mihd.net'],
+ 'filefactory': ['filefactory.com'],
+ 'fileom': ['fileom.com'],
+ 'fileparadox': ['fileparadox.in'],
+ 'filepost': ['filepost.com', 'fp.io'],
+ 'filerio': ['filerio.in','filerio.com','filekeen.com'],
+ 'filesflash': ['filesflash.com'],
+ 'firedrive': ['firedrive.com', 'putlocker.com'],
+ 'flashx': [],
+ 'freakshare': ['freakshare.net', 'freakshare.com'],
+ 'gigasize': ['gigasize.com'],
+ 'hipfile': ['hipfile.com'],
+ 'junocloud': ['junocloud.me'],
+ 'letitbit': ['letitbit.net','shareflare.net'],
+ 'mediafire': ['mediafire.com'],
+ 'mega': ['mega.co.nz'],
+ 'megashares': ['megashares.com'],
+ 'metacafe': ['metacafe.com'],
+ 'netload': ['netload.in'],
+ 'oboom': ['oboom.com'],
+ 'rapidgator': ['rapidgator.net'],
+ 'rapidshare': ['rapidshare.com'],
+ 'rarefile': ['rarefile.net'],
+ 'ryushare': ['ryushare.com'],
+ 'sendspace': ['sendspace.com'],
+ 'turbobit': ['turbobit.net', 'unextfiles.com'],
+ 'uploadable': ['uploadable.ch'],
+ 'uploadbaz': ['uploadbaz.com'],
+ 'uploaded': ['uploaded.to', 'uploaded.net', 'ul.to'],
+ 'uploadhero': ['uploadhero.com'],
+ 'uploading': ['uploading.com'],
+ 'uptobox': ['uptobox.com'],
+ 'xvideos': ['xvideos.com'],
+ 'youtube': ['youtube.com']}
+
+ hoster_list = []
+
+ for item in hosters.itervalues():
+ hoster_list.extend(item)
+
+ return hoster_list
diff --git a/module/plugins/hoster/MegaRapidoNet.py b/module/plugins/hoster/MegaRapidoNet.py
new file mode 100644
index 000000000..1b0e4ffb6
--- /dev/null
+++ b/module/plugins/hoster/MegaRapidoNet.py
@@ -0,0 +1,53 @@
+# -*- coding: utf-8 -*-
+
+from random import randint
+
+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)
+ if(r > 0):
+ not_zero += 1
+ rand += str(r)
+
+ if not_zero > 0:
+ return rand
+ else:
+ return random_with_N_digits(n)
+
+
+class MegaRapidoNet(MultiHoster):
+ __name__ = "MegaRapidoNet"
+ __type__ = "hoster"
+ __version__ = "0.02"
+
+ __pattern__ = r'http://(?:www\.)?\w+\.megarapido\.net/\?file=\w+'
+
+ __description__ = """MegaRapido.net multi-hoster plugin"""
+ __license__ = "GPLv3"
+ __authors__ = [("Kagenoshin", "kagenoshin@gmx.ch")]
+
+
+ LINK_PREMIUM_PATTERN = r'<\s*?a[^>]*?title\s*?=\s*?["\'][^"\']*?download["\'][^>]*?href=["\']([^"\']*)'
+
+ ERROR_PATTERN = r'<\s*?div[^>]*?class\s*?=\s*?["\']?alert-message error[^>]*>([^<]*)'
+
+
+ def handlePremium(self, pyfile):
+ self.html = self.load("http://megarapido.net/gerar.php",
+ post={'rand' :random_with_N_digits(16),
+ 'urllist' : pyfile.url,
+ 'links' : pyfile.url,
+ 'exibir' : "normal",
+ 'usar' : "premium",
+ 'user' : self.account.getAccountInfo(self.user).get('sid', None),
+ 'autoreset': ""})
+
+ if "desloga e loga novamente para gerar seus links" in self.html.lower():
+ self.error("You have logged in at another place")
+
+ return super(MegaRapidoNet, self).handlePremium(pyfile)
diff --git a/module/plugins/internal/SimpleHoster.py b/module/plugins/internal/SimpleHoster.py
index 8a3381c53..a42947970 100644
--- a/module/plugins/internal/SimpleHoster.py
+++ b/module/plugins/internal/SimpleHoster.py
@@ -246,7 +246,7 @@ def secondsToMidnight(gmt=0):
class SimpleHoster(Hoster):
__name__ = "SimpleHoster"
__type__ = "hoster"
- __version__ = "1.29"
+ __version__ = "1.30"
__pattern__ = r'^unmatchable$'
__config__ = [("use_premium", "bool", "Use premium account if available", True)]
@@ -746,8 +746,12 @@ class SimpleHoster(Hoster):
def retryFree(self):
+ if not self.premium:
+ return
+ self.premium = False
self.account = None
self.req = self.core.requestFactory.getRequest(self.__name__)
+ self.retries = 0
raise Retry(_("Fallback to free download"))