summaryrefslogtreecommitdiff
path: root/plugin.video.watchbox/resources/lib/watchbox.py
diff options
context:
space:
mode:
Diffstat (limited to 'plugin.video.watchbox/resources/lib/watchbox.py')
-rw-r--r--plugin.video.watchbox/resources/lib/watchbox.py140
1 files changed, 140 insertions, 0 deletions
diff --git a/plugin.video.watchbox/resources/lib/watchbox.py b/plugin.video.watchbox/resources/lib/watchbox.py
new file mode 100644
index 0000000..fb33cd8
--- /dev/null
+++ b/plugin.video.watchbox/resources/lib/watchbox.py
@@ -0,0 +1,140 @@
+# -*- coding: utf-8 -*-
+# Watchbox
+# 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()
+
+ # check if account is set
+ username = args._addon.getSetting("watchbox_username")
+ password = args._addon.getSetting("watchbox_password")
+
+ if not (username and password):
+ xbmcplugin.setContent(int(sys.argv[1]), "tvshows")
+ check_mode(args)
+ else:
+ # login
+ success = login.login(username, password, args)
+ if success:
+ # list menue
+ args._login = True
+ 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(30042))
+
+ xbmcplugin.setContent(int(sys.argv[1]), "tvshows")
+ check_mode(args)
+
+
+def check_mode(args):
+ """Run mode-specific functions
+ """
+ if hasattr(args, "mode"):
+ mode = args.mode
+ elif hasattr(args, "id"):
+ # call from other plugin
+ mode = "videoplay"
+ args.url = "https://www.watchbox.de/serien/test-" + args.id + "/"
+ elif hasattr(args, "url"):
+ # call from other plugin
+ mode = "videoplay"
+ args.url = args.url[23:]
+ else:
+ mode = None
+
+ if not mode:
+ showMainMenue(args)
+ elif mode == "popular":
+ netapi.genre_view(3, args)
+ elif mode == "new":
+ netapi.genre_view(4, args)
+ elif mode == "genres":
+ netapi.genres_show(args)
+ elif mode == "genre_list":
+ netapi.genre_list(args)
+ elif mode == "genre_all":
+ netapi.genre_view(0, args)
+ elif mode == "genre_movie":
+ netapi.genre_view(1, args)
+ elif mode == "genre_tvshows":
+ netapi.genre_view(2, args)
+ elif mode == "genre_new":
+ netapi.genre_view(5, args)
+ elif mode == "season_list":
+ netapi.season_list(args)
+ elif mode == "episode_list":
+ netapi.episode_list(args)
+ elif mode == "search":
+ netapi.search(args)
+ elif mode == "videoplay":
+ netapi.startplayback(args)
+ elif mode == "login" and not args._login:
+ # open addon settings
+ args._addon.openSettings()
+ return False
+ elif mode == "login" and args._login:
+ showMainMenue(args)
+ elif mode == "mylist" and args._login:
+ netapi.mylist(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
+ """
+ if args._login:
+ view.add_item(args,
+ {"title": args._addon.getLocalizedString(30028),
+ "mode": "mylist"})
+ else:
+ view.add_item(args,
+ {"title": args._addon.getLocalizedString(30029),
+ "mode": "login"})
+
+ view.add_item(args,
+ {"title": args._addon.getLocalizedString(30026),
+ "mode": "popular"})
+ view.add_item(args,
+ {"title": args._addon.getLocalizedString(30027),
+ "mode": "new"})
+ view.add_item(args,
+ {"title": args._addon.getLocalizedString(30020),
+ "mode": "genres"})
+ view.add_item(args,
+ {"title": args._addon.getLocalizedString(30021),
+ "mode": "search"})
+ view.endofdirectory()