summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Stefano <l.stickell@yahoo.it> 2014-03-20 14:51:10 +0100
committerGravatar Stefano <l.stickell@yahoo.it> 2014-04-21 17:06:48 +0200
commitbb8e9e85d4d8b6b4a83baceebbb50ffc45d623cc (patch)
tree5c8ff4e3411ee409537b9bdefd77898c37fd9a29
parentZippyshare: using (?i) instead of re.I to make it work even on Python < 2.7 (diff)
downloadpyload-bb8e9e85d4d8b6b4a83baceebbb50ffc45d623cc.tar.xz
Merge pull request #552 from flubshi/stable
Add multihost plugin for free-way.me (cherry picked from commit 2ca7c74a2b9f26aef3ffad78145ac3b7f5ed18db)
-rw-r--r--module/plugins/accounts/FreeWayMe.py67
-rw-r--r--module/plugins/hooks/FreeWayMe.py39
-rw-r--r--module/plugins/hoster/FreeWayMe.py48
3 files changed, 154 insertions, 0 deletions
diff --git a/module/plugins/accounts/FreeWayMe.py b/module/plugins/accounts/FreeWayMe.py
new file mode 100644
index 000000000..087b380d9
--- /dev/null
+++ b/module/plugins/accounts/FreeWayMe.py
@@ -0,0 +1,67 @@
+# -*- coding: utf-8 -*-
+
+"""
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License,
+ or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, see <http://www.gnu.org/licenses/>.
+
+ @author: Nicolas Giese
+"""
+
+from module.plugins.Account import Account
+from module.common.json_layer import json_loads
+
+
+class FreeWayMe(Account):
+ __name__ = "FreeWayMe"
+ __version__ = "0.11"
+ __type__ = "account"
+ __description__ = """FreeWayMe account plugin"""
+ __author_name__ = ("Nicolas Giese")
+ __author_mail__ = ("james@free-way.me")
+
+ def loadAccountInfo(self, user, req):
+ status = self.getAccountStatus(user, req)
+ if not status:
+ return False
+ self.logDebug(status)
+
+ account_info = {"validuntil": -1, "premium": False}
+ if status["premium"] == "Free":
+ account_info["trafficleft"] = int(status["guthaben"])*1024
+ elif status["premium"] == "Spender":
+ account_info["trafficleft"] = -1
+ elif status["premium"] == "Flatrate":
+ account_info = {"validuntil": int(status["Flatrate"]),
+ "trafficleft": -1,
+ "premium": True}
+
+ return account_info
+
+ def getpw(self, user):
+ return self.accounts[user]["password"]
+
+ def login(self, user, data, req):
+ status = self.getAccountStatus(user, req)
+
+ # Check if user and password are valid
+ if not status:
+ self.wrongPassword()
+
+ def getAccountStatus(self, user, req):
+ answer = req.load("https://www.free-way.me/ajax/jd.php",
+ get={"id": 4, "user": user, "pass": self.accounts[user]["password"]})
+ self.logDebug("login: %s" % answer)
+ if answer == "Invalid login":
+ self.wrongPassword()
+ return False
+ return json_loads(answer)
diff --git a/module/plugins/hooks/FreeWayMe.py b/module/plugins/hooks/FreeWayMe.py
new file mode 100644
index 000000000..30d76cb8e
--- /dev/null
+++ b/module/plugins/hooks/FreeWayMe.py
@@ -0,0 +1,39 @@
+# -*- coding: utf-8 -*-
+
+"""
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License,
+ or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, see <http://www.gnu.org/licenses/>.
+
+ @author: Nicolas Giese
+"""
+
+from module.network.RequestFactory import getURL
+from module.plugins.internal.MultiHoster import MultiHoster
+
+class FreeWayMe(MultiHoster):
+ __name__ = "FreeWayMe"
+ __version__ = "0.11"
+ __type__ = "hook"
+ __description__ = """FreeWayMe hook plugin"""
+ __config__ = [("activated", "bool", "Activated", "False"),
+ ("hosterListMode", "all;listed;unlisted", "Use for hosters (if supported):", "all"),
+ ("hosterList", "str", "Hoster list (comma separated)", ""),
+ ("unloadFailing", "bool", "Revert to stanard download if download fails", "False"),
+ ("interval", "int", "Reload interval in hours (0 to disable)", "24")]
+ __author_name__ = ("Nicolas Giese")
+ __author_mail__ = ("james@free-way.me")
+
+ def getHoster(self):
+ hostis = getURL("https://www.free-way.me/ajax/jd.php", get={"id": 3}).replace("\"", "").strip()
+ self.logDebug("hosters: %s" % hostis)
+ return [x.strip() for x in hostis.split(",") if x.strip()]
diff --git a/module/plugins/hoster/FreeWayMe.py b/module/plugins/hoster/FreeWayMe.py
new file mode 100644
index 000000000..5439c10c1
--- /dev/null
+++ b/module/plugins/hoster/FreeWayMe.py
@@ -0,0 +1,48 @@
+# -*- coding: utf-8 -*-
+
+"""
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License,
+ or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, see <http://www.gnu.org/licenses/>.
+
+ @author: Nicolas Giese
+"""
+
+from module.plugins.Hoster import Hoster
+
+class FreeWayMe(Hoster):
+ __name__ = "FreeWayMe"
+ __version__ = "0.11"
+ __type__ = "hoster"
+ __pattern__ = r"https://free-way.me/.*"
+ __description__ = """FreeWayMe hoster plugin"""
+ __author_name__ = ("Nicolas Giese")
+ __author_mail__ = ("james@free-way.me")
+
+ def setup(self):
+ self.resumeDownload = False
+ self.chunkLimit = 1
+ self.multiDL = self.premium
+
+ def process(self, pyfile):
+ if not self.account:
+ self.logError(_("Please enter your %s account or deactivate this plugin") % "FreeWayMe")
+ self.fail("No FreeWay account provided")
+
+ self.logDebug("Old URL: %s" % pyfile.url)
+
+ (user, data) = self.account.selectAccount()
+
+ self.download(
+ "https://www.free-way.me/load.php",
+ get={"multiget": 7, "url": pyfile.url, "user": user, "pw": self.account.getpw(user), "json": ""},
+ disposition=True)