From bb8e9e85d4d8b6b4a83baceebbb50ffc45d623cc Mon Sep 17 00:00:00 2001 From: Stefano Date: Thu, 20 Mar 2014 14:51:10 +0100 Subject: Merge pull request #552 from flubshi/stable Add multihost plugin for free-way.me (cherry picked from commit 2ca7c74a2b9f26aef3ffad78145ac3b7f5ed18db) --- module/plugins/accounts/FreeWayMe.py | 67 ++++++++++++++++++++++++++++++++++++ module/plugins/hooks/FreeWayMe.py | 39 +++++++++++++++++++++ module/plugins/hoster/FreeWayMe.py | 48 ++++++++++++++++++++++++++ 3 files changed, 154 insertions(+) create mode 100644 module/plugins/accounts/FreeWayMe.py create mode 100644 module/plugins/hooks/FreeWayMe.py create mode 100644 module/plugins/hoster/FreeWayMe.py (limited to 'module') 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 . + + @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 . + + @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 . + + @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) -- cgit v1.2.3