summaryrefslogtreecommitdiff
path: root/plugin.video.wakanim/resources/lib/wakanim.py
diff options
context:
space:
mode:
Diffstat (limited to 'plugin.video.wakanim/resources/lib/wakanim.py')
-rw-r--r--plugin.video.wakanim/resources/lib/wakanim.py124
1 files changed, 124 insertions, 0 deletions
diff --git a/plugin.video.wakanim/resources/lib/wakanim.py b/plugin.video.wakanim/resources/lib/wakanim.py
new file mode 100644
index 0000000..5ff9a05
--- /dev/null
+++ b/plugin.video.wakanim/resources/lib/wakanim.py
@@ -0,0 +1,124 @@
+# -*- coding: utf-8 -*-
+# Wakanim - Watch videos from the german anime platform Wakanim.tv on Kodi.
+# Copyright (C) 2017 MrKrabat
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero 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 Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+import sys
+
+import xbmc
+import xbmcgui
+import xbmcplugin
+
+import cmdargs
+import login
+import netapi
+import view
+
+
+def main():
+ """Main function for the addon
+ """
+ args = cmdargs.parse_args()
+
+ # check if account is set
+ username = args._addon.getSetting("wakanim_username")
+ password = args._addon.getSetting("wakanim_password")
+
+ # set country
+ args._country = args._addon.getSetting("country")
+ if args._country == "0":
+ args._country = "de"
+ elif args._country == "1":
+ args._country = "fr"
+ elif args._country == "2":
+ args._country = "sc"
+ else:
+ args._country = "de"
+
+ if not (username and password):
+ # open addon settings
+ args._addon.openSettings()
+ return False
+ else:
+ # login
+ success = login.login(username, password, args)
+ if success:
+ # list menue
+ xbmcplugin.setContent(int(sys.argv[1]), "tvshows")
+ check_mode(args)
+ else:
+ # login failed
+ xbmc.log("[PLUGIN] %s: Login failed" % args._addonname, xbmc.LOGERROR)
+ xbmcgui.Dialog().ok(args._addonname, args._addon.getLocalizedString(30040))
+ return False
+
+
+def check_mode(args):
+ """Run mode-specific functions
+ """
+ if hasattr(args, "mode"):
+ mode = args.mode
+ else:
+ # call from other plugin
+ mode = "videoplay"
+ args.name = "Video"
+ args.episode, args.rating, args.plot, args.year, args.icon = ("None",) * 5
+
+ if hasattr(args, "id"):
+ args.url = "/" + args._country + "/v2/catalogue/episode/" + args.id
+ elif hasattr(args, "url"):
+ args.url = args.url[22:]
+ else:
+ mode = None
+
+ if mode is None:
+ showMainMenue(args)
+ elif mode == "catalog":
+ netapi.showCatalog(args)
+ elif mode == "search":
+ netapi.searchAnime(args)
+ elif mode == "downloads":
+ netapi.myDownloads(args)
+ elif mode == "collection":
+ netapi.myCollection(args)
+ elif mode == "list_season":
+ netapi.listSeason(args)
+ elif mode == "list_episodes":
+ netapi.listEpisodes(args)
+ elif mode == "videoplay":
+ netapi.startplayback(args)
+ else:
+ # unkown mode
+ xbmc.log("[PLUGIN] %s: Failed in check_mode '%s'" % (args._addonname, str(mode)), xbmc.LOGERROR)
+ xbmcgui.Dialog().notification(args._addonname, args._addon.getLocalizedString(30041), xbmcgui.NOTIFICATION_ERROR)
+ showMainMenue(args)
+
+
+def showMainMenue(args):
+ """Show main menu
+ """
+ view.add_item(args,
+ {"title": args._addon.getLocalizedString(30020),
+ "mode": "catalog"})
+ view.add_item(args,
+ {"title": args._addon.getLocalizedString(30021),
+ "mode": "search"})
+ view.add_item(args,
+ {"title": args._addon.getLocalizedString(30022),
+ "mode": "downloads"})
+ view.add_item(args,
+ {"title": args._addon.getLocalizedString(30023),
+ "mode": "collection"})
+ view.endofdirectory()