コード例 #1
0
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])
コード例 #2
0
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'])
コード例 #3
0
ファイル: server.py プロジェクト: ShadowApex/steam-buddy
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])
コード例 #4
0
ファイル: server.py プロジェクト: ShadowApex/steam-buddy
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'])
コード例 #5
0
ファイル: server.py プロジェクト: ShadowApex/steam-buddy
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))
コード例 #6
0
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))
コード例 #7
0
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))
コード例 #8
0
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))
コード例 #9
0
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))
コード例 #10
0
ファイル: server.py プロジェクト: ShadowApex/steam-buddy
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))
コード例 #11
0
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))
コード例 #12
0
ファイル: server.py プロジェクト: ShadowApex/steam-buddy
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))
コード例 #13
0
ファイル: gog.py プロジェクト: null2264/steam-buddy
    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
コード例 #14
0
ファイル: server.py プロジェクト: ShadowApex/steam-buddy
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))