summaryrefslogtreecommitdiff
path: root/plugin.video.wakanim/resources/lib/wakanim.py
blob: 3c53fcbcb1a121f3ca2413b7219c30fad3b879ca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# -*- 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()

    # 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
    elif hasattr(args, "id"):
        # call from other plugin
        mode = "videoplay"
        args.url = "/" + args._country + "/v2/catalogue/episode/" + args.id
    elif hasattr(args, "id"):
        # call from other plugin
        mode = "videoplay"
        args.url = args.url[22:]
    else:
        mode = None

    if not mode:
        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)
    elif mode == "trailer":
        item = xbmcgui.ListItem(getattr(args, "title", "Title not provided"), path=args.url)
        xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, item)
    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()