Mixaill/awesome-gog-galaxy

Provide some info on the difference between Itch.io integrations

JanPokorny opened this issue ยท 7 comments

Now there are three of them! This may confuse new users. Maybe mark one as "recommended"? Paging @Ertego @tauqua @freakrho

At some point I'd love to be able to combine them, but right now in my understanding they are taking different approaches and have different sets of functionality. Unfortunately, itch has 4 (as far as I can tell) different ways of interfacing with your library all with different issues. I've done my best to understand how the other plugins work but please correct me if I made any mistakes.

My plugin uses Itch's web API v2. This allows it to work without a local app installed, reading directly from your account. It is capable of reading your entire library. However, APIv2 uses cookie-based authentication, which I'm struggling to get working, and doesn't necessarily work or work well for installation or launching, and I'll likely have to use a local installation setup like the Humble Bundle plugin which is not ideal given Itch does offer a proper launcher.

@Ertego's plugin interfaces with the Itch app directly. This means that the Itch app must be installed in order for it to work. His plugin currently only detects games you have installed locally through the Itch app. However, it is capable of launching games. I believe he has plans to enable displaying the whole library.

I'm least familiar with @freakrho's plugin and I can't get it to work on my setup, but from what I can tell of the code it looks like it has the ability to display the entire library. It uses Butler directly, which is the most theoretically complete way, and it looks like he's made a good amount of progress on that.

As for which plugin should be recommended, I honestly don't have a good answer. Ertego's doesn't display your whole library, mine is incredibly unstable, and I personally can't get freakrho's to run (although if someone else can and can confirm its functionality, it is the most theoretically complete right now so I would then recommend it). For now, I would recommend Ertego's due to the instability of the other two, but if we can resolve our stability issues then I'd recommend whichever manages to do that.

I do hope that at some point we can combine them into one plugin, since realistically it will need components of all three for maximum functionality.

I am also planning to take @freakrho's approach, so if it is working i'd say freakrhos approach is the best one

I asked one of the developers of the itch app for advice and he told me to use butler. There's some stuff that I couldn't get to work, like I couldn't use galaxy's browser to manage the captcha so I had to rely on the itch app's login. And I couldn't find out why the installation isn't working when it works outside of galaxy.

I don't have much time to work on this, I wanted to get it out so people could try it, I didn't realize there was a third version when I published it. If you want you can work on my repo, or check what you would need to apply to yours. I made the python-butler interface standalone so it could be used in other projects, maybe it will be of use to you https://gitlab.com/freakrho/python-butler-interface

So I think I've resolved the instability issues in my plugin. I haven't tested the other plugins recently (more on that in a min), but I'd say that right now mine is the most feature-complete of the three, displaying all owned products that are categorized as "Game". I'm planning on putting in more work now that I have time and integrating installation via Butler as the rest of you plan to, but I also think this may be a point where we should merge our work into one plugin, especially given what I came across in my troubleshooting.

That being: essentially, Galaxy gets messed up when switching between different plugins of the platform. In troubleshooting, I found that the Galaxy DB was still storing some info about a previous Itch plugin I had installed at one point and this was causing a number of errors, the most significant of which being that Galaxy could not store my UserID because those are stored by unique platform ID, and the plugin wasn't being run at startup (I don't know how that effected it, but when I modified the DB to remove the relics of the old plugin then this issue was fixed).

It seems like Galaxy has some issues when it comes to switching between plugins of the same platform, so to make things not break for users we should probably centralize on one plugin. Unless either of you think your plugin would be a better fit, I'd say we base off of mine.

Yes guys!!! Please. 2 of your plugin are very similar, one is the most stable without going offline, 2 shows library games (not just the installed ones)
It would be wonderful to have one plugin stable that shows library games and allow installation. (just games please, Itch.io has a lot of pdf and developer tools that would not fit in GOG Galaxy)
Thank you so much!! Keep the great work

Merging them is a great idea!

As the codebase of my plugin is a mess I'd also suggest basing off another one, preferably one that uses butler.

I think the typical approach for a plugin is to handle owned games through a web API so the client doesn't need to be installed, and to handle local games, installing, and launching via the local app (butler here) if installed. I've got the work with the web API set up and stable, and it looks like @freakrho has done a lot of work getting butler bindings set up, so essentially we'll probably end up merging the two of our works.

Since I have time to work on them right now I think I'll continue working on mine for the time being and hopefully match all the features of the others.