summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Walter Purcaro <vuolter@users.noreply.github.com> 2015-03-25 12:08:31 +0100
committerGravatar Walter Purcaro <vuolter@users.noreply.github.com> 2015-03-25 12:08:31 +0100
commitaaa8b74cbc8cab1ccd314c820b1fff5999bd2fd9 (patch)
treedba6175b2d369574382d0685b1b41c7609756bed
parentNew plugin: MegaRapidoNet (diff)
downloadpyload-aaa8b74cbc8cab1ccd314c820b1fff5999bd2fd9.tar.xz
[MegaRapidoNet] Cleanup
-rw-r--r--module/plugins/accounts/MegaRapidoNet.py64
-rw-r--r--module/plugins/hooks/MegaRapidoNet.py178
-rw-r--r--module/plugins/hoster/MegaRapidoNet.py98
3 files changed, 143 insertions, 197 deletions
diff --git a/module/plugins/accounts/MegaRapidoNet.py b/module/plugins/accounts/MegaRapidoNet.py
index 55b52907c..80e066244 100644
--- a/module/plugins/accounts/MegaRapidoNet.py
+++ b/module/plugins/accounts/MegaRapidoNet.py
@@ -1,47 +1,57 @@
# -*- coding: utf-8 -*-
+
import re
-from time import mktime, strptime, time
+import time
from module.plugins.Account import Account
class MegaRapidoNet(Account):
- __name__ = "MegaRapidoNet"
- __version__ = "0.01"
- __type__ = "account"
- __description__ = """Megarapido.net account plugin"""
- __author_name__ = ("Kagenoshin")
- __author_mail__ = ("kagenoshin@gmx.ch")
+ __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*?["\']'
- VALIDUNTIL_PATTERN = re.compile(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', re.I)
- USER_ID_PATTERN= re.compile(r' <\s*?div[^>]*?class\s*?=\s*?["\']checkbox_compartilhar["\'][^>]*>[^<]*<\s*?input[^>]*?name\s*?=\s*?["\']usar["\'][^>]*>[^<]*<\s*?input[^>]*?name\s*?=\s*?["\']user["\'][^>]*?value\s*?=\s*?["\'](.*?)\s*?["\']', re.I)
def loadAccountInfo(self, user, req):
- response = req.load("http://megarapido.net/gerador", decode=True)
+ validuntil = None
+ trafficleft = None
+ premium = False
+
+ html = req.load("http://megarapido.net/gerador", decode=True)
- validuntil = self.VALIDUNTIL_PATTERN.search(response)
+ 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() + int(validuntil.group(1))*24*3600 + int(validuntil.group(2))*3600 + int(validuntil.group(3))*60 + int(validuntil.group(4))
+ 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}
- if validuntil:
- return {"trafficleft": -1, "validuntil": validuntil}
- else:
- return {"premium": False}
def login(self, user, data, req):
- self.loginname = user
- self.password = data["password"]
- post_data = {'login': self.loginname, 'senha': self.password}
req.load("http://megarapido.net/login")
- response = req.load("http://megarapido.net/painel_user/ajax/logar.php", post=post_data, decode=True)
- response = req.load("http://megarapido.net/gerador")
- if 'sair' not in response.lower():
+ 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:
- user_id = self.USER_ID_PATTERN.search(response)
- if user_id:
- user_id = user_id.group(1)
- self.setStorage("MegarapidoNet_userID", 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") \ No newline at end of file
+ self.fail("Couldn't find the user ID")
diff --git a/module/plugins/hooks/MegaRapidoNet.py b/module/plugins/hooks/MegaRapidoNet.py
index e59b94adf..33c74ae6f 100644
--- a/module/plugins/hooks/MegaRapidoNet.py
+++ b/module/plugins/hooks/MegaRapidoNet.py
@@ -1,117 +1,81 @@
# -*- coding: utf-8 -*-
-import re
-
-from module.network.RequestFactory import getURL
-from module.plugins.internal.MultiHoster import MultiHoster
-
-
-class MegaRapidoNet(MultiHoster):
- __name__ = "MegaRapidoNet"
- __version__ = "0.01"
- __type__ = "hook"
- __config__ = [("activated", "bool", "Activated", "False"),
- ("hosterListMode", "all;listed;unlisted", "Use for hosters (if supported)", "all"),
- ("hosterList", "str", "Hoster list (comma separated)", "")]
- __description__ = """Megarapido.net hook plugin"""
- __author_name__ = ("Kagenoshin")
- __author_mail__ = ("kagenoshin@gmx.ch")
- HOSTER_PATTERN = re.compile(r'align\s*?=\s*?["\']*?left.*?<\s*?strong\s*?>([^<]*?)<', re.I)
-
- def getHoster(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']
- }
+import re
- #check if the list is still valid
- #has to be added! self.check_for_new_or_removed_hosters(hosters)
+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']}
- #build list
hoster_list = []
for item in hosters.itervalues():
hoster_list.extend(item)
return hoster_list
-
- def check_for_new_or_removed_hosters(self, hosters):
- #get the old hosters
- old_hosters = hosters.keys()
-
- #load the current hosters from vipleech4u.com
- page = getURL('http://vipleech4u.com/hosts.php')
- current_hosters = self.HOSTER_PATTERN.findall(page)
- current_hosters = [x.lower() for x in current_hosters]
-
- #let's look for new hosters
- new_hosters = []
-
- for hoster in current_hosters:
- if not hoster in old_hosters:
- new_hosters.append(hoster)
-
- #let's look for removed hosters
- removed_hosters = []
-
- for hoster in old_hosters:
- if not hoster in current_hosters:
- removed_hosters.append(hoster)
-
- if new_hosters:
- self.logDebug('The following new hosters were found on vipleech4u.com: %s' % str(new_hosters))
-
- if removed_hosters:
- self.logDebug('The following hosters were removed from vipleech4u.com: %s' % str(removed_hosters))
-
- if not (new_hosters and removed_hosters):
- self.logDebug('The hoster list is still valid.')
diff --git a/module/plugins/hoster/MegaRapidoNet.py b/module/plugins/hoster/MegaRapidoNet.py
index 2978c72e1..1b0e4ffb6 100644
--- a/module/plugins/hoster/MegaRapidoNet.py
+++ b/module/plugins/hoster/MegaRapidoNet.py
@@ -1,10 +1,10 @@
# -*- coding: utf-8 -*-
-import re
-
-from module.plugins.Hoster import Hoster
from random import randint
+from module.plugins.internal.MultiHoster import MultiHoster
+
+
def random_with_N_digits(n):
rand = "0."
not_zero = 0
@@ -19,63 +19,35 @@ def random_with_N_digits(n):
else:
return random_with_N_digits(n)
-class MegaRapidoNet(Hoster):
- __name__ = "MegaRapidoNet"
- __version__ = "0.01"
- __type__ = "hoster"
- __pattern__ = r"http://(?:www\.)*?(?:[^\.]+)\.megarapido\.net/\?file="
- __description__ = """Megarapido.net hoster plugin"""
- __author_name__ = ("Kagenoshin")
- __author_mail__ = ("kagenoshin@gmx.ch")
-
- DOWNLOAD_LINK_PATTERN = re.compile(r'<\s*?a[^>]*?title\s*?=\s*?["\'][^"\']*?download["\'][^>]*?href=["\']([^"\']*)', re.I)
- ERROR_MESSAGE_PATTERN = re.compile(r'<\s*?div[^>]*?class\s*?=\s*?["\']?alert-message error[^>]*>([^<]*)',re.I)
-
- def setup(self):
- self.resumeDownload = self.multiDL = True
- self.chunkLimit = 1
-
- def process(self, pyfile):
- if not self.account:
- self.logError(_("Please enter your %s account or deactivate this plugin") % "vipleech4u.com")
- self.fail("No vipleech4u.com account provided")
-
- self.logDebug("Old URL: %s" % pyfile.url)
-
- new_url = pyfile.url
-
- #load userID
- user_id = self.getStorage("MegarapidoNet_userID")
-
- #upload the link which has to be loaded
- if not re.match(self.__pattern__, new_url):
- page = self.load("http://megarapido.net/gerar.php", post={"rand":random_with_N_digits(16), "urllist":new_url, "links":new_url, "exibir":"normal", "usar":"premium", "user":user_id, "autoreset":""})
- if "desloga e loga novamente para gerar seus links" in page.lower():
- self.fail("Restart pyload, because you have logged in at another place.")
-
- error_1 = self.ERROR_MESSAGE_PATTERN.search(page)
- if error_1:
- self.fail("%s" %error_1.group(1))
-
- download_link = self.DOWNLOAD_LINK_PATTERN.search(page)
- if download_link:
- download_link = download_link.group(1)
- else:
- self.fail("Couldn't find a download link.")
- else:
- download_link = new_url
-
- #tests (todo)
- if re.search(r'You have generated maximum links available to you today', page, re.I):
- self.fail('Daily limit reached.')
-
- self.setWait(5)
- self.wait()
- self.logDebug("Unrestricted URL: " + download_link)
-
- self.download(download_link, disposition=True)
-
- check = self.checkDownload({"bad": "<html"})
-
- if check == "bad":
- self.retry(24, 150, 'Bad file downloaded')
+
+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)