Skip to content

Commit

Permalink
Refactor: wip
Browse files Browse the repository at this point in the history
  • Loading branch information
enen92 committed Dec 1, 2020
1 parent d6832b8 commit a156f1a
Show file tree
Hide file tree
Showing 11 changed files with 355 additions and 284 deletions.
144 changes: 85 additions & 59 deletions cocktail.py

Large diffs are not rendered by default.

222 changes: 118 additions & 104 deletions interface.py

Large diffs are not rendered by default.

28 changes: 17 additions & 11 deletions resources/lib/common_cocktail.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,20 @@
import xbmc
import xbmcaddon
import xbmcvfs
import thecocktaildb
import os

addon = xbmcaddon.Addon(id='script.screensaver.cocktail')
addon_path = addon.getAddonInfo('path')
addon_userdata = xbmc.translatePath(addon.getAddonInfo('profile')).decode('utf-8')
addon_name = addon.getAddonInfo('name')
cocktailsdb_api = thecocktaildb.Api('1352')
favourite_drinks_folder = os.path.join(addon_userdata,'favourites')
from resources.lib import thecocktaildb

if not os.path.exists(addon_userdata): xbmcvfs.mkdir(addon_userdata)
if not os.path.exists(favourite_drinks_folder): xbmcvfs.mkdir(favourite_drinks_folder)
ADDON = xbmcaddon.Addon(id='script.screensaver.cocktail')
ADDON_PATH = ADDON.getAddonInfo('path')
ADDON_USERDATA = xbmc.translatePath(ADDON.getAddonInfo('profile')).decode('utf-8')
ADDON_NAME = ADDON.getAddonInfo('name')
FAVOURITE_DRINK_FOLDER = os.path.join(ADDON_USERDATA, 'favourites')
MEDIA_FOLDER = os.path.join(ADDON_PATH, "resources", "skins", "default", "media")
MENU_ITEMS_FOLDER = os.path.join(ADDON_PATH, "resources", "skins", "default", "media", "menuicons")
NOT_AVAILABLE_ICON = os.path.join(MENU_ITEMS_FOLDER, "notavailable.png")

COCKTAIL_API = thecocktaildb.Api('1352')

ACTION_CONTEXT_MENU = 117
ACTION_LEFT = 1
Expand All @@ -35,5 +36,10 @@
def removeNonAscii(s):
return "".join(filter(lambda x: ord(x)<128, s))

def translate(text):
return addon.getLocalizedString(text).encode('utf-8')

def init_folders():
if not os.path.exists(ADDON_USERDATA):
xbmcvfs.mkdir(ADDON_USERDATA)

if not os.path.exists(FAVOURITE_DRINK_FOLDER):
xbmcvfs.mkdir(FAVOURITE_DRINK_FOLDER)
44 changes: 24 additions & 20 deletions resources/lib/favourites.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,52 +10,56 @@
import os
import xbmc
import thecocktaildb
from common_cocktail import *
from common_cocktail import FAVOURITE_DRINK_FOLDER
from kodiutils import notification

def add_to_favourite_drinks(drink_name,drink_id,drink_image):
content = drink_name + '|' + str(drink_id) + '|' + drink_image
filename = os.path.join(favourite_drinks_folder,str(drink_id)+'.txt')
save(filename,content)
xbmc.executebuiltin("Notification(%s,%s,%i,%s)" % (translate(32000), translate(32022),1,os.path.join(addon_path,"icon.png")))
return
def add_to_favourite_drinks(drink_name, drink_id, drink_image):
content = "{}|{}|{}".format(drink_name, str(drink_id), drink_image)
filename = os.path.join(FAVOURITE_DRINK_FOLDER, str(drink_id) + '.txt')
save(filename, content)
notification(32022)


def remove_from_favourites(drink_id):
filename = os.path.join(favourite_drinks_folder,str(drink_id)+'.txt')
filename = os.path.join(FAVOURITE_DRINK_FOLDER, str(drink_id) + '.txt')
if os.path.exists(filename):
os.remove(filename)
xbmc.executebuiltin("Notification(%s,%s,%i,%s)" % (translate(32000), translate(32023),1,os.path.join(addon_path,"icon.png")))
notification(32023)
else:
xbmc.executebuiltin("Notification(%s,%s,%i,%s)" % (translate(32000), translate(32024),1,os.path.join(addon_path,"icon.png")))
return
notification(32024)


def has_favourites():
drinks = os.listdir(favourite_drinks_folder)
drinks = os.listdir(FAVOURITE_DRINK_FOLDER)
if drinks:
return True
else:
xbmc.executebuiltin("Notification(%s,%s,%i,%s)" % (translate(32000), translate(32026),1,os.path.join(addon_path,"icon.png")))
notification(32026)
return False


def is_favourite(drink_id):
filename = os.path.join(favourite_drinks_folder,str(drink_id) + '.txt')
if os.path.exists(filename): return True
else: return False
return os.path.exists(
os.path.join(
FAVOURITE_DRINK_FOLDER, str(drink_id) + '.txt'))


def get_favourites():
favourite_cocktails = []
drinks = os.listdir(favourite_drinks_folder)
drinks = os.listdir(FAVOURITE_DRINK_FOLDER)
if drinks:
for drink in drinks:
drink_file = os.path.join(favourite_drinks_folder,drink)
drink_file = os.path.join(FAVOURITE_DRINK_FOLDER, drink)
drink_info = readfile(drink_file).split('|')
drink_dict = { "idDrink" : drink_info[1], "strDrink" : drink_info[0], "strDrinkThumb": drink_info[2] }
favourite_cocktails.append(thecocktaildb.Cocktail_lite(drink_dict ))
drink_dict = {
"idDrink" : drink_info[1],
"strDrink" : drink_info[0],
"strDrinkThumb": drink_info[2]
}
favourite_cocktails.append(thecocktaildb.Cocktail_lite(drink_dict))
return favourite_cocktails


def save(filename,contents):
with open(filename, 'w') as fh:
fh.write(contents)
Expand Down
49 changes: 25 additions & 24 deletions resources/lib/ingredient_details.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,54 +7,55 @@
See LICENSE for more information.
'''

import xbmcaddon
import xbmcgui
import xbmc
import os
from resources.lib.common_cocktail import *
from resources.lib.common_cocktail import ADDON_PATH, COCKTAIL_API, ACTION_RETURN, ACTION_ESCAPE

#Window controls
ingredientlabel = 32609
ingredientthumb = 32610
ingredientdescription = 32611

# Window controls
INGREDIENT_LABEL = 32609
INGREDIENT_THUMB = 32610
INGREDIENT_DESCRIPTION = 32611

class Ingredientdetails(xbmcgui.WindowXMLDialog):

class Ingredientdetails(xbmcgui.WindowXMLDialog):

def __init__( self, *args, **kwargs ):
self.info = eval(args[3])
self.ingredient_title = self.info[0]
self.ingredient_thumb = self.info[1]
self.ingredient_description = self.info[2]
self.ingredient_title = kwargs['data']['name']
self.ingredient_thumb = kwargs['data']['thumb']
self.ingredient_description = kwargs['data']['description']


def onInit(self):
self.getControl(ingredientlabel).setLabel(self.ingredient_title)
self.getControl(ingredientthumb).setImage(self.ingredient_thumb)
self.setIngredientDescription()
self.getControl(INGREDIENT_LABEL).setLabel(self.ingredient_title)
self.getControl(INGREDIENT_THUMB).setImage(self.ingredient_thumb)
self._set_ingredient_description()


def setIngredientDescription(self):
description = cocktailsdb_api.Search().ingredient(self.ingredient_title)
def _set_ingredient_description(self):
description = COCKTAIL_API.Search().ingredient(self.ingredient_title)
if description:
self.getControl(ingredientdescription).setText(description)
self.getControl(INGREDIENT_DESCRIPTION).setText(description)
else:
self.getControl(ingredientdescription).setText(self.ingredient_description)
self.getControl(INGREDIENT_DESCRIPTION).setText(self.ingredient_description)


def onAction(self,action):
if action.getId() == ACTION_RETURN or action.getId() == ACTION_ESCAPE:
self.close()


def start(name,thumb,description):
argm = str([name,thumb,description])
def start(name, thumb, description):
argm = str([name, thumb, description])
ingrdts = Ingredientdetails(
'script-cocktail-ingredientdetails.xml',
addon_path,
ADDON_PATH,
'default',
argm,
'',
data = {
'name': name,
'thumb': thumb,
'description': description
}
)
ingrdts.doModal()
del ingrdts
44 changes: 44 additions & 0 deletions resources/lib/kodiutils.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
'''
Copyright (C) 2015-2020 enen92,Zag
This file is part of script.screensaver.cocktail
SPDX-License-Identifier: GPL-2.0-only
See LICENSE for more information.
'''

import xbmc
import xbmcaddon
import xbmcgui
from contextlib import contextmanager

ADDON = xbmcaddon.Addon(id='script.screensaver.cocktail')
ADDON_NAME = ADDON.getAddonInfo('name')
ADDON_ICON = ADDON.getAddonInfo('icon')


def translate(text):
return ADDON.getLocalizedString(text).encode('utf-8')


def log(message):
try:
xbmc.log("{}: {}".format(ADDON_NAME, message), level=xbmc.LOGDEBUG)
except UnicodeEncodeError:
xbmc.log("{}: {}".format(ADDON_NAME, message).encode(
'utf-8', 'ignore'), xbmc.LOGDEBUG)

def notification(message_idx):
xbmcgui.Dialog().notification(
translate(32000),
translate(message_idx),
icon = ADDON_ICON,
time = 1500
)

@contextmanager
def busy_dialog():
xbmc.executebuiltin('ActivateWindow(busydialognocancel)')
try:
yield
finally:
xbmc.executebuiltin('Dialog.Close(busydialognocancel)')
Loading

0 comments on commit a156f1a

Please sign in to comment.