def platform(platform): if platform in PLATFORM_HANDLERS: if PLATFORM_HANDLERS[platform].is_authenticated(): return template( 'custom', app_list=PLATFORM_HANDLERS[platform].get_installed_content(), isInstalledOverview=True, platform=platform, platformName=PLATFORMS[platform]) else: return template('custom_login', platform=platform, platformName=PLATFORMS[platform]) shortcuts = sorted(load_shortcuts(platform), key=lambda s: s['name']) data = [] for shortcut in shortcuts: filename = None banner = None hidden = 'hidden' if 'hidden' in shortcut and shortcut['hidden'] else '' if 'banner' in shortcut: filename = os.path.basename(shortcut['banner']) banner = '/banners/{platform}/{filename}'.format( platform=platform, name=shortcut['name'], filename=filename) data.append({ 'hidden': hidden, 'filename': filename, 'banner': banner, 'name': shortcut['name'] }) return template('platform.tpl', shortcuts=data, platform=platform, platformName=PLATFORMS[platform])
def edit(platform, name): if platform in PLATFORM_HANDLERS: if not authenticate_platform(platform): return content_id = name content = PLATFORM_HANDLERS[platform].get_content(content_id) if content: return template('custom_edit', app=content, platform=platform, platformName=PLATFORMS[platform], name=content_id) else: abort(404, 'Content not found') shortcuts = load_shortcuts(platform) matches = [ e for e in shortcuts if e['name'] == name and e['cmd'] == platform ] shortcut = matches[0] return template('new.tpl', isEditing=True, platform=platform, platformName=PLATFORMS[platform], name=name, hidden=shortcut['hidden'])
def platform(platform): if platform == "flathub": return template('flathub', app_list=FLATHUB_HANDLER.get_installed_applications(), isInstalledOverview=True, platform=platform, platformName=PLATFORMS[platform]) shortcuts = sorted(load_shortcuts(platform), key=lambda s: s['name']) data = [] for shortcut in shortcuts: filename = None banner = None hidden = 'hidden' if 'hidden' in shortcut and shortcut['hidden'] else '' if 'banner' in shortcut: filename = os.path.basename(shortcut['banner']) banner = '/banners/{platform}/{filename}'.format( platform=platform, name=shortcut['name'], filename=filename) data.append({ 'hidden': hidden, 'filename': filename, 'banner': banner, 'name': shortcut['name'] }) return template('platform.tpl', shortcuts=data, platform=platform, platformName=PLATFORMS[platform])
def edit(platform, name): if platform == "flathub": application = FLATHUB_HANDLER.get_application(name) if application: return template( 'flathub_edit', app=application, platform="flathub", platformName="Flathub", name=name, ) else: abort(404, '{} not found in Flathub'.format(name)) shortcuts = load_shortcuts(platform) matches = [ e for e in shortcuts if e['name'] == name and e['cmd'] == platform ] shortcut = matches[0] return template('new.tpl', isEditing=True, platform=platform, platformName=PLATFORMS[platform], name=name, hidden=shortcut['hidden'])
def shortcut_update(): name = sanitize( request.forms.get('original_name')) # do not allow editing name platform = sanitize(request.forms.get('platform')) hidden = sanitize(request.forms.get('hidden')) banner = request.files.get('banner') content = request.files.get('content') shortcuts_file = "{shortcuts_dir}/steam-buddy.{platform}.yaml".format( shortcuts_dir=SHORTCUT_DIR, platform=platform) shortcuts = load_shortcuts(platform) matches = [ e for e in shortcuts if e['name'] == name and e['cmd'] == platform ] shortcut = matches[0] banner_path = upsert_file(BANNER_DIR, platform, name, banner) content_path = upsert_file(CONTENT_DIR, platform, name, content) shortcut['name'] = name shortcut['cmd'] = platform shortcut['hidden'] = hidden == 'on' if banner: shortcut['banner'] = banner_path if content: shortcut['dir'] = '"' + os.path.dirname(content_path) + '"' shortcut['params'] = '"' + os.path.basename(content_path) + '"' yaml.dump(shortcuts, open(shortcuts_file, 'w'), default_flow_style=False) redirect('/platforms/{platform}'.format(platform=platform))
def shortcut_create(): name = sanitize(request.forms.get('name')) platform = sanitize(request.forms.get('platform')) hidden = sanitize(request.forms.get('hidden')) banner_url = request.forms.get('banner-url') banner = request.forms.get('banner') content = request.forms.get('content') if not name or name.strip() == '': redirect('/platforms/{platform}/new'.format(platform=platform)) return name = name.strip() shortcuts_file = "{shortcuts_dir}/steam-buddy.{platform}.yaml".format( shortcuts_dir=SHORTCUT_DIR, platform=platform) shortcuts = load_shortcuts(platform) matches = [ e for e in shortcuts if e['name'] == name and e['cmd'] == platform ] if len(matches) > 0: return 'Shortcut already exists' banner_path = None if banner: (banner_src_path, banner_dst_name) = tmpfiles[banner] del tmpfiles[banner] banner_path = upsert_file(banner_src_path, BANNER_DIR, platform, name, banner_dst_name) elif banner_url: banner_path = os.path.join(BANNER_DIR, platform, "{}.png".format(name)) if not os.path.isdir(os.path.dirname(banner_path)): os.makedirs(os.path.dirname(banner_path)) download = requests.get(banner_url) with open(banner_path, "wb") as banner_file: banner_file.write(download.content) if content: (content_src_path, content_dst_name) = tmpfiles[content] del tmpfiles[content] content_path = upsert_file(content_src_path, CONTENT_DIR, platform, name, content_dst_name) shortcut = {} shortcut['name'] = name shortcut['cmd'] = platform shortcut['hidden'] = hidden == 'on' shortcut['tags'] = [PLATFORMS[platform]] if banner or banner_url: shortcut['banner'] = banner_path if content: shortcut['dir'] = '"' + os.path.dirname(content_path) + '"' shortcut['params'] = '"' + os.path.basename(content_path) + '"' shortcuts.append(shortcut) yaml.dump(shortcuts, open(shortcuts_file, 'w'), default_flow_style=False) redirect('/platforms/{platform}'.format(platform=platform))
def shortcut_update(): name = sanitize( request.forms.get('original_name')) # do not allow editing name platform = sanitize(request.forms.get('platform')) hidden = sanitize(request.forms.get('hidden')) banner_url = request.forms.get('banner-url') banner = request.forms.get('banner') content = request.forms.get('content') shortcuts_file = "{shortcuts_dir}/steam-buddy.{platform}.yaml".format( shortcuts_dir=SHORTCUT_DIR, platform=platform) shortcuts = load_shortcuts(platform) matches = [ e for e in shortcuts if e['name'] == name and e['cmd'] == platform ] shortcut = matches[0] banner_path = None if banner: (banner_src_path, banner_dst_name) = tmpfiles[banner] del tmpfiles[banner] banner_path = upsert_file(banner_src_path, BANNER_DIR, platform, name, banner_dst_name) elif banner_url: banner_path = os.path.join(BANNER_DIR, platform, "{}.png".format(name)) if not os.path.isdir(os.path.dirname(banner_path)): os.makedirs(os.path.dirname(banner_path)) download = requests.get(banner_url) with open(banner_path, "wb") as banner_file: banner_file.write(download.content) if content: (content_src_path, content_dst_name) = tmpfiles[content] del tmpfiles[content] content_path = upsert_file(content_src_path, CONTENT_DIR, platform, name, content_dst_name) shortcut['name'] = name shortcut['cmd'] = platform shortcut['hidden'] = hidden == 'on' if banner or banner_url: shortcut['banner'] = banner_path if content: shortcut['dir'] = '"' + os.path.dirname(content_path) + '"' shortcut['params'] = '"' + os.path.basename(content_path) + '"' yaml.dump(shortcuts, open(shortcuts_file, 'w'), default_flow_style=False) redirect('/platforms/{platform}'.format(platform=platform))
def uninstall(platform, content_id): content = PLATFORM_HANDLERS[platform].get_content(content_id) if not content: abort(404, 'Content not found') PLATFORM_HANDLERS[platform].uninstall_content(content_id) shortcuts = load_shortcuts(platform) for shortcut in shortcuts: if content.name == shortcut['name']: shortcuts.remove(shortcut) break shortcuts_file = "{shortcuts_dir}/steam-buddy.{platform}.yaml".format( shortcuts_dir=SHORTCUT_DIR, platform=platform) yaml.dump(shortcuts, open(shortcuts_file, 'w'), default_flow_style=False) redirect('/platforms/{platform}/edit/{name}'.format(platform=platform, name=content_id))
def platform_install(platform, content_id): content = PLATFORM_HANDLERS[platform].get_content(content_id) if not content: abort(404, 'Content not found') PLATFORM_HANDLERS[platform].install_content(content_id) shortcuts = load_shortcuts(platform) shortcut = PLATFORM_HANDLERS[platform].get_shortcut(content) shortcuts.append(shortcut) shortcuts_file = "{shortcuts_dir}/steam-buddy.{platform}.yaml".format( shortcuts_dir=SHORTCUT_DIR, platform=platform) yaml.dump(shortcuts, open(shortcuts_file, 'w'), default_flow_style=False) redirect('/platforms/{platform}/edit/{content_id}'.format( platform=platform, content_id=content_id))
def flathub_uninstall(flatpak_id): platform = "flathub" application = FLATHUB_HANDLER.get_application(flatpak_id) if not application: abort(404, '{} not found in Flathub'.format(flatpak_id)) application.uninstall() shortcuts = load_shortcuts(platform) for shortcut in shortcuts: if application.name == shortcut['name']: shortcuts.remove(shortcut) break shortcuts_file = "{shortcuts_dir}/steam-buddy.{platform}.yaml".format( shortcuts_dir=SHORTCUT_DIR, platform=platform) yaml.dump(shortcuts, open(shortcuts_file, 'w'), default_flow_style=False) redirect('/platforms/{platform}/edit/{name}'.format(platform=platform, name=flatpak_id))
def shortcut_delete(): name = sanitize(request.forms.get('name')) platform = sanitize(request.forms.get('platform')) shortcuts_file = "{shortcuts_dir}/steam-buddy.{platform}.yaml".format( shortcuts_dir=SHORTCUT_DIR, platform=platform) shortcuts = load_shortcuts(platform) matches = [ e for e in shortcuts if e['name'] == name and e['cmd'] == platform ] shortcut = matches[0] delete_file(CONTENT_DIR, platform, name) delete_file(BANNER_DIR, platform, name) shortcuts.remove(shortcut) yaml.dump(shortcuts, open(shortcuts_file, 'w'), default_flow_style=False) redirect('/platforms/{platform}'.format(platform=platform))
def shortcut_create(): name = sanitize(request.forms.get('name')) platform = sanitize(request.forms.get('platform')) hidden = sanitize(request.forms.get('hidden')) banner = request.files.get('banner') content = request.files.get('content') if not name or name.strip() == '': redirect('/platforms/{platform}/new'.format(platform=platform)) return name = name.strip() shortcuts_file = "{shortcuts_dir}/steam-buddy.{platform}.yaml".format( shortcuts_dir=SHORTCUT_DIR, platform=platform) shortcuts = load_shortcuts(platform) matches = [ e for e in shortcuts if e['name'] == name and e['cmd'] == platform ] if len(matches) > 0: return 'Shortcut already exists' banner_path = upsert_file(BANNER_DIR, platform, name, banner) content_path = upsert_file(CONTENT_DIR, platform, name, content) shortcut = {} shortcut['name'] = name shortcut['cmd'] = platform shortcut['hidden'] = hidden == 'on' shortcut['tags'] = [PLATFORMS[platform]] if banner: shortcut['banner'] = banner_path if content: shortcut['dir'] = '"' + os.path.dirname(content_path) + '"' shortcut['params'] = '"' + os.path.basename(content_path) + '"' shortcuts.append(shortcut) yaml.dump(shortcuts, open(shortcuts_file, 'w'), default_flow_style=False) redirect('/platforms/{platform}'.format(platform=platform))
def __get_all_content(self) -> list: content = [] installed = load_shortcuts('gog') installed_ids = [game['id'] for game in installed] text = subprocess.check_output(["wyvern", "ls", "--json"]) data = json.loads(text) games = sorted(data['games'], key=lambda g: g['ProductInfo']['title']) for game in games: info = dic(game['ProductInfo']) if not info.isGame: continue cid = str(info.id) img = 'https:{img}_product_tile_256_2x.png'.format(img=info.image) content.append(dic({ "content_id": cid, "summary": "", "name": info.title, "native": info.worksOn['Linux'], "installed_version": None, "available_version": None, "image_url": img, "installed": cid in installed_ids, 'operation' : None })) return content
def flathub_install(flatpak_id): platform = "flathub" application = FLATHUB_HANDLER.get_application(flatpak_id) if not application: abort(404, '{} not found in Flathub'.format(flatpak_id)) application.install() shortcuts = load_shortcuts(platform) shortcut = { 'name': application.name, 'hidden': False, 'banner': application.get_image(os.path.join(BANNER_DIR, platform)), 'params': application.flatpak_id, 'cmd': "flatpak run", 'tags': ["Flathub"], } shortcuts.append(shortcut) shortcuts_file = "{shortcuts_dir}/steam-buddy.{platform}.yaml".format( shortcuts_dir=SHORTCUT_DIR, platform=platform) yaml.dump(shortcuts, open(shortcuts_file, 'w'), default_flow_style=False) redirect('/platforms/{platform}/edit/{name}'.format(platform=platform, name=flatpak_id))