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

×
GOGcli GUI v1.7 has been released.

Download - https://github.com/Twombs/GOGcli-GUI/releases/tag/v1.7

Further Information - https://github.com/Twombs/GOGcli-GUI

Overlooked Feature Update.

From v1.7 onward, CDKeys are detected during the adding or replacement of manifest entries, and stored in a 'CDkeys.ini' file.

A CDKey entry is a serial code or redeem link etc.

The main GUI has had the 'GAME DETAILS' button shrunk to just 'DETAILS', and to its left is a new 'KEY' label and field.
If a game is noted as having a CDKey entry, the 'KEY' input field will show '1'.

Screenshot - gogcli_main_11.png

To see the CDKey value, click the 'DETAILS' button. This shows you the key and allows copying it to the clipboard, or just continuing on with the usual (previous default) 'Get Game Details from GOG' process.

Screenshot - Tutor_45.png

I've added a once off CDKey check to the 'Check & Fix The Manifest' right-click 'Games' list menu option process. This checks for CDKeys in your manifest, for entries you have added, prior to using this version (v1.7) of GOGcli GUI. You can only use the CDKey check once, without then needing to modify a value in the 'Settings.ini' file. You should only need to use it the once.

Screenshot - Tutor_44.png

NOTES
I noticed that some CDKey values have special character codes in them. i.e. \u003cspan\u003e
I have dealt with them, either stripping them or replacing with a space or a carriage return.
They are not straight forward, and you can have even crazier ones like so - \u003c/span\u003e\u003cspan\u003e
It is likely I haven't catered for all possibilities, so if you come across any that haven't been converted by my code, please let me know.
The game Prison Architect had every character in its serial code separated by '\u0000'.
No doubt the result of GOG employees using a WYSIWYG editor, which adds unnecessary crap.

P.S. By the way, the DETAILS button can retrieve some game detail from GOG, and for a game that has a CDKey, you will see that listed in the result, so you could manually copy from that text file as well.
Post edited March 29, 2021 by Timboli
avatar
Timboli: GOGcli GUI v1.7 has been released.
Dam, you keep coming up with features I didn't know I wanted/needed! Nice work.
avatar
TerriblePurpose: Dam, you keep coming up with features I didn't know I wanted/needed! Nice work.
Thanks. Sometimes it almost seems to evolve on its own ... especially when I decide to take a break. LOL
Another spontaneous update happened.

GOGcli GUI v1.8 has been released.

Download - https://github.com/Twombs/GOGcli-GUI/releases/tag/v1.8

Further Information - https://github.com/Twombs/GOGcli-GUI

New Feature Update & Some Changes.

From v1.8 onward, DLCs are detected during the adding or replacement of manifest entries, and stored in a 'DLCs.ini' file.

The main GUI has had the 'DETAILS' button shrunk again and 'DETAILS' text is a smaller font size, to accommodate the 'KEY' field being swapped with the 'DLC' field. The 'DLC' field is wider now to show 2 digits if that is the case.

Screenshot - gogcli_main_12.png

If a game is noted as having a DLC entry, the 'DLC' input field will show the count. NOTE - You may need to divide that count by the count of OS for the game, to get the true number of DLCs.

Added a once off DLC check to the 'Check & Fix The Manifest' right-click 'Games' list menu option process. This checks for DLCs in your manifest, for entries you have added, prior to using this version (v1.8) of GOGcli GUI. You can only use the DLC check once, without then needing to modify a value in the 'Settings.ini' file. You should only need to use it the once.

Screenshot - Tutor_41.png

Screenshot - Tutor_46.png

To see the DLCs, click the 'DETAILS' button. If shown a CDkey, then just click YES to continue and 'Get Game Details from GOG'. Either that or investigate the manifest ... or the download list window.

The 'CDkeys.ini' and 'DLCs.ini' files have been added to the backup regime, pairing with the manifest backup ... when that occurs, they occur. I'd overlooked doing this for the 'CDkeys.ini' file last update.

NOTES
As some may have noted with earlier versions of the GUI, nothing other than '0' ever showed in the DLC field. This is down to GOG not having anything to show in the query that produces that value. On waking today, it occurred to me I could do a similar thing with DLCs that I did with CDKeys, and this update has the result. If there is ever a value returned in that GOG query, then that over-rides what my GUI created, and it will be shown instead.

Please note, that I did not try to determine with my code, whether a DLC was a Windows or Linux etc DLC. It just gets the total count of those listed. If you see 3 OS listed for a game which has DLCs, then it is likely you need to divide the DLC count for that game by 3, to get the true DLC count. It would have also been a bugger to display multiple counts in the limited GUI window space.

I had to relocate the DLC field from where it was, above the DETAILS button, to accommodate where the DLC count was 2 digits. There was more flexibility with width for the input field, where the CDKey field was (just), so I just swapped the two fields, and gave the DETAILS button a smaller font size.
Post edited March 30, 2021 by Timboli
Just a notification for those who have already downloaded their GOG library games, and used a method other than Galaxy or the old GOG Downloader, or even gogrepo.py and gogcli.exe etc. Something that didn't verify your downloads, for example, your browser or Free Download Manager 5 etc. Talking about using an MD5 (checksum) and Zip file checks.

If you are now using one of my GUIs, and even if you aren't you can still take advantage of this, then you could use my GOGPlus Download Checker program to verify those older downloads. You can also use it to verify game files gotten from elsewhere. And of course, you can continue to use it, if you just want to continue using your browser etc to download your game files.

https://www.gog.com/forum/general/gogplus_download_checker

Be advised though, this is a much deeper MD5 check than Galaxy or the old GOG Downloader or gogrepo.py or gogcli.exe etc perform. From what I recall, it is similar to the check that the GOG installer does when you install a game. This deeper check can take quite a while, and not only checks the integrity of your download (if it downloaded okay), but internal integrity as well (was it built okay).

Anyway, GOGPlus Download Checker is a handy tool to have in your toolbox, and can even be used for files beyond gaming ones.

I am mostly mentioning this here in this topic, because users of my GOGcli GUI program may have older files, that they want to keep, but can no longer be validated by my GUI and the manifest entries, because updated versions now exist.
Post edited March 30, 2021 by Timboli
Another spontaneous update happened.

GOGcli GUI v1.9 has been released.

Download - https://github.com/Twombs/GOGcli-GUI/releases/tag/v1.9

Further Information - https://github.com/Twombs/GOGcli-GUI

Tidying up some loose ends update.

Bugfix for row color when removing a Tag.

The 'Games' list right-click menu has undergone a slight revamp. This involves reducing what is first shown, by creating more sub menus and relocating some existing entries to them.

Screenshot - Tutor_47.png

I've added an additional sub menu called 'Lists', that gives easier access to 5 files.
(1) Latest Additions - List of games added since you first populated the 'Games' list. These are the games you see when cycling with the LAST button. You can see your newly acquired games on this list in order of addition.
(2) Games Updated - This is the list of games, that GOG indicate as being updated, that gets new additions (including remaining old) every time you use the 'CHECK or GET GAMES LIST' button.
(3) CDKeys - List of Games and their CDKeys (Serial, Code, Redeem Link, etc) in INI file format.
(4) DLCs - List of Games with DLCs in INI file format (no DLC specifics just a count per game).
(5) Tags - A list of games, if any, that you have tagged, in INI file format.

The 'SUB' button has been improved to include a 'create a Patches' sub-folder option & query.

Screenshot - Tutor_48.png

Screenshot - Tutor_49.png

NOTES
At the moment, the relocation of patch files works on the basis of a filename starting with 'patch_'. I'm not sure, but there may be other patch naming conventions, which I will add when I either get advised or come across them.

-------------------------------------------------------

Today on waking, I got this ambitious idea for an update - An extra 'Exists' database.
I've not yet thought it completely through, but what I have seems promising.
Basically, this extra database, would have a list of your GOG games and their files, that you have already downloaded (backed up, archived) on a drive (OS or otherwise).
Along with the files per game you have, their file size will also be recorded in the database, and perhaps the MD5 checksum value, though that last would entail a very lengthy database build, and may not really be needed. Need to think a bit more about the checksum aspect.
This could all work (enabled or disabled) dependent on what would probably be either a SETUP window option or a 'Games' list right-click menu option.
You would add games and their files to this extra database, by selecting a 'Games' list entry and then using some kind of option or button to browse to the game folder on a drive, that contains all the files you currently have for that game.

Why the extra database?
Well I can see some definite benefits, that mean less mind work (thinking) for users, especially in regards to updates, but also what is presented for downloading.

For downloads for instance, when you select a game for downloading, then before its files are presented on the 'Game Files Selector' window, then each file name is crossed checked with the 'Exists' database, and if name and file size match, they are excluded from what appears on the 'Game Files Selector' window. This saves the user from having to manually check what they have or haven't already got. In other words you are likely just seeing those files on the download list that are updates. All this of course, would depend on what you may have excluded in the past. Once a file and its size have been added to the 'Exists' database, then it no longer needs to exist if you don't want it to.

When you download a file, and it is okay (passed all validation checks), it will be automatically added to the 'Exists' database entry for that game. So once you build this extra database, it is basically automated for your games from then on.

Anyway, I am still thinking this through, and haven't started any work on the idea yet, but it appears to have plenty of merit, and while it might cause me some coding headaches to implement, it should reduce any user related ones.
Post edited April 01, 2021 by Timboli
I've started work on the code for GOGcli GUI v2.0 and its new ambitious 'Exists' database feature.

This involves an enabling option on the SETUP window.

Screenshot (1) - gogcli_setup_5.png

And another right-click menu option on the 'ADD TO MANIFEST' button.

Screenshot (2) - Tutor_50.png

The 'ADD TO MANIFEST' button gets renamed to 'ADD TO DATABASE'.

Screenshot (3) - Tutor_51.png

One or more game titles can be processed ... individual or full list (from a specified starting point). You browse to an individual game folder (with files), or select the main game folder of game title sub-folders (a match is required for any chance of success).

Screenshot (4) - Tutor_52.png

P.S. At this point, I am thinking that downloaded filenames and size and checksum should be added to the database, regardless of the 'Enable' option. So that means the 'Enable' option would only impact what you see for downloading. That could save on added effort further down the track, on a change of mind. So basically, entries will be available to be used, but only if you wish to use them.
Post edited April 02, 2021 by Timboli
Okay, as I imagined, the coding of this new 'Exists' database was going to give me a few headaches.

CHECKLIST
(1) The 'Exists' database file (Database.ini) is being backed up (5 cycled versions). DONE
(2) Downloaded game files are added to the database, if they pass the MD5 check or ZIP check. DONE
(3) Each file is stored under its name and the 'Slug' title. DONE
(4) Each entry includes file size, and MD5 (checksum) where it exists. DONE
(5) On selecting a game to download, the files are compared with entries in the database, and excluded from the download list if a match found. DONE
(6) To be excluded from the download list, both file size and checksum (where available) need to match. DONE
(7) ZIP files only need to match with file size to be excluded. DONE
(8) The program does not exclude if an incomplete match, it errs on the side of a missing checksum. DONE
(9) A game title (and its file names) can be manually added to the database, by browsing. DONE
(10) An MD5 value where existing for a file, can be optionally included (one query per game). DONE
Screenshot - Tutor_53.png
(11) Details of the add process stored in the Log file. DONE
(12) Adding all game titles (and their file names) to the database, is partially coded. INCOMPLETE

ISSUES
(1) MD5 inclusion is only partially supported. No double checking.
(2) Entries added to the database, are limited by the title and slug provided by GOG.
(3) Each slug is unique, but maybe too unique sometimes when GOG lists a game in parts (or chapters), and user has stored them in the one game name folder. Currently this can mean MD5 values are not discoverable, unless sub-folders (if existing) are also processed (added) manually. It may also mean orphan entries exist. See example below.

EXAMPLE
I had an issue with the game 'Wallace & Gromit's Grand Adventures'. On my 'Games' title list, as provided by GOG, there is no such game. Instead that game has four similar independent entries.
Wallace & Gromit's Episode 1 Fright of the Bumblebees
Wallace & Gromit's Episode 2 The Last Resort
Wallace & Gromit's Episode 3 Muzzled
Wallace & Gromit's Episode 4 The Bogey Man
In my game backup however, I have a game folder named 'Wallace & Gromit's Grand Adventures', inside of which is all the extra games files (ZIPs) and four sub-folders, named somewhat after the episodes and each containing their episode file.
Episode 1 - Fright of the Bumblebees
Episode 2 - The Last Resort
Episode 3 - Muzzled
Episode 4 - The Bogey Man
This creates a complex situation for my code.
Naturally I want to add all game files to the database, which I can do by selecting my backed up 'Wallace & Gromit's Grand Adventures' folder. However, I am limited to selecting a game title (in this case, only a choice of episode title) on the 'Games' list of my GOGcli GUI. That means, the slug title is that belonging to whatever episode I select, which is of course incorrect for the other 3 chapters, and an incorrect database entry is created for those, under the correct file name for each. And because the wrong manifest entry is being checked, no MD5 values are found for those 3 other chapter files.
Knowing that, I can then additionally process (add) each chapter sub-folder, and a correct entry for each will then be created under the existing database file name. But the 3 incorrect orphan entries will remain, though it is probably not an issue other than wasted database space.
The biggest issue with this (not usually for me unless I forget), is for users who will probably not have any idea of this or may not understand what they need to do.
You could kind of get around this issue, by just selecting those 4 chapter folders first time around, but you then miss out on the game extra files, unless they existed in one of the chapter folders, and of course, you would need to know to do that.
This is a complex issue that I am still trying to get my head around, to come up with a solution.

-------------------------------------------------------------

Of course, if the user is starting from scratch, and downloading all their GOG games with GOGcli GUI, they can avoid the issues mentioned above, as the database is automatically created and updated. Once I have provided GOGcli GUI v2.0 of course. So maybe wait until then before you start from scratch.

EDIT - If you are starting from scratch, and super keen and sufficiently clued in, you could grab an early release (incomplete version) of GOGcli v2.0 from the following location. Just grab the EXE file. NOTE - This requires you install the v1.9 release fist, and then overwrite the EXE file with the one from the link below.

https://github.com/Twombs/GOGcli-GUI/tree/main/Source

Even if you are not starting from scratch, you could use this version for every new game you get from GOG, which will start building the database ... I would advise ignoring the manual add option for now though, unless you are clued in enough to avoid the issue situation (i.e. chapters) I mention above.

P.S. It could be a while before I solve and finish things.
Post edited April 03, 2021 by Timboli
Wasn't able to work on the update today, though my mind keeps ticking over.

One other method to add to the 'Exists' database, will be the current VALIDATE FILE and VALIDATE GAME options.

I've also decided I need to have some option that allows exclusions from the download list, even when the MD5 is missing, so long as the file size and file name match. I may also add the option of an indicator instead, such as an unused row color or the text color ... maybe both.

As for the main issue mentioned last post, I may use an alert based on key word(s), in the file name.
Likely key words being - Chapter, Episode, Part, Volume.
The alert would explain the likely issue and how to deal with it if so.

Each file has a title not just the file name, so I am considering adding that to the database as well. I should probably also include the game ID, just to make sure the database is future proofed enough, for some currently unknown future need.

I'm also going to be busy elsewhere over the next three or more days, before I then get a chance to resume work on the update, hence these few reminder notes.
I actually did find some time today, as what I thought might happen, didn't.
So I got a good amount of coding & testing done.

The validate method for adding to database is now done, and a bunch of other stuff, including a new 'Relax' the rules option, which can be accessed from the 'Game Files Selector' window to make a temporary change, or from the SETUP window or right-click 'Games' list menu to make a more permanent change.

Screenshot (1) - gogcli_selector_13.png

Screenshot (2) - gogcli_setup_6.png

Screenshot (3) - Tutor_55.png

Screenshot (4) - Tutor_54.png

NOTE - Relaxing the rules means only the file size of an existing file, needs to match the manifest size entry for that file. This is handy when the database entry does not contain a checksum (i.e file downloaded before the database was implemented). This can be a way to avoid lengthy checksum gathering (comparing).

Summary of work today
The SETUP window, has a new sub-option 'Relax', that works with the 'Enable' database option.

Validating a File or Game can add to the new 'Exists' database, dependent on success or a query.

The 'Games' list has a new right-click sub-menu, 'Database', with two entries (Relax and View). The 'Relax' option mirrors the SETUP window one ... change one and the other is also changed.

The 'Game Files Selector' window now has a 'Relax' option, tied to that SETUP window (etc) option, but unlike them, is not a permanent change to the setting ... temporary only while the 'Selector' window remains open. This 'Relax' option if changed, reloads the files on the 'Selector' window.

What now shows on the 'Game Files Selector' window for downloading, is dependent on the new 'Enable' and 'Relax' options, and on what exists in the new 'Exists' database.

------------------------------------------

The FIND button process on the main window, now stores the last search text. To recall that search text for usage, the Title input field needs to be empty (before clicking the FIND button). It takes a second click to then do the search using that returned text.

------------------------------------------

Further Notes
The new 'Relax' option is used in the context of what populates the 'Game Files Selector' download list.
I know for myself, that when GOG advises of an update, I have in the past just compared file names (of patch files mostly), and just downloaded what I seemingly don't have.
Of course, to do that I need my files handy and then do a visual compare of file names, version numbering etc.
If I have that information already in the 'Exists' database, then I make things much simpler for myself, as my GUI does all the checking for me, and only presents what it deems I don't have, plus it additionally does that based on file size and checksum values if available. So more efficient and more reliable than doing a visual compare myself ... not to mention much quicker.

By myself, I was just relying on file name comparison, and that has served me a good long while.
With GOGcli GUI, it not only compares the file name, but also size and checksum if available.
If the checksum isn't available, then just the file size alone is an advance on my visual compare ... hence the 'Relax' option. I may yet add another option that further reduces checking to just the file name, though not sure that is needed, as file size is quick and easy to check..
Post edited April 05, 2021 by Timboli
timboli this is a very ambitious project with your exists db.

I am just taking my first look at Kalanyr / gogrepoc, and i like the python script because it has much fewer command lines (2792) to the (6439) in your GOGcli GUI 1.9. My biggest gripe is the difficulty in auditing this type of code. What say you?
avatar
DesmondOC: timboli this is a very ambitious project with your exists db.

I am just taking my first look at Kalanyr / gogrepoc, and i like the python script because it has much fewer command lines (2792) to the (6439) in your GOGcli GUI 1.9. My biggest gripe is the difficulty in auditing this type of code. What say you?
Its not just his code. Its my code too with ~10k lines of code (though for GOGcli ui, he mostly uses only the api sdk module which reduces the surface to audit considerably): https://github.com/Magnitus-/gogcli

Honestly, the only defense I'll make for my part is that the underlying design is better overall and will be more conductive to the facilities I'd like to add (including someone easily building their tool on top of my own, like the project in this thread).

However, if you want something extremely simple that you can code review in <2 hours (like a ~2k lines Python script), my tool and anything built on top of my tool won't be your cup of tea and you should look elsewhere.

Frankly, I'm not here to sell you anything. I have motivations for having gone my own way with this, but my motivations might differ from yours.
Post edited April 21, 2021 by Magnitus
avatar
DesmondOC: timboli this is a very ambitious project with your exists db.

I am just taking my first look at Kalanyr / gogrepoc, and i like the python script because it has much fewer command lines (2792) to the (6439) in your GOGcli GUI 1.9. My biggest gripe is the difficulty in auditing this type of code. What say you?
Well for starters you are comparing an essentially non visual script that you can only interact with on the command-line, to a visual (GUI) script that also has buttons lists and other clickable items. In other words they are two quite different approaches, with different level and type of control.

If you love Python, go for it. Do whatever feels most comfortable for you.
Me, I prefer to be able to select and click things.

I'm not entirely sure on your reason for auditing the code, unless you are wanting to improve or add features.
I'm a pretty simplistic coder, so if you are having issue with my code, then I suggest leaving well enough alone.
Amount of code to my mind does not dictate complexity ... just time needed to understand.

When I code, my focus is on avoiding bugs and completing what I have in mind as soon as is reasonable. I care less about making everything as modular as possible, because while it might make a smaller tighter script, it can also make it more complex to troubleshoot, and in reality the program doesn't really run any better, and when compiled those lines don't make a great lot of difference in final EXE size.

I am a hobby programmer not a perfectionist. I like to reduce code by using functions, but it doesn't rule me. If it is quicker to repeat a section of code, then I often do so, because there is no end penalty, but there could be a developing penalty if I muck around with adjusting an existing function or adapting code to suit a function instead.

First and foremost when developing I believe in letting the creative juices flow as fast as possible. Sometimes I go back in an update and reduce code by making some of it more modular, but that is almost accidental and usually has a practical reason behind it.

Every coder, especially self taught ones like myself, have their methods and approaches ... habits for whatever usually works best for their mindset.

Further to that, software becomes redundant all too soon, so you can pay a price for perfection ... wasted time, less produce. What really matters is that your code runs well ... not that it looks a million dollars, etc.
Post edited April 23, 2021 by Timboli
No full release yet, but I have been busy now and then working away on GOGcli GUI v2.0, as time etc permits.

Aside from the 'Exists' database, which has received some tweaking during testing, I have most recently added the ability to download Changelog and Description data for the selected game, via a new 'Game Details' window, as well as having them download automatically when downloading game files, if you wish, via two new options on the SETUP window.

Screenshot - Game Details window

Screenshot - Setup window

If you want to try the latest work in progress before its full release, especially if you are familiar with the program, then download the EXE file from the following location.

Download - GOGcli GUI

IMPORTANT - Ensure you have installed the v1.9 full release of GOGcli GUI, before overwiting its EXE file with this latest updated one.

https://github.com/Twombs/GOGcli-GUI

GOGcli GUI v1.9

PLEASE NOTE - The 'Latest Changes.txt' file has greater detail about changes since v1.9 was released.

Enjoy!

P.S. Please remember this is still a work in progress update. Some new elements may work less than perfect or may be a little tricky to grasp.
Post edited June 19, 2021 by Timboli
I've literally no idea how to use this and I'm too old and tired to figure it out myself. It there a video tutorial available anywhere?