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

×
I've done more downloading and updating tests with my GOGRepo GUI program, but not yet done a full 'Update In Stages' method 2 process. Chiefly because I have been sidetracked with the other new program I mentioned last post, but also because I would like some updates for games I own to occur at GOG, which will give my code a true test.

Anyway .......

It must be noted, that neither GOGRepo GUI and my new GOGRepo Simple GUI programs should exist in the same folder. To that end, latest versions of both these programs check for each other and refuse to run if the other found. This is because they both use same named manifest and resume manifest files, as well as Games.ini and Titles.txt files, while they do have their own differently named settings files. So when the new program becomes available, please don't run an older version of GOGRepo GUI in the GOGRepo Simple GUI folder. If you do, you might lose some records or details.

I've done more work on GOGRepo Simple GUI, and more tests, even some Linux SH files that passed MD5 and Size tests. I've done the SETUP window and finished its code, so should be working fine, though I haven't yet tested much. You may note in the following screenshot, that I reduced the height of the SETUP button and added an 'Update' checkbox.

GOGRepo Simple GUI updated screenshot

The new 'Update' checkbox, basically tells the program whether to update the manifest or not during VERIFY ... it does that at the start of verifying, before it does the actual verifying. VERIFY always seeks to have the latest update information, to verify latest downloads correctly. But if you have just updated the manifest for a game, it doesn't need to do that again for each file for that game, that you are now testing.

In an effort to prevent unnecessary use of Update, the program does some record keeping and automated checking, but some of that will be lost each time you Retrieve a List of Game Files, using that option. That is because the relevant list files are rebuilt each time, manifest aside. Until that happens though, you may get a prompt for how you want to proceed, based on last update date for the selected game. Basically the default check works on 24 hours. If the time is less than that, you won't be prompted unless you have the Update checkbox enabled. If 24 hours or more, and you don't have Update enabled, you will be prompted about that.

In an effort to help select the right game title, when you drag & drop, a one or two word search term is created from the start of the file name. You can use that with the FIND button. If the 'Exact' checkbox is enabled, then it matches from the left, disabled it means a wild card search of the search term anywhere in a name. Both work from a selected list item forwards, but cycling around to the start of the list again.

Setup Window screenshot

Please note, that though I don't state it outright on the SETUP window options, the INSTALL Required Libraries button acts as though you are using Kalanyr's forked version of 'gogrepo.py', and so installs all required libraries. The extra libraries involved, that aren't required for the original version of 'gogrepo.py', should not impact it, but if you are savvy enough, you can manually install what is just needed for the original version, and skip using the button.

I still need to complete the code for verifying ZIP, 7Z and RAR files, but sub-folders for the programs needed, plus for FSUM are currently created. I will probably get onto that code later today, or more likely tomorrow. Currently the size of all supported files is checked.
Post edited August 19, 2020 by Timboli
avatar
Timboli: Do GOG actually pack or re-pack all games?
It would be nice to know, but there might be a bunch of variables to that answer.
They certainly update digital signatures of the installer exe files from time to time. Some time ago I did run into case where the downloaded installer did not match the md5 checksum which was downloaded a few weeks earlier. The digital signature of the exe file was valid. So I checked the signature timestamp and it was only a few days old at that time.
Post edited August 19, 2020 by Komat
avatar
Komat: They certainly update digital signatures of the installer exe files from time to time. Some time ago I did run into case where the downloaded installer did not match the md5 checksum which was downloaded a few weeks earlier. The digital signature of the exe file was valid. So I checked the signature timestamp and it was only a few days old at that time.
Ok. Thanks for that info.
I've finished GOGRepo Simple GUI for now, though I will be working on an update that supports batch processing.

You can get the download from HERE

REQUIRED - Python (etc) and Kalanyr's forked version of gogrepo.py - https://github.com/Kalanyr/gogrepoc

IMPORTANT - Please note I have not yet done extensive testing. RAR and 7Z files for instance, have not been tested yet, though the code I use for them is similar to that used in my GOGPlus Download Checker program.

The file types currently supported for verifying are - EXE, BIN, ZIP, SH, 7Z and RAR.

With EXE, BIN and SH files, MD5 checking is done if values for them exist in the manifest. Failing that 7-Zip is used to gauge their integrity. 7-Zip is also used for ZIP and 7Z file checking. UnRAR is used for RAR file checking.

For all files, where size exists in the manifest, that is checked too and reported on.

ADVICE - Please bear in mind, that this is pretty basic testing only, but probably the same as Galaxy would do. If you want more intensive checking, please use my GOGPlus Download Checker program instead.

NOTE - While verifying occurs, you often get a black DOS console like window, that is often blank or not showing much is happening, that is normal. You also get told what is happening in the Status field of the GUI, though that is limited. Depending on file size, and the power/speed of your processor, some of these checks will take time. In contrast to my GOGPlus Download Checker program though, the checks are much quicker.

I've modified the GUI again, slightly, with the addition of a LOG button.

Main Window screenshot

Please checkout previous posts here (above) for more information about this Simple GUI program, as well as the in-program Information dialog.

Enjoy!
Post edited September 02, 2020 by Timboli
It occurred to me not long after uploading (see previous post for link) GOGRepo Simple GUI, that maybe the game name exists in file properties of the EXE file at least, and that proved to be so ... at least for all the ones I checked. So I have incorporated that check into the next version of the program.

The name doesn't always match up with the name in the manifest, but my code attempts to make a match based on a few likely variations. If it gets a perfect match you need to do less clicking of the FIND button, perhaps only one click, and no need to do a list selection either.

I've also added a small folder button to the right of the FILE field, which will grab the folder name for FIND.

My thinking for batch processing, is to turn the FILE input field into a combo field, populated by all suitable files in your game folder, when you drag the lot or the containing folder. A click of the VERIFY button would then process all. The text to use for FIND would then be taken from the properties of the first executable (EXE file) encountered in the drag & drop.

Either a text file or dialog will popup with results for all files checked for a game.

Anyway, that is my thinking for the next version, which will reduce needed clicking etc.
Post edited August 20, 2020 by Timboli
I was motivated to do the batch processing update sooner rather than later.

Download v1.1 of GOGRepo Simple GUI from HERE.

You can drag & drop a game folder (which it will process recursively) or single or multiple files, and then just click the VERIFY button once to do all of the files for that game.

I've reworked the GUI slightly, as you can see in the following screenshot.

Main Window

And here is one of the Results dialog.

Results Dialog

Enjoy!
Post edited August 21, 2020 by Timboli
Back to GOGRepo GUI.

I made a modification to it today, after discovering an issue during some download speed comparison testing. I was running the GUI in another folder with the original gogrepo.py, and I was getting a strange issue when the program started up, which I narrowed down to me forgetting to copy the 'Black.jpg' file over as well. So I dug up and modified some old code of mine, that can create that 'Black.jpg' file on-the-fly if missing ... only takes a second. That has now been incorporated.

Something else I noted, is that I have not supported using my new 'Update In Stages' code, with the original gogrepo.py, and I can see no reason not to, and good reasons to do so. So my next focus will most likely be doing that.

As things currently stand, it seems I will have to revert to using the original gogrepo.py, or use my new Simple GUI with Free Download Manager 5. One of those two anyway, to do my game file downloading ... unless Kalanyr can come up with something to improve the downloading speed for me with his forked version.

By the way, my disappointing experience with the forked version, probably won't be the same for most other users. I've certainly not read of others complaining about their download speed, which they would do, if it was as bad as mine. I also cannot see how it could be anything to do with my GUI either, as it just executes the same command-line code.
Post edited August 22, 2020 by Timboli
avatar
Timboli: Back to GOGRepo GUI.
Something else I noted, is that I have not supported using my new 'Update In Stages' code, with the original gogrepo.py, and I can see no reason not to, and good reasons to do so. So my next focus will most likely be doing that.
Well as I discovered fairly quickly, there was one major reason it wasn't supported for the original gogrepo.py.
(1) The process used the result in the resume manifest of an interrupted Update ALL, and that file and process does not exist in the original, and is required to get a list of game titles in the user's library at GOG.
However, I thought I would see what I could do to have it exist in the original, and for the first time really, I dabbled with some Python code of my own. It wasn't much, and was mainly just me looking at existing versions of gogrepo.py and with a presumption of understanding, copying and modifying existing code. I guess being a coder anyway, I can still understand some elements of a coding language I am not really familiar with.
So I worked out what I needed, and the GOGRepo GUI checks on startup for my new code, if the original version of gogrepo.py is in use, and if not found injects it into that version. On success, the 'Update In Stages' process becomes available.
My code, instead of creating a 'gog-resume-manifest.dat' file, creates a 'gog-titles.dat' file.

So that bit was solved. Then further along in my code, I realized another reason I hadn't supported the option.
(2) The forked version of gogrepo.py supports batch IDs for updating etc, whereas the original doesn't, doing only one game ID (title) at a time.
So that required me devising a looping modification to do the total games specified, one at a time.

So anyway, they have been implemented now and my first lot of testing worked well.
NOTE - The (1) issue really only applied to the BEGIN button process of Method 1 for 'Update In Stages'. The (2) issue applied to Method 2 as well, for both BEGIN and CONTINUE for both methods.
Post edited August 24, 2020 by Timboli
I've done some more testing and fine tuning to GOGRepo GUI, and I think I am done now, so expect a release shortly, for the full version that supports Kalanyr's forked version of gogrepo.py.
In the end, I was too tired last night to upload the full version release of GOGRepo GUI ... especially after it occurred to me belatedly, to look into some comparison checking for detected update changes, which I had some ideas for.

I did some of the comparison code last night as a bit of a trial, and then fine tuned it today, and I am quite pleased with it, and just need to incorporate it into my GUI program.

This is above and beyond the basic comparison checking I had already provided in program.

This checking goes quite deep, and leaves behind only what doesn't exist in the original manifest entry ... so it does the hard work for you.

I've only repeatedly checked 30 game entries in my library list (of the 90 that were updated), so I am sure there will be one or two minor things I have missed, that will come to light by the time I fully update my manifest in stages.

It is interesting to note though.
(1) Those 30 games out of the 90, had failed the basic comparison check.
(2) My new more intensive comparison code, weeded out all but 3 of those 30.
(3) Those 3 remaining game entries had legitimate differences to their original versions in the manifest.
(4) GOG makes mistakes and sometimes quietly fixes them, without a changelog notification.
(5) Many seeming differences weren't so at all, just down to a change of position in the game entry in the manifest. I have no idea how or why this occurs, and it could be down to GOG or gogrepo.py.
(6) Some were very minor changes, like a Rating number or Forum URL etc change, and so not relevant.

A few of the changes are worrying. This is especially so when you haven't been using gogrepo.py from the start of your purchasing. I started using it late in proceedings, when I already had nearly a thousand games. This means, I have lost the opportunity to discover some of GOGs silent fixes.

Here are the results for the 3 game titles that had legitimate differences.

Game 1

'downloads': [{'desc': 'Against the Moon: Prologue',
'href': 'https://www.gog.com/downloads/against_the_moon_prologue/en1installer0',
'lang': 'English',
'md5': '22f94260f26b9c90b1d927f08677c865',
'name': 'setup_against_the_moon_prologue_5_(40148).exe',
'os_type': 'windows',
'size': 534012504,
'version': '5'}],
That revealed the addition of an updated EXE file.

Game 2

'downloads': [{'desc': 'ARMA: Cold War Assault',
'href': 'https://www.gog.com/downloads/arma_cold_war_assault/en1installer1',
'lang': 'English',
'md5': '413c415bc402b648ff26bf828bc1d3e5',
'name': 'setup_arma_cold_war_assault_1.0_(36421).exe',
'os_type': 'windows',
'size': 538330600,
'version': '1.0'}],
All but the description (first item) were identical to the original.
But as you can see in the original below, there is a Part 1 of 2, and Part 2 of 2 listed, and now only one exists.

'downloads': [{'desc': 'ARMA: Cold War Assault (Part 1 of 2)',
'href': 'https://www.gog.com/downloads/arma_cold_war_assault/en1installer0',
'lang': 'English',
'md5': '0c35191818bf21e134c0fd17684b9379',
'name': 'setup_arma_cold_war_assault_1.0_(36421).exe',
'os_type': 'windows',
'size': 538585424,
'version': '1.0'},
{'desc': 'ARMA: Cold War Assault (Part 2 of 2)',
'href': 'https://www.gog.com/downloads/arma_cold_war_assault/en1installer1',
'lang': 'English',
'md5': '413c415bc402b648ff26bf828bc1d3e5',
'name': 'setup_arma_cold_war_assault_1.0_(36421).exe',
'os_type': 'windows',
'size': 538330600,
'version': '1.0'}],
That is what I mean by worrying, as I have come across this kind of GOG mistake previously, where there was only ever one file really, but somehow two got listed. NOTE that they have identical file names in the original. So downloading the second file would have overwritten the first. So also note that the MD5 and file sizes are different.

Game 3

'downloads': [{'desc': 'ARMA: Gold Edition (Part 1 of 2)',
'href': 'https://www.gog.com/downloads/arma_gold_edition/en1installer2',
'lang': 'English',
'md5': '012efd892ac5d2070797bdeeec64c3b2',
'name': 'setup_arma_gold_edition_1.0_(36421).exe',
'os_type': 'windows',
'size': 895616,
'version': '1.0'},
{'desc': 'ARMA: Gold Edition (Part 2 of 2)',
'href': 'https://www.gog.com/downloads/arma_gold_edition/en1installer3',
'lang': 'English',
'md5': '22e047000493e0d78fe98ce952cecc1a',
'name': 'setup_arma_gold_edition_1.0_(36421)-1.bin',
'os_type': 'windows',
'size': 4047369028,
'version': '1.0'}],
That has up to 2 parts listed, whereas the original had 4 parts, with the BIN and EXE file names being repeated (identical) in Parts 3 & 4.
Post edited August 26, 2020 by Timboli
Meanwhile, I have added some more buttons to the Update window, for various folders, as can be seen in the following screenshot.

Update Window

All of which can be very useful.

At the moment I am steadily working my way through my game library, using the 'Update In Stages' option. I am just doing a bunch of games here and there, when taking a break from the PC.

I know that some gogrepo.py users update their full game library from scratch every month or two, and recommend it. So with that in mind, I created the 'Update In Stages' option. This option means you could update a specified number of games a day, in a kind of perpetual cycle. In my case, if I did roughly 30 games a day for a month, all my games would be done. I could then start over for the next month and so on. Of course, nothing says it has to be exactly a month, so I could spread things out a bit, and do more games some days and less others, and some days not any.

The whole idea, is to keep abreast of update changes, in a regular fashion. And because my GUI remembers where you are up to, it is a breeze. You can also still do new game additions, etc meanwhile.

With the new 'Update Changes' folder button, plus the 'Changed' file button, you can quickly determine was has changed during an update.
Post edited August 26, 2020 by Timboli
I felt the need to add some more user friendly features, before giving a final run before uploading the v1.0 release.

As can be seen in the following screenshot, I added some minimize options for the Update window.

Update Window

NOTE - The minimize checkboxes are checked repeatedly during the 'Update In Stages' process, but may take a while to work, depending on what part of the process is currently running.

I've also added a display of 'Done' count, for the 'Update In Stages' option.
A tooltip for that count field shows the remaining count.

And I've added a 'Splash' image that shows at program startup, which is a pretty basic affair, but shows something is happening, while the program window is being prepared & loaded in the background.

Splash

Another new element I have added, is recognition of the manifest format at startup, if a manifest exists, to determine if it is suitable for the current version of gogrepo.py. This is done based on an entry that exists in the forked version manifest, but not the original. That entry is - 'galaxyDownloads':

And now, without any further ado, here finally is v1.0 of GOGRepo GUI, which supports Kalanyr's forked version of 'gogrepo.py'.

Releases

The gogrepo.py Python script is required, and you have a choice of two versions. See the following.

Kalanyr's forked version of gogrepo.py can be found here - https://github.com/Kalanyr/gogrepoc

Eddie's original gogrepo.py, with less features, is still supported and can be found here - https://github.com/eddie3/gogrepo

IMPORTANT - If you haven't been using an earlier version of my GUI, and haven't been keeping up with development changes, then I strongly suggest you familiarize yourself with earlier details and comments.

I recommend you start here - https://www.gog.com/forum/general/gogplus_download_checker/post87
Post edited August 27, 2020 by Timboli
And now, finally back to the main program for this thread - GOGPlus Download Checker.

The program is now v2.0, and had some major additions/changes/improvements.

The first thing to note, is that 7z.exe is now used instead of 7za.exe. REQUIRED replacement.

7z.exe better supports EXE files that fail to be checked by InnoExtract.

ISO and XZ files are now supported. This is for even more support beyond the GOG store ... the Plus bit.

Drag & Drop of one or more folders, and recursive, is now fully supported. This is for all supported files except PDF.

The 'Done' list has two right-click options, available after testing has finished, if the console window remains open.
(1) Open the folder for selected entry.
(2) View the Results file for selected entry.

The 'Jobs' list has three right-click options, available after testing has finished, if the console window remains open, or when viewing the Program Options (SETUP MODE).
(1) Clear the Jobs list file.
(2) View the Jobs list file.
(3) Add a 'stop' line to the Jobs list file. That entry can then be relocated by the user to the line they wish to use it at.

Program finally has its own icon.

Current screenshot of Console Window

GOGPlus Download Checker can be downloaded from here.

Enjoy!

P.S. GOGPlus Download Checker DOES NOT require Python or gogrepo.py.
Post edited August 30, 2020 by Timboli
It has come to my attention, that I failed to note, that Kalanyr's forked version of 'gogrepo.py' was required for my GOGRepo Simple GUI program. My apologies to any user affected by this.

Kalanyr's forked version of gogrepo.py can be found here - https://github.com/Kalanyr/gogrepoc

I have now done an update, v1.2, that detects the version of 'gogrepo.py'. This involves checking for the Kalanyr forked version, which is automatically supported, and if not found, then checking for a modified version of the original 'gogrepo.py', which is also supported. The user is queried if neither are the case, with an option to modify the existing.

7-Zip is now checked for at startup, with priority given to the '7z.exe' file over '7za.exe' if found.

GOGRepo Simple GUI v1.2 can be downloaded from here.

Please check notes on prior releases of my Simple GUI, for greater detail, or indeed previous posts here above.

https://github.com/Twombs/GOGRepo-GUI/releases

NOTE - The releases also include those for my main program GOGRepo GUI, so skip those and look for the word SIMPLE in the title of the release. Eventually the program will get its own GitHub page.

ADVICE - The issue mentioned at the start of this post, affected the RETRIEVE LIST OF GAMES process. If you have any problems with that process, please ensure you are using Kalanyr's forked version of 'gogrepo.py'.
Post edited September 02, 2020 by Timboli
I've been adding a new feature to GOGRepo GUI.

But first some background.

The gogrepo.py script, which my program is a GUI (front end) for, is a great program that tries to make up for some of the shortcomings of GOG, especially since the good old GOG Downloader was dropped. That Python script however, has its limitations and relies on GOG employees etc being diligent with entries that the manifest is derived from. One of the issues, is updates, where often a Changelog entry is missing or the complete Changelog itself. This is fairly common as most customers would know. Another issue, is an update flag not always being set. Often these things are belatedly fixed or added, but maybe not always. I certainly know of one game personally, where I was never notified of updates, and I only found out about them through other customers. That game was The Long Dark, and I have heard there have been others. That game is also no longer available at GOG, but the updates kept coming.

The following may not be applicable, if you have been using gogrepo.py from the beginning of your GOG purchasing, especially if you have stuck to the supported folder structure and been diligent with updating. This is not the case for me, because I had almost 1,000 games at GOG before I started using gogrepo.py, plus I have my own preferred folder structure, including storing on external drives.

So for myself, and those like me, I have been working on an alternate solution.

For us to know what updates we are missing, there needs to be some kind of comparison check. Now this could be very labor intensive to manually do it, and it could be a long hard process for your PC, were it to do a full comparison, and I have elected to do the comparison just based on file names at this point. I may later add date and file size checking, perhaps even MD5 checksums, but I feel what I have coded so far should mostly be sufficient.

What I have coded, is mostly an automated process, but inevitably needs manual interaction, because folder structure is everything and very complex to account for all the possible variations ... and dare I say, probably impossible anyway, as folder naming plays a big part. I have tried to make the manual interaction as minor as possible.

Anyway, the main window of GOGRepo GUI, now has a new right-click option for the Games list, CHECKER for Game files, as seen in the following screenshot.

Main Window Menu

That option opens yet another new window for the program, called Game Files Checker, as seen in the next screenshot.

Files Checker Window

This is not an option I envisage being used more than once, because my program has other better automated methods to cover the usual update checking. This is really only to cover the past, prior to using gogrepo.py etc.

What occurs is the following ... including how to use.

(1) Basically, you click the Get File Names button first, to extract a complete list of files found in the manifest, along with related game title.

(2) You can if you wish, SAVE the results to file. If you have a lot to check, then using the LOAD button on another occasion, means you can do things in multiple sessions. As you remove or prune entries, you can likewise SAVE afterward and gradually reduce what you are working with.

(3) The 'Filter Out' option can be used to specifically target file types, by removing any unwanted entries. You can also individually remove entries using the REMOVE button. Because I store my Linux game files in a different location, I would filter them out and do them separately later.

(4) Next, you click the CHECK button, which presents a folder browser. You use that to select your main games storage folder. Once selected, the program then gets a list of all the known game file types within, using recursive checking. It also does a comparison, based on game title and file name with the list loaded from the manifest. This process can take a good while if you have a lot of games, potentially many minutes. It shouldn't take very long on a powerful PC.

(5) Matched entries are removed from the top list, and any unmatched entries will populate the lower list.

(6) Mismatches will likely be common, especially where folder names and sub-folders prevent a match. However, you can manually check based on the leading game titles, and remove any that should be.

(7) What remains after basic checking, is what you then need to investigate and probably download.

NOTE - Both lists work with the SAVE and LOAD and REMOVE and LIST buttons. You assign the correct list, by either clicking in the list, or enabling the appropriate 'Active' checkbox.

While the code is essentially finished, I've still gotta do some fine tuning and more testing before uploading, what will essentially be GOGRepo GUI v1.1.
Post edited September 17, 2020 by Timboli