<%! #Code Here runs once when page is first rendered. Good place for import statements. import mimetypes import os import base64 from tinytag import TinyTag import io from kaithem.src import directories try: import vignette except: vignette= None %> <% __doc__= "#Python Code here runs every page load" if 'albumArt' in kwargs: sound = scenes.cues[kwargs['albumArt']].sound if not sound: return '' sound = module.resolve_sound(sound) if vignette: t = vignette.try_get_thumbnail(sound) if t: kaithem.web.serve_file(t) soundMeta = TinyTag.get(sound,image=True) t = soundMeta.get_image() if not t: kaithem.web.serve_file(os.path.join(directories.datadir, "static", "img", "ai_default_album_art.jpg")) kaithem.web.serve_file(io.BytesIO(t),name= kwargs['albumArt']+".jpg", contenttype="image/jpeg") if 'slideAlbumArt' in kwargs: sound = scenes.cues[kwargs['albumArt']].slide or scenes.cues[kwargs['albumArt']].sound if not sound: return '' sound = module.resolve_sound(sound) if vignette: t = vignette.try_get_thumbnail(sound) if t: kaithem.web.serve_file(t) soundMeta = TinyTag.get(sound,image=True) t = soundMeta.get_image() if not t: return "" kaithem.web.serve_file(io.BytesIO(t),name= kwargs['albumArt']+".jpg", contenttype="image/jpeg") else: if 'scene' in kwargs and scenes.scenes[kwargs['scene']].media_link.allowed_remote_media_url == kwargs['file']: kaithem.web.serve_file(kwargs['file'],name= os.path.basename(kwargs['file'])) elif 'scene' in kwargs and scenes.scenes[kwargs['scene']].cue.slide == kwargs['file']: kaithem.web.serve_file(scenes.scenes[kwargs['scene']].resolve_sound(kwargs['file']),name= os.path.basename(kwargs['file'])) elif 'scene' in kwargs and kwargs['file'] in scenes.scenes[kwargs['scene']].musicVisualizations: kaithem.web.serve_file(kwargs['file'],name= os.path.basename(kwargs['file'])) else: # Todo this should be a global api for i in scenes.scenes: x = i break f = scenes.scenes[x].resolve_sound(kwargs['file']) if kaithem.web.has_permission("view_admin_info"): for i in module.getSoundFolders(): if not i.endswith("/"): i=i+'/' if os.path.normpath(f).startswith(i): # If this is a cloud asset pack asset, get it. # Only do this under the chandler admin permission kaithem.assetpacks.ensure_file(f) kaithem.web.serve_file(f, name= "file."+f.split('.')[-1]) raise RuntimeError("Not allowed to access "+str(kwargs['file'])) %>