It seems that you're using an outdated browser. Some things may not work as they should (or don't work at all).
We suggest you upgrade newer and better browser like: Chrome, Firefox, Internet Explorer or Opera

×
high rated
Hi,

I made a simple open-source downloader application for GOG called Gogg. It's a minimalistic command-line tool I developed to help people download games they own on GOG for offline play or archival purposes.

Gogg is written in Go and uses the GOG API.
It's available for different operating systems, including Linux and Windows.

Gogg is still a work in progress. Nonetheless, I thought it could be a good idea to share it with the community so others could try it and help improve it if they find it useful.

Please check Gogg's repository (github.com/habedi/gogg) for more information, installation instructions, and examples.

Happy gaming!
Post edited 3 days ago by Tiamat16
avatar
Tiamat16: Hi,

I made a simple open-source downloader application for GOG called Gogg. It's a minimalistic command-line tool I developed to help people download games they own on GOG for offline play or archival purposes.

Gogg is written in Go and uses the GOG API.
It's available for different operating systems, including Linux and Windows.

Gogg is still a work in progress. Nonetheless, I thought it could be a good idea to share it with the community so others could try it and help improve it if they find it useful.

Please check Gogg's repository (github.com/habedi/gogg) for more information, installation instructions, and examples.

Happy gaming!
I like this feature:
Export the list of owned games to a file

I have document of all my games listed but this will come in handle if I need to create new one. Thanks.
Post edited 3 days ago by Syphon72
A clickable link for lazy peeps! :p

https://github.com/habedi/gogg
I'm curious, what reason did you make this over LGOG, Lutris, and so on?
You must have Google Chrome or Chromium installed on your machine for the first-time authentication. So, make sure you have one of them installed.
Showstopper, will not use.
Post edited 3 days ago by dnovraD
avatar
dnovraD: I'm curious, what reason did you make this over LGOG, Lutris, and so on?

You must have Google Chrome or Chromium installed on your machine for the first-time authentication. So, make sure you have one of them installed.
avatar
dnovraD: Showstopper, will not use.
I made Gogg because I wanted to be able to download my games on Windows and Linux to play them offline and archive them. (I use Lutris on Linux.) Gogg theoretically can run on any OS. Additionally, I wanted the tool to have a simple and modular user interface compared to an alternative like LGOGDownloader.

Regarding the dependency on Google Chrome or Chromium, to log into GOG, you need something that can emulate the behaviour of a web browser. For example, LGOGDownloader uses Qt WebEngine, which is originally from the Chromium project (the parent project of Google Chrome) which is large depency on itself. In any case, you mainly need Google Chrome or Chromium for the first successful login because you can refresh the access token after that.
avatar
dnovraD: I'm curious, what reason did you make this over LGOG, Lutris, and so on?

Showstopper, will not use.
avatar
Tiamat16: I made Gogg because I wanted to be able to download my games on Windows and Linux to play them offline and archive them. (I use Lutris on Linux.) Gogg theoretically can run on any OS. Additionally, I wanted the tool to have a simple and modular user interface compared to an alternative like LGOGDownloader.

Regarding the dependency on Google Chrome or Chromium, to log into GOG, you need something that can emulate the behaviour of a web browser. For example, LGOGDownloader uses Qt WebEngine, which is originally from the Chromium project (the parent project of Google Chrome) which is large depency on itself. In any case, you mainly need Google Chrome or Chromium for the first successful login because you can refresh the access token after that.
firefox support now
Nice, thank you very much for your effort!
avatar
Tiamat16: Regarding the dependency on Google Chrome or Chromium, to log into GOG, you need something that can emulate the behaviour of a web browser. For example, LGOGDownloader uses Qt WebEngine, which is originally from the Chromium project (the parent project of Google Chrome) which is large depency on itself. In any case, you mainly need Google Chrome or Chromium for the first successful login because you can refresh the access token after that.
Why not Falkon, Firefox, Lynx, Links, Konquerer, or anything else that doesn't scream, "I couldn't figure out a native implementation so I threw it in Electron?"
avatar
Tiamat16: Hi, I made a simple open-source downloader application for GOG called Gogg. It's a minimalistic command-line tool I developed to help people download games they own on GOG for offline play or archival purposes.
Browsing through your code ...

I noticed that you directly store the user's login + pw in a local (SQLite?) database.
I consider that a security risk. I wouldn't want my GOG password floating around like that, be it either plain text oder mildly obfuscated. Storing the password is totally unnecessary once you have completed the login process and acquired an auth token.

(This is why I never publish anything open source. The scripts I quickly cobble together are throw-away and my own personal risk. But publishing code also means assuming responsibility. Well, good luck with your project.)
Post edited 2 days ago by g2222
avatar
Tiamat16: Hi, I made a simple open-source downloader application for GOG called Gogg. It's a minimalistic command-line tool I developed to help people download games they own on GOG for offline play or archival purposes.
avatar
g2222: Browsing through your code ...

I noticed that you directly store the user's login + pw in a local (SQLite?) database.
I consider that a security risk. I wouldn't want my GOG password floating around like that, be it either plain text oder mildly obfuscated. Storing the password is totally unnecessary once you have completed the login process and acquired an auth token.

(This is why I never publish anything open source. The scripts I quickly cobble together are throw-away and my own personal risk. But publishing code also means assuming responsibility. Well, good luck with your project.)
That's a great point. You're right. Storing the password is both a security risk and unnecessary. The password is only needed for first-time login; after that, you can refresh your access token. So, storing a username and password on disk is unnecessary.

I'll fix this problem in future versions of Gogg. A good thing about open-source projects is that an obvious problem like the one you brought up won't go unnoticed for long.
Goggo sounds better IMHO:)
Does this basically do the same thing as e.g. gogrepoc?
Post edited 2 days ago by timppu
avatar
Tiamat16: Regarding the dependency on Google Chrome or Chromium, to log into GOG, you need something that can emulate the behaviour of a web browser. For example, LGOGDownloader uses Qt WebEngine, which is originally from the Chromium project (the parent project of Google Chrome) which is large depency on itself. In any case, you mainly need Google Chrome or Chromium for the first successful login because you can refresh the access token after that.
That is only required when recaptcha blocks the normal login via libcurl on login form.
You can have the user login using whatever browser they want.
Just give them the authentication url to login and then ask the user to copy paste the url they land on after login completes and extract the necessary authentication code from that url to complete the login

You can see how I did it in lgogdownloader
Website::Login
Website::LoginGetAuthCode
Website::LoginGetAuthCodeBrowser
Post edited 2 days ago by Sude
avatar
Tiamat16: Regarding the dependency on Google Chrome or Chromium, to log into GOG, you need something that can emulate the behaviour of a web browser. For example, LGOGDownloader uses Qt WebEngine, which is originally from the Chromium project (the parent project of Google Chrome) which is large depency on itself. In any case, you mainly need Google Chrome or Chromium for the first successful login because you can refresh the access token after that.
avatar
Sude: That is only required when recaptcha blocks the normal login via libcurl on login form.
You can have the user login using whatever browser they want.
Just give them the authentication url to login and then ask the user to copy paste the url they land on after login completes and extract the necessary authentication code from that url to complete the login

You can see how I did it in lgogdownloader
Website::Login
Website::LoginGetAuthCode
Website::LoginGetAuthCodeBrowser
That's an interesting workflow for login. I might implement it. Thanks for that share.

BTW, very good code!
avatar
timppu: Does this basically do the same thing as e.g. gogrepoc?
And LGOGDownloader and gogcli.

We have at least 4 unofficial clients now. Yay choice.

Hopefully, GOG will some day take the hint and improve their api for the purpose of backing up your collection, starting with the login (that you need either to have an integrated browser or have your users jump through hoops to achieve that is a little mind bogging).

They don't need to do all the heavy lifting if they don't have the resources. Their community is happy to step in and fulfill their own needs, but gog could certainly do a better job at enabling us to do that.
Post edited 2 days ago by Magnitus