Git Product home page Git Product logo

galaxy-integrations-python-api's People

Contributors

apawlowskij avatar friendsofgalaxy avatar gog-piotrmarzec avatar gog-pkierski avatar goggalaxy avatar ledenis avatar mbanczerowski avatar mezzode avatar mgrzymski avatar mixaill avatar mmoderau avatar rbierbasz-gog avatar rob006 avatar stevoisiak avatar superusercode avatar unclegoogle avatar vadim-su avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

galaxy-integrations-python-api's Issues

Support for Playstation 3 on the Platforms list

Currently, Playstation 3 is missing from the platform list, which includes most other Sony platforms (PSX, PS2, PSP, PSV, and additionally there is PSN supporting PS4 games).

I would like to please request that it be considered to be added to the platforms list.

I am interested in creating an integration for this platform, even if only for my own use, but I cannot unless it is on the Platforms list.

Library Update

I wish it was possible to force an update on the library without having to remove the account. I have over 5 games on Uplay, but only one is listed

Add support for "launching" plugins

For any given game and platform, there are multiple ways of launching it. For example, a Steam game might be installed and launched through all these means:

  • Local Steam client (the regular way)
  • Locally installed Wine emulator
  • Remotely played via Steam Link
  • Streamed from the cloud through services like Vortex or GeForce NOW

All these ways of launching the game are all backed by the same library, but each has a different availability or platform support, and obviously a different way of running the game.

Currently the GOG Galaxy API only allows for each plugin to implement running a game in a single way. However, allowing access to playing games in an alternative way would be desirable (or the only way to play them - e.g. a Windows game on a Mac computer). This could also allow an emulated game to be launched through a number of different emulators a user might have installed.

Therefore, I propose that the plugins be split in two: a "library" plugin which would check which games you owned, and retrieve stats; and a "launcher" plugin which would implement one of the ways of launching the game (also checking if it's possible).

This way, two possibilities become available:

  • A single plugin could offer a single "library" plugin and multiple "launcher" plugins
  • Each plugin only offers a single "library" and "launcher" plugins, but the user has the possibility of adding more independent "launcher" plugins for a given library.

This is indeed a complex subject UX-wise, but it definitely would be an advanced feature that only people familiar with these topics would seek out; so IMO it's allowed to be a bit obscure.

The current way the API is structured, multiple plugins providing the same platform would have to be installed, adding confusion, duplication of code and having to log in to the same website multiple times. I'm not even sure if the client allows loading multiple plugins for the same platform id, or how it deals with them.

This would be quite an elaborate architecture change probably, but just wanted to pitch it.

Thanks for the awesome app!

Support for multiple accounts of platform, say PSN

I have 3 PlayStation Network account in different regions, e.g. US and Japan. Currently I can only link one of my PSN accounts. It would be great if all my PSN accounts can be linked together.

Thank you

Received unknown notification: abort_authentication

Integration SDK does not handle abort_authentication request from the GOG Galaxy 2.0.

Reproduce steps:

  • Click on connect in GOG Galaxy
  • Close authorization window
  • You will find something like this in the logs
2019-07-05 01:43:38,091 - root - DEBUG - Received 61 bytes of data
2019-07-05 01:43:38,091 - root - ERROR - Received unknown notification: abort_authentication
2019-07-05 01:43:38,099 - root - DEBUG - Received 58 bytes of data

importing friends recommendations list (Steam username leak)

If possible, please do not show the usernames on steam through the recommendation list. I can see that one of my friends in the recommendation list shows his full username he uses to login instead of his nickname. Please use the steam nickname only that they have at the time instead, my steam login username is my first and last name from my own stupidity from when i was 14--and as steam never ever allows us to change usernames, this is really bad news for people who want to keep their private login username well... private. This means if you have many users using gog galaxy and connect steam, your friends on steam will be able to see your login username through the recommendation tab on gog galaxy, which could contain personal information such as people's email addresses if they created their steam account in 2003/2004, or their first and last name like me.

Please think about it, thank you.

Steam controller integration

I have steam controller and I want run games from other platform with it.
System don't recognize steam controller as controller by default, it require run game via steam.
There are some "hacks",for example, GloSC and other, but they are not enought convinient to use.
It would be cool to have ability somehow intergretate it to gog galaxy.

I don't talk about full intergartion of some solution to galaxy but it would be good have some integration points. For example, game pre-run command (separetly for every games/platform) in game settings or via plugin.

Specify a license

Is there a publicly declared license for this library?

The README includes a brief legal notice about developers requiring all rights to create integrations, but a missing license means that custom integrations might not have permission to modify or redistribute this Python library.

Open internal browser method

Hi,

please add a method to open internal browser.

async def open_internal_browser(self, url, cookies=None, js=None)

For humblebundle plugin this would be useful to open keys page for logged-in user where you can redeem your games for other platforms like Steam. hb issue

Furthermore, this will allow to avoid plugin authors to code its owned GUI's (hb issue), and even run webrowser games (?)

What are the hotkeys, if any?

Just a quick question, about hotkeys for typical operations like:

  • back (next)
  • switch between bookmarks
  • look for a game - it would be quite useful on the main GOG page of the store, where there is no "look for a game" - button

Feature: custom plugin bookmarks / extend license types

It would be nice to have ability to manage default bookmarks made by integrations on connection time. Currently there is one bookmark made by default with the platform name and all games returned by "get_owned_games" method

In humblebundle plugin I would create 3 bookmarks for:

  • keys (steam/uplay ect.)
  • humble bundle drm-free library
  • trove games (monthly subscription games)

The problem is I have no tools to mark duplicated games - its origin or type. I can perform deduplication on plugin side based on priority list defined in user config file, but it is workaround for the actual problem.

Alternatively, Galaxy should add an additional filter for "license" type.

BTW I feel there is lack of LicenseType indicating subscription (it is becoming more and more popular along different platforms (like Uplay)).

Then hb integration will return games with different licences:

  • SinglePurchase (standard bundles, store purchases)
  • Subscription (trove games)
  • Free (free games from hb store - they occurs sometimes)
  • OtherLicense (3rd party game keys)

API for adding tags for the game

Since it is possible to set tags for the games in the Galaxy Client, maybe it should be possible for the API integrations to set them as well? It may help 3rd party tools to organize games by categories/ratings and so on.

I don't find it in the docs for now, so here's my proposal.

Add download percentage to LocalGameState

It would be nice if the LocalGameState object supported an intermediante Installing state with a download percentage, which could be presented in the GOG client.

This could make handling the state as a bitset a bit more complicated, though.

multi-accounting: hangs at Starting... instead of error message

Steps to reproduce:
0. GOG Galaxy 2.0 with Steam API integration downloaded is required, any Steam account should be bound through it. Steam installed, logged in with bound account + one more account at least once, shut down.

  1. Clone Steam API integration from
    C:\Users[username]\AppData\Local\GOG.com\Galaxy\plugins\installed\steam_ca27391f-2675-49b1-92c0-896d43afa4f8
    to
    C:\Users[username]\AppData\Local\GOG.com\Galaxy\plugins\installed\steam2
  2. Clean pycache folders up from it
  3. In
    C:\Users[username]\AppData\Local\GOG.com\Galaxy\plugins\installed\steam2\manifest.json
    change guid to any other valid value
  4. Run Galaxy 2.0
  5. Try to add a new Integration
  6. At Community Integrations - Manually Added, in Steam row hit Connect

ER
assuming that multiaccounting is a no-go currently, an error message, at least

AR
hangup with Starting... prompt
Logs:
https://pastebin.com/jK9ZVCHN
(token value scrapped)

Add support for selecting game language

It would be nice if GOG galaxy 2.0 would support game localization control.

Proposed changes in API:

  • LocalGame

    • Add field local_game_language: str
  • Game

    • Change game_title:str to game_title: Dict[str,str]
    • Add field game_languages: List[str]
  • Plugin

    • Add function set_game_language(self, game_id : str, language_code: str)
    • Change async def install_game(self, game_id: str): to async def install_game(self, game_id: str, language_code: str = None)

language_code should be ISO 3166 Alpha-2 (en, be, uk, pl) or BCP-47 (pt_BR)

Access to gamesdb.gog.com

According to logs, GOG tries to lookup additional game info from https://gamesdb.gog.com:443/platforms/<PLATFORM_ID>/external_releases/<GAME_ID>

Is there any way to:

  • disable access to gamesdb and provide JSON with info by integration
  • or add information to Games DB?

Support for multiple launchers

There's a few other launchers that I feel that should also be included other than Steam, Epic, Uplay, Origin and the consoles (Xbox and Playstation).

I'm suggesting the Blizzard app, the Microsoft Xbox hub on PC, the Bethesda launcher and Twitch.

It'd be great to have them listed to keep track of.

More information about permitted game_ids in the documentation

I would like it if the restrictions on what is allowed for a game_id (for example, length, any disallowed characters) could be described in the API documentation.

While trying to add some PlayStation games, I found that one was causing problems (it was added to my Library, but cannot be changed or linked to a game), because it has a "/" character in the serial, which is what I am using for the game_ids.

A staff member confirmed that it is the "/" character that is the problem.

Add download manager

Some games (e.g. Humble Trove) can be downloaded from a browser without a launcher.

Currently, some plugins are just opening a web browser with the download link, but it would be much better if the galaxy.http module provided some high-level methods to download files, with the ability to show the download progress in the client.

Plugin data conflicts

All data the plugin is sending to Galaxy is shared between all user devices. However there is no way for plugins to share data as well, neither directly via some kind of cloud storage (not-local persistent_cache), nor through the Galaxy itself.

In case the plugin have ability to modify game list via config, and local settings differs on different devices, there is a race condition for Galaxy backend.

Example

  • Computer A reports 10 games
  • Computer B reports 20 games

When get_owned_games call on A and then the same on B, then user on computer A will see sum of A nad B games. When user on A tries run one of those additional games from B, the plugin probably won't recognize the provided game_id and will crash.
Things get even worse when the plugin sends notifications: remove_game and add_game. Then two plugin are "fighting" by adding and removing games. For example, when user on A change config to show not 10 games but only 2, those lacking games will disappear on computer B, (which may be running idle let say in an another town). In next 30 min. Galaxy on B asks for owned_games and sum of games reported from A and B will be back on both computers.

Affected:

All plugins that have its own config that modifies data also shared in Galaxy cloud storage. Most probable use-case is list of user owned games. Currently all emulator plugins and humble bundle plugin. And of course, user running plugin instances simultaneously on different devices (which is one of the core concept for Galaxy data syncing I suppose).

Possible solutions

  • The one idea to solve this problem is add a method to store data in cloud storage. This moves effort to plugin developer.

  • The alternative is to make owned games "local". But i suppose it's not easy to do and will lead to another problems.

  • Yet another solution I can think of is special "locally hidden" state of game. Such game cannot be installed because local instance of the plugin doesn't report it. It will be similar to "hide game" feature, but locally aplicated [and only by plugins] (new API method).

  • The last idea depends totally on Galaxy side, it is rather a workaround. Discourage plugins for its own configs by differentiate between game types. And let users filter what they see: free games, subscriptions games, and preferebly plugin owned (named) type of game/license that will be visible on the game view. (see #55 )

  • ?


Edit. Pardon for creating issue on integrations API side, not for Galaxy itself, but I wanted to warn other plugin creators.

Support different format for Game covers

Most game covers are a tall rectangle shape, but some platforms, like Nintendo DS use a square shaped cover,

however, GOG Galaxy 2.0 display a rectangular cover for every platforms right now, this is bad because Cover art were designed for the platform format and thus, doesn't look right in another format.

push_cache overwrites credentials in database

Reproduction:

  1. connect integration
  2. _initialize_cache is called -> persistent_cache is w/o credentials
  3. store_credentials notification is called -> Galaxy will put in integration db
  4. push_cache() dumps local cache removing credentials

Galaxy should treat cache and stored_credentials separately.

My GOG plugin doesnt show up

Hello im trying to integrate my plugin to gog using platforms.generic but its not showing up i even restarted client and clicked on refresh integrations and also is the client supposed to run the plugin.py script or i need to manually run it? if i manually run i get an error like this.
image
and also this is my manifest.json and code.
image
image
image
Thanks for reading. please try to help me

BYOND support

www.byond.com
A sort of launcher for embedded games, one of which is infamous Space Station 13 (and its forks (!) ).

Add support for DLC management

At the moment there is no possibility to manage the DLC in the integrations.

From the integration side, it seems, it is necessary to add an additional handler to handle the modified game settings.


Proposed API changes:

  • LocalGame
    • add field dlcs: Optional[List[Dlc]]
  • Plugin
    • add handler update_game_configuration(game : LocalGame) -> bool

Overlaying source icon in list of games

It might be useful to overlay the source icon on each game (in a search for example), in order to cater for games with multiple copies across different platforms.

Add support for game multi instancing

In Wargaming Game Center application ID consist of 3 parts:

  • application type
  • realm code
  • branch

So, for example, WOT.EU.PRODUCTION means that the game is the release version of World of Tanks for European region.

The other problem is that there is possible to have several WOT.EU.PRODUCTION games.

Currently, there is no way to set it up correctly in GOG galaxy 2.0.

I propose:

  • to introduce game properties which can be changed in the GOG interface
  • introduce field game_instance_id for LocalGame to earn possibility to have several versions of one game

Proposed API changes:

  • PropertyDescription: new class
    • property_id: str
    • property_name: Dict[str,str]
    • property_description: Dict[str,str]
    • property_values: Dict[str, Dict[str,str]]
    • is_editable: bool
  • LocalGame
    • add field game_instance_id: str
    • add field local_properties: List[str,str]
  • Game
    • add field properties: List[PropertyDescription]
  • Plugin
    • add function for overriding async def set_game_property(app_id : str, property_name: str, property_value: str)
    • change function launch_game(self, game_id: str): to launch_game(self, game_id: str, game_instance_id: str = None):
    • change function install_game(self, game_id: str): to install_game(self, game_id: str, properties: Dict[str,str] = None):
    • change function uninstall_game(self, game_id: str): to install_game(self, game_id: str, game_instance_id: str = None):

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.