LGOGDOWNLOADER(1)

๐Ÿ’– NAME ๐Ÿ’–

LGOGDownloader โ€” the manual page for LGOGDownloader 3.18. That's it, that's the name, she's iconic and she knows it. ๐Ÿ‘‘


๐Ÿฆ‹ SYNOPSIS ๐Ÿฆ‹

lgogdownloader [OPTION]...

๐ŸŒธ DESCRIPTION ๐ŸŒธ

okay so picture this: an open-source GOG.com downloader for Linux users, and it uses the exact same API as GOG Galaxy. Same API, bestie. No cap. โœจ

LGOGDownloader can download your purchased games, it can query GOG.com to see if your game files have changed, and it can also grab extras like artwork and manuals. She's also fully capable of downloading language-specific installers for games where those exist. Multilingual queen. ๐Ÿ’…

โœจ LGOGDownloader Options โœจ

  • -h, --help โ€” prints the help message. your emotional support flag fr ๐Ÿซถ
  • --version โ€” prints version information.
  • --login โ€” logs you in.
  • --gui-login โ€” login, but forced through the GUI. this one implies --enable-login-gui.
  • --browser-login โ€” login, but forced through the browser.
  • --check-login-status โ€” checks your login status. vibe check for your session ๐Ÿ’…
  • --list [=arg(=games)] โ€” lists games/tags. the values you can pass:
    • Games = g|games
    • Details = d|details
    • JSON = j|json
    • Tags = t|tags
    • Transformations = tr|transform|transformations
    • User data = ud|userdata
    • Wishlist = w|wishlist
  • --download โ€” downloads. she does the thing. ๐Ÿ”ฅ
  • --repair โ€” repairs downloaded files. Use --repair --download to redownload files when the filesizes don't match (which probably means a different version). The redownload will rename the old file by appending .old to the filename. it keeps the receipts, lowkey thoughtful ๐Ÿ™ˆ
  • --game arg โ€” sets a regular expression filter for download/list/repair (Perl syntax).
  • --create-xml [=arg(=automatic)] โ€” creates GOG XML for a file. "automatic" enables automatic XML creation.
  • --notifications โ€” checks notifications.
  • --updated โ€” list/download only games with the update flag set.
  • --new โ€” list/download only games with the new flag set.
  • --clear-update-flags โ€” clears update notification flags.
  • --check-orphans arg โ€” checks for orphaned files (files sitting on your local filesystem that aren't on GOG servers). It sets a regular expression filter (Perl syntax) for which files to check. If you don't give it an argument, the regex defaults to .*\.(zip|exe|bin|dmg|old|deb|tar\.gz|pkg|sh|mp4)$
  • --delete-orphans โ€” deletes orphaned files during --check-orphans and --galaxy-install.
  • --status โ€” shows the status of files.

Output format:

statuscode gamename filename filesize filehash

Status codes:

  • OK โ€” File is OK
  • ND โ€” File is not downloaded
  • MD5 โ€” MD5 mismatch, different version
  • FS โ€” File size mismatch, incomplete download

See also the --no-fast-status-check option.

  • --save-config โ€” creates a config file with the current settings.
  • --reset-config โ€” resets config settings back to default.
  • --report [=arg(=lgogdownloader-report.log)] โ€” saves a report of downloaded/repaired files to the specified file. Default filename: lgogdownloader-report.log
  • --update-cache โ€” updates the game details cache.
  • --no-platform-detection โ€” doesn't try to detect supported platforms from the game shelf. It skips the initial fast platform detection and instead detects the supported platforms from game details, which is slower but more accurate. Genuinely useful when the platform identifier is missing for some games in the game shelf. Heads up: using --platform together with --list doesn't work with this option. ๐Ÿ’€
  • --download-file arg โ€” downloads files using fileid.

Format:

"gamename/fileid"
"gamename/dlc_gamename/fileid"
"gogdownloader://gamename/fileid"
"gogdownloader://gamename/dlc_name/fileid"

Multiple files:

"gamename1/fileid1,gamename2/fileid2,gamename2/dlcname/fileid1"

This option ignores all subdir options. The files are downloaded to the directory specified with the --directory option.

  • -o, --output-file arg โ€” sets the filename of the file downloaded with --download-file.
  • --cacert arg โ€” path to CA certificate bundle in PEM format.
  • --respect-umask โ€” do not adjust permissions of sensitive files.
  • --user-agent arg (=LGOGDownloader/3.18 (Linux x86_64)) โ€” sets the user agent.
  • --wine-prefix arg (=.) โ€” sets the wineprefix directory.
  • --cloud-whitelist arg โ€” include this list of cloud saves; by default all cloud saves are included.

Example: --cloud-whitelist saves/AutoSave-0 saves/AutoSave-1/screenshot.png

  • --cloud-blacklist arg โ€” exclude this list of cloud saves.

Example: --cloud-blacklist saves/AutoSave-0 saves/AutoSave-1/screenshot.png

  • --cloud-force โ€” download or upload cloud saves even if they're up-to-date. Also deletes remote cloud saves even if no saves are whitelisted. she's not asking, she's forcing ๐Ÿ’…
  • --enable-login-gui โ€” enables the login GUI when encountering reCAPTCHA on the login form.
  • --tag arg โ€” filters using tags. Separate with , to use multiple values.
  • --blacklist arg (=$XDG_CONFIG_HOME/lgogdownloader/blacklist.txt) โ€” filepath to the blacklist.
  • --ignorelist arg (=$XDG_CONFIG_HOME/lgogdownloader/ignorelist.txt) โ€” filepath to the ignorelist.
  • --directory arg (=.) โ€” sets the download directory.
  • --limit-rate arg (=0) โ€” limits the download rate to a value in kB. 0 = unlimited.
  • --xml-directory arg โ€” sets the directory for GOG XML files.
  • --chunk-size arg (=10) โ€” chunk size (in MB) when creating XML.
  • --platform arg (=w+l) โ€” selects which installers get downloaded.
    • Windows = w|win|windows
    • Mac = m|mac|osx
    • Linux = l|lin|linux
    • All = all

Set priority by separating values with ,. Combine values by separating with +.

Example โ€” Linux if available, otherwise Windows and Mac: l,w+m

  • --language arg (=en) โ€” selects which language installers get downloaded. See the LANGUAGES section for available values. All languages = all.

Set priority by separating values with ,. Combine values by separating with +.

Example โ€” German if available, otherwise English and French: --language de,en+fr

  • --no-remote-xml โ€” doesn't use remote XML for repair.
  • --no-unicode โ€” doesn't use Unicode in the progress bar.
  • --no-color โ€” doesn't use coloring in the progress bar or in status messages.
  • --no-duplicate-handling โ€” doesn't use the duplicate handler for installers. Duplicate installers from different languages get handled separately.
  • --no-subdirectories โ€” doesn't create subdirectories for extras, patches and language packs.
  • --curl-verbose โ€” sets libcurl to verbose mode.
  • --insecure โ€” doesn't verify the authenticity of SSL certificates.
bestie. no. this is genuinely risky, don't just leave it on because it makes the scary error go away ๐Ÿ˜ญ
  • --timeout arg (=10) โ€” sets the timeout for the connection. This is the maximum time in seconds that the connection phase is allowed to take.
  • --retries arg (=3) โ€” sets the maximum number of retries on a failed download.
  • --wait arg (=0) โ€” time to wait between requests (milliseconds).
  • --subdir-installers arg โ€” sets the subdirectory for installers. Templates:
    • %platform%
    • %gamename%
    • %gamename_firstletter%
    • %dlcname%
    • %gamename_transformed%
    • %gamename_transformed_firstletter%
    • %title%
    • %title_stripped%
    • %dlc_title%
    • %dlc_title_stripped%
  • --subdir-extras arg (=extras) โ€” sets the subdirectory for extras. See --subdir-installers for template values.
  • --subdir-patches arg (=patches) โ€” sets the subdirectory for patches. See --subdir-installers for template values.
  • --subdir-language-packs arg (=languagepacks) โ€” sets the subdirectory for language packs. See --subdir-installers for template values.
  • --subdir-dlc arg (=dlc/%dlcname%) โ€” sets the subdirectory for dlc. See --subdir-installers for template values.
  • --subdir-game arg (=%gamename%) โ€” sets the subdirectory for game. See --subdir-installers for template values.
  • --use-cache โ€” uses the game details cache.
  • --cache-valid arg (=2880) โ€” sets how long cached game details are valid (in minutes). Default: 2880 minutes (48 hours).
  • --save-serials โ€” saves serial numbers when downloading.
  • --save-game-details-json โ€” saves game details JSON data as-is to "game-details.json".
  • --save-product-json โ€” saves product info JSON data from the API as-is to "product.json".
  • --save-logo โ€” saves the logo when downloading.
  • --save-icon โ€” saves the icon when downloading.
  • --ignore-dlc-count [=arg(=.*)] โ€” sets a regular expression filter for games to ignore DLC count information. Ignoring DLC count info genuinely helps in situations where the account page doesn't provide accurate information about DLCs. ๐Ÿ™ˆ
  • --include arg (=all) โ€” selects what to download/list/repair.
    • Base game installers = bi|basegame_installers
    • Base game extras = be|basegame_extras
    • Base game patches = bp|basegame_patches
    • Base game language packs = bl|basegame_languagepacks|basegame_langpacks
    • DLC installers = di|dlc_installers
    • DLC extras = de|dlc_extras
    • DLC patches = dp|dlc_patches
    • DLC language packs = dl|dlc_languagepacks|dlc_langpacks
    • DLCs = d|dlc|dlcs
    • Basegame = b|bg|basegame
    • All installers = i|installers
    • All extras = e|extras
    • All patches = p|patches
    • All language packs = l|languagepacks|langpacks
    • All = all

Separate with , to use multiple values.

  • --exclude arg โ€” selects what not to download/list/repair. See --include for the option values.
  • --automatic-xml-creation โ€” automatically creates XML data after the download has completed.
  • --save-changelogs โ€” saves changelogs when downloading.
  • --threads arg (=4) โ€” number of download threads.
  • --info-threads arg (=4) โ€” number of threads for getting product info.
  • --progress-interval arg (=100) โ€” sets the interval for progress bar updates (milliseconds). Value must be between 1 and 10000.
  • --lowspeed-timeout arg (=30) โ€” sets the time in seconds that the transfer speed should be below the rate. Set this together with --lowspeed-rate for the transfer to be considered too slow and aborted.
  • --lowspeed-rate arg (=200) โ€” sets the average transfer speed in bytes per second that the transfer should be below during the time specified with --lowspeed-timeout for it to be considered too slow and aborted.
  • --include-hidden-products โ€” includes games that have been set hidden on the account page.
  • --size-only โ€” doesn't check the hashes of the files whose size matches that on the server.
  • --verbosity arg (=0) โ€” how chatty do you want this thing to be? levels are:
    • -1 = Less verbose ๐Ÿฆ‹
    • 0 = Default
    • 1 = Verbose
    • 2 = Debug (fr fr the firehose)
  • --check-free-space โ€” peeks at your free disk space before it starts downloading. responsible queen behavior ๐Ÿ’…
  • --no-fast-status-check โ€” babe it's saying don't use the fast status check. this makes --status much slower, but it's the only way to catch corrupted files, because it actually calculates the local file hash for all files. slow but thorough, no cap.
  • --trust-api-for-extras โ€” just trust that the API responses for extras are correct. handing over the aux cord, basically.
  • --interface arg โ€” do all your operations over a specific network interface ๐ŸŒˆ
  • --unit-format arg โ€” pick your unit format: IEC or SI. choose your fighter โœจ

Experimental ๐Ÿงช

okay bestie these are the galaxy ones, they said experimental, we're just relaying the message ๐Ÿ’€
  • --galaxy-install arg โ€” install a game using product id [product_id/build] or gamename regex [gamename/build]. the build (that's a build index or a build id) is used to select a build and defaults to 0 if you don't specify one. example: 12345/2 selects build 2 for product 12345.
  • --galaxy-show-builds arg โ€” show game builds using product id [product_id/build] or gamename regex [gamename/build]. build (build index or build id) is used to select a build. lists available builds if build is not specified. example: 12345/2 selects build 2 for product 12345.
  • --galaxy-download-cloud-saves arg โ€” download cloud saves using product-id [product_id/build] or gamename regex [gamename/build]. build (build index or build id) is used to select a build and defaults to 0 if not specified. example: 12345/2 selects build 2 for product 12345.
  • --galaxy-upload-cloud-saves arg โ€” upload cloud saves using product-id [product_id/build] or gamename regex [gamename/build]. build (build index or build id) is used to select a build and defaults to 0 if not specified. example: 12345/2 selects build 2 for product 12345.
  • --galaxy-show-cloud-saves arg โ€” show game cloud-saves using product id [product_id/build] or gamename regex [gamename/build]. build (build index or build id) is used to select a build and defaults to 0 if not specified. example: 12345/2 selects build 2 for product 12345.
  • --galaxy-show-local-cloud-saves arg โ€” show local cloud-saves using product id [product_id/build] or gamename regex [gamename/build]. build (build index or build id) is used to select a build and defaults to 0 if not specified. example: 12345/2 selects build 2 for product 12345.
  • --galaxy-delete-cloud-saves arg โ€” delete cloud-saves using product id [product_id/build] or gamename regex [gamename/build]. build (build index or build id) is used to select a build and defaults to 0 if not specified. example: 12345/2 selects build 2 for product 12345.
  • --galaxy-platform arg (=w) โ€” select platform ๐ŸŽฎ
    • Windows = w|win|windows
    • Mac = m|mac|osx
    • Linux = l|lin|linux
  • --galaxy-language arg (=en) โ€” select language. go check the LANGUAGES section for the available values, it's a whole buffet down there ๐ŸŒธ
  • --galaxy-arch arg (=x64) โ€” select architecture:
    • 32-bit = 32|x86|32bit|32-bit
    • 64-bit = 64|x64|64bit|64-bit
  • --galaxy-no-dependencies โ€” don't download dependencies during --galaxy-install. we're doing it solo, no entourage.
  • --subdir-galaxy-install arg (=%install_dir%) โ€” set the subdirectory for galaxy install. templates you can use:
    • %install_dir% = Installation directory from Galaxy API response
    • %gamename% = Game name
    • %title% = Title of the game
    • %product_id% = Product id of the game
    • %install_dir_stripped% = %install_dir% with some characters stripped
    • %title_stripped% = %title% with some characters stripped

and "stripped" means every character that doesn't match this list gets removed:

  • alphanumeric
  • space
  • - _ . ( ) [ ] { }
  • --galaxy-cdn-priority arg (=edgecast,akamai_edgecast_proxy,fastly) โ€” set the priority for the CDNs it uses. use --galaxy-list-cdns to see which CDNs are available, and set the priority by separating values with ",". ranking the girlies, iconic.
  • --galaxy-list-cdns arg โ€” list available CDNs for a game using product id [product_id/build] or gamename regex [gamename/build]. build (build index or build id) is used to select a build and defaults to 0 if not specified. example: 12345/2 selects build 2 for product 12345.
  • --galaxy-lowercase-path arg โ€” make the filepath lowercase for Windows game files ๐Ÿ”ก

๐ŸŒˆ LANGUAGES ๐ŸŒˆ

These are the languages you can pick with the --language and --galaxy-language options. pick your fave bestie ๐Ÿ’–

  • English = en|eng|english|en[_-]US
  • German = de|deu|ger|german|de[_-]DE
  • French = fr|fra|fre|french|fr[_-]FR
  • Polish = pl|pol|polish|pl[_-]PL
  • Russian = ru|rus|russian|ru[_-]RU
  • Chinese = cn|zh|zho|chi|chinese|zh[_-](CN|Hans)
  • Czech = cz|cs|ces|czech|cs[_-]CZ
  • Spanish = es|spa|spanish|es[_-]ES
  • Hungarian = hu|hun|hungarian|hu[_-]HU
  • Italian = it|ita|italian|it[_-]IT
  • Japanese = jp|ja|jpn|japanese|ja[_-]JP
  • Turkish = tr|tur|turkish|tr[_-]TR
  • Portuguese = pt|por|portuguese|pt[_-]PT
  • Korean = ko|kor|korean|ko[_-]KR
  • Dutch = nl|nld|dut|dutch|nl[_-]NL
  • Swedish = sv|swe|swedish|sv[_-]SE
  • Norwegian = no|nor|norwegian|nb[_-]no|nn[_-]NO
  • Danish = da|dan|danish|da[_-]DK
  • Finnish = fi|fin|finnish|fi[_-]FI
  • Brazilian Portuguese = br|pt_br|pt-br|ptbr|brazilian_portuguese
  • Slovak = sk|slk|slo|slovak|sk[_-]SK
  • Bulgarian = bl|bg|bul|bulgarian|bg[_-]BG
  • Ukrainian = uk|ukr|ukrainian|uk[_-]UA
  • Spanish (Latin American) = es_mx|es-mx|esmx|es-419|spanish_latin_american
  • Arabic = ar|ara|arabic|ar[_-][A-Z]{2}
  • Romanian = ro|ron|rum|romanian|ro[_-][RM]O
  • Hebrew = he|heb|hebrew|he[_-]IL
  • Thai = th|tha|thai|th[_-]TH

๐Ÿšซ BLACKLIST

$XDG_CONFIG_HOME/lgogdownloader/blacklist.txt

This one lets you name individual files that should not be downloaded, and should not even get mentioned as orphans. (if you want to ignore files during the orphan check instead, go look at IGNORELIST, bestie ๐Ÿซถ)

Each line in the file is one blacklist expression โ€” except empty lines and lines starting with #. the first few characters say what type of blacklist item it is and what flags it has. so far only regular expression (perl variant) is supported, so every line must start with the characters "Rp". after a space comes the expression itself. expressions get matched against the file path relative to whatever you set as --directory.

Example black list:

# used to store manually downloaded mods/patches/maps/, don't mention it
as orphans
Rp ^[^/]*/manual/.*
# included with every *divinity game, once is enough
Rp beyond_divinity/extras/bd_ladymageknight.zip
Rp divinity_2_developers_cut/extras/divinity_2_ladymageknight.zip

# extra 6GB is A LOT of space if you don't actually plan to mod your
game
Rp the_witcher_2/extras/the_witcher_2_redkit.zip
Rp the_witcher_2/extras/extras_pack_3_hu_pl_ru_tr_zh_.zip
Rp the_witcher_2/extras/extras_pack_2_fr_it_jp_.zip

๐Ÿ™ˆ IGNORELIST

$XDG_CONFIG_HOME/lgogdownloader/ignorelist.txt

Lets you name individual files that should not be mentioned as orphans. it's basically the same as blacklist but it only kicks in when checking for orphaned files. for the formatting deets, go see BLACKLIST, same rules ๐Ÿ’œ


๐ŸŽ€ PRIORITIES ๐ŸŽ€

Here's the tea: if you separate values with "," when using the language and platform switches, you turn on priority-based mode โ€” only the first matching one gets downloaded.

For example, setting language to fr+en means both French and English get downloaded (if they're available) for all games. Setting language to fr,en means the French version (and only that one) gets downloaded if it's available, and if it's not, then the English version gets downloaded instead.

And you're allowed to "stack" codes in the priority string if you need to. if you set language to es+fr,en, that means it'll download both the Spanish (es) and French (fr) versions if they're available, and the English (en) one only if none of French and Spanish are available. the way that works... obsessed ๐Ÿ˜ญ


๐ŸŒŸ AVAILABILITY ๐ŸŒŸ

The latest version of this distribution is available from

https://github.com/Sude-/lgogdownloader

โœจ FILES โœจ

Okay bestie, let's talk about where LGOGDownloader keeps all its lil files and secrets ๐Ÿ’–

  • $XDG_CONFIG_HOME/lgogdownloader/ โ€” this is the storage spot for configuration files and cookies. If $XDG_CONFIG_HOME isn't set, it'll use $HOME/.config/lgogdownloader/ instead. ๐Ÿช
  • $XDG_CACHE_HOME/lgogdownloader/xml/ โ€” storage for XML files. If $XDG_CACHE_HOME isn't set, it falls back to $HOME/.cache/lgogdownloader/xml/. ๐Ÿ“
  • $XDG_CONFIG_HOME/lgogdownloader/blacklist.txt โ€” this lets you specify individual files that should not be downloaded. It doesn't have to exist, but if it does exist, it must be readable to lgogdownloader. ๐Ÿšซ
  • $XDG_CONFIG_HOME/lgogdownloader/ignorelist.txt โ€” this lets you specify individual files that should not be mentioned as orphans. It has the same format and interpretation as a blacklist. It doesn't have to exist, but if it does exist, it must be readable to lgogdownloader. ๐Ÿ™ˆ
  • $XDG_CONFIG_HOME/lgogdownloader/gamespecific/gamename.conf โ€” a JSON formatted file that sets game-specific settings for gamename. Allowed settings are language, platform, include, ignore-dlc-count, subdirectories, directory, subdir-game, subdir-installers, subdir-extras, subdir-patches, subdir-language-packs and subdir-dlc. It must be in the following format:
              {
                  "language" : <string>,
                  "platform" : <string>,
                  "include" : <string>,
                  "ignore-dlc-count" : <bool>,
                  "subdirectories" : <bool>,
                  "directory" : <string>,
                  "subdir-game" : <string>,
                  "subdir-installers" : <string>,
                  "subdir-extras" : <string>,
                  "subdir-patches" : <string>,
                  "subdir-language-packs" : <string>,
                  "subdir-dlc" : <string>
              }
  • $XDG_CONFIG_HOME/lgogdownloader/transformations.json โ€” another JSON formatted file, this one is used to transform gamenames. It must be in the following format:
              {
                  <string> :
                  {
                      "regex" : <string>,
                      "replacement" : <string>,
                      "exceptions" : [
                          <string>,
                          <string>,
                      ],
                  },
                  <string> :
                  {
                      "regex" : <string>,
                      "replacement" : <string>,
                  },
              }

Member names are used to match the gamename (regex). Member names must be unique. For example, if the file contains 2 rules with "^x" then only the last one is applied. However, if you really want multiple different rules for everything starting with "x", then adding wild wildcard matches makes them unique ("^x", "^x.*", "^x.*.*"). If it matches, then regex is used for the actual replacement using the value in replacement. "exceptions" is an optional array of gamenames excluded from the rule. These are matched exactly, no regex. Example: match all games beginning with "b" and if they end with "_the" then remove "_the" at the end and prefix it with "the_" with exception of "blackwell_epiphany_the":

              {
                  "^b" :
                  {
                      "regex" : "(.*)_the$",
                      "replacement" : "the_\\1",
                      "exceptions" : [
                          "blackwell_epiphany_the",
                      ],
                  },
              }

That's all the file tea! ๐Ÿ’…


And that's a wrap on LGOGDownloader 3.18, dated 2025-11-03! Catch you in LGOGDOWNLOADER(1) ๐Ÿ‘‘โœจ

๐Ÿ“ฆ where this page comes from