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
GOG GALAXY
https://www.gog.com/galaxy
https://appdb.winehq.org/objectManager.php?sClass=application&iId=16854

Minigalaxy
https://sharkwouter.github.io/minigalaxy/

Heroic Games Launcher
https://heroicgameslauncher.com/

Lutris
https://lutris.net/

LGOGDownloader
https://www.gog.com/forum/general/lgogdownloader_gogdownloader_for_linux
https://github.com/Sude-/lgogdownloader
https://sites.google.com/site/gogdownloader/

gogcli - Gog Client
https://www.gog.com/forum/general/gogcli_gog_client
https://github.com/Magnitus-/gogcli

GOGcli-GUI
https://www.gog.com/forum/general/gogcli_gui_frontend_downloader_and_validator/
https://github.com/Twombs/GOGcli-GUI

MD5gog Bank
https://www.gog.com/forum/general/gogcli_gui_frontend_downloader_and_validator/post185

gogrepo
https://www.gog.com/forum/general/gogrepopy_python_script_for_regularly_backing_up_your_purchased_gog_collection_for_full_offline_e/
https://github.com/Kalanyr/gogrepoc

GOGRepo GUI
https://www.gog.com/forum/general/gogplus_download_checker/post16
https://github.com/Twombs/GOGRepo-GUI/

GOGPlus Download Checker
https://www.gog.com/forum/general/gogplus_download_checker
https://github.com/Twombs/GOGPlus-Download-Checker

GOG Checksum Lookup
https://www.gog.com/wishlist/site/my_account_provide_checksums_eg_md5_sha1_etc_for_downloadable_files
https://openuserjs.org/scripts/xmanacollectorx/GOG_Checksum_Lookup

gog-downloader
https://github.com/RikudouSage/GogDownloader/



---------------------------------
checksum | hash | md5 | xml
---------------------------------

xml files contain the md5 hash values that can be used to verify file integrity when you download games.

one way to grab the xml file:
Go to your browser's download manager window.
Rick-click on the file that you are downloading and select "copy download link" (or something similar).
In your command prompt, input "wget", followed by the download link, followed by ".xml"

Example: "wget downloadlink.exe.xml"

another way to grab the xml file:
copy the download link, paste it into your browser's address bar, and append ".xml"

references:
https://www.gog.com/forum/general/any_md5_check_available/post4
https://www.gog.com/forum/general/md5_hashes_for_big_downloads_like_the_witcher_3/post2
https://www.gog.com/forum/fallout_series/fallout_4_goty_90gb_and_no_hash_files/post3
https://www.gog.com/forum/fallout_series/fallout_4_goty_90gb_and_no_hash_files/post4


checking file integrity with innoextract and linux installer checks.
https://www.gog.com/forum/general/any_md5_check_available/post11


related threads:
https://www.gog.com/forum/general/any_md5_check_available/page1/
https://www.gog.com/forum/general/md5_hashes_for_big_downloads_like_the_witcher_3/page1/
https://www.gog.com/forum/fallout_series/fallout_4_goty_90gb_and_no_hash_files/page1/
https://www.gog.com/forum/general/we_need_a_way_to_check_file_integrity_of_backups/page1
https://www.gog.com/forum/general/i_need_some_help_with_backing_up_my_games/page1



----------
python3
----------

the following is one way to get python3
(gogrepo requires python 2.7 or 3)

# https://github.com/niess/python-appimage
# download "python3.9.19-cp39-cp39-manylinux1_x86_64.AppImage"

# make executable
chmod a+x python3.9.19-cp39-cp39-manylinux1_x86_64.AppImage

# https://python-appimage.readthedocs.io/en/latest/
./python3.9.19-cp39-cp39-manylinux1_x86_64.AppImage --appimage-extract
mv squashfs-root python3.9.19-cp39-cp39-manylinux1_x86_64.AppDir
ln -s python3.9.19-cp39-cp39-manylinux1_x86_64.AppDir/AppRun python3.9.19

# https://docs.python.org/3/tutorial/venv.html
# https://www.tutorialspoint.com/What-is-PYTHONPATH-environment-variable-in-Python
# "When you create a virtual environment with venv or virtualenv, it automatically sets PYTHONPATH to include the virtual environment's site-packages directory."
# create virtual environment with your custom name, here named "virtual_environment"
./python3.9.19 -m venv virtual_environment

# run virtual environment when using python
# run from same directory as gogrepoc.py
source /path/to/virtual_environment/bin/activate

# setup python
python -m pip list
pip install --upgrade pip
pip install html2text html5lib requests pyOpenSSL



----------
gogrepo
----------

# login
python gogrepoc.py login

# depending on quantity of games in account, this can take a while.
python gogrepoc.py update

There are many command line arguments available in gogrepoc for updating, downloading, verifying, and others.

For my ease of use, i use two scripts, listed below.

once update is done, use this script to extract game titles.
https://gitlab.com/version2013/gog.com/-/blob/main/extract_titles

Currently I download games individually, or in small batches, partly because of size constraints.

Here is the current script I use:
https://gitlab.com/version2013/gog.com/-/blob/main/update_download_verify

My script uses only a few of the available command line arguments in gogrepoc

You will need to adjust the script with your preferred command line arguments.

More information:
https://www.gog.com/forum/general/gogrepopy_for_dummies_helpful_hints_for_total_noobs/page1
post3689
post3973


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


Downloading game installers to multiple USB drives.

Plugging in USB drives gives non-persistent names for those drives.
When you have symlinks to your drives, it is helpful to have persistent names for those drives,
that way you can create persistent mount points for those drives.
The symlinks will be valid no matter what order you plug the drives in.
This also requires that you create unique labels for your drives.

What works for me is having a central directory containing the gogrepo files;
game installers on separate drives all accessible from one central directory with symlinks to the drives.

give your drive a label with: e2label <device> <label>
example: e2label /dev/sdb1 drive1

verify label with: blkid <device>
example: blkid /dev/sdb1

create a mount point (directory): mkdir /mnt/<label>
example: mkdir /mnt/drive1

will need 'mount' command that supports labels
mount -t <format-type> -L <label> <mount-point>
example: mount -t ext2 -L drive1 /mnt/drive1

With gogrepo, game titles are used to create each game directory.
Create your game directories on the usb drives that you want each game to reside.
Create symlinks in your central directory that point to those game directories on other drives.

References:
https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/managing_file_systems/assembly_overview-of-persistent-naming-attributes_managing-file-systems
https://oldforum.puppylinux.com/viewtopic.php?t=57257



------------------
documentation
------------------

GOG Developer Docs
https://docs.gog.com/
https://docs.gog.com/bc-languages-table/
https://github.com/gogcom/gog-galaxy-dev-docs/

unoffical documentation
https://gogapidocs.readthedocs.io/
https://www.gog.com/forum/general/unofficial_gog_api_documentation
https://github.com/Yepoleb/gogapidocs
Post edited December 29, 2024 by solar_dome
Wow, quite the comprehensive list there. Some of those I didn’t even know about, so thank you for bringing them to my attention. I mostly use Galaxy and GOGcli GUI nowadays, but have used some others (such as gogrepoc) in the past. A big thank you and + to you for the detailed instructions!
Great stuff!

Thanks for putting all this really useful information together.