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

Simple downloader written in C++ It uses libcurl for downloading, libhtmlcxx for html parsing, libtinyxml for xml parsing, librhash for verifying md5 hashes, libjsoncpp for JSON parsing and libboost for regex and filesystem functions

0.12 Fixed login with email/password containing some special characters Added verbose option. Useful for debugging Changed default cookie path to ~/.gogdownloader/cookies.txt Dropped Windows support now that GOG has new working downloader

0.13 Re-use one curl handle for all operations Fix buffer problems in cookie path caused by strcat and getenv Makefile changes by mgol (don't make elf objs as they are unnecessary) Use pkg-config for CFLAGS and LDFLAGS in Makefile

0.14 - Parse download details from xml files used by the official GOG Downloader (added dependency: libtinyxml) - Get MD5 hash for downloaded files (added dependency: libcrypto++) - Verify file integrity if xml data is available - Verification is turned off by default. You can activate it with "-v" - Verbose mode is now activated with "-V"

0.15 - Added repair mode

0.16 - Use getopt for command line interface - Merged repairFile() with getFile()

0.19 - Change progressbar in createXML to use the same progressbar as progress_callback - Fixed bug where specifying cookie location created/updated 2 cookie files - Fixed bug when using https urls to download single file

0.20 - Check that cookie file exists - Silence a warning about freopen - Changed libcrypto++ to librhash which is much smaller library - Some small code changes to make it easier use other hash algorithms if needed in the future

0.21 - Added some comments to code - Replaced htmlparser class with a function - Fixed bug with filtering system that caused downloading of all links if filter didn't match anything

0.22 - Fixed downloading games from amazonaws instead of edgecastcdn - Changed the downloader to use the shelf view (should fix the extras not showing problem)

0.23 - Make downloader work with new account page layout

0.24 - Include unistd.h : fixes compiling on Arch Linux - Use list view to get shelf data : fixes bug with downloader not showing all games because shelf view is loaded incrementally using ajax

0.25 - Incorporated the changes by mgol - Fixed the bug with downloader not showing all games because of ajax calls - Some Makefile changes - Use libjsoncpp for JSON parsing - Show progress of getting shelf data instead of just printing dots

0.30 - Removed --verify as unnecessary option (--repair does practically the same job and is more useful) - Some minor changes to regex in cover downloading - Check for update notifications (--update-check)

Added simple resume support - If you have a file with same name it will seek to the end of file and continues downloading - It doesn't verify any data so it's possible to corrupt already downloaded files if the file is different (newer/older version) Added filtering support to URL list Added batch download support with filtering Added command line interface

Is this for Linux systems or would it work on OSX/Windows too? (theoretically, even if you haven't tested it yourself - like you haven't with Windows but you seem to imply it would theoretically work there too)

crazy_dave: Is this for Linux systems or would it work on OSX/Windows too? (theoretically, even if you haven't tested it yourself - like you haven't with Windows but you seem to imply it would theoretically work there too)

It should be possible to compile this on Windows and OSX as both libraries used (curl and htmlcxx) support them

edit: managed to compile it on Windows but for some reason CURLINFO_REDIRECT_URL returns garbage :(

Tried to cross-compile with mingw32 from Linux - Higher ASCII characters in URLs didn't work (for example King's Bounty) - It was able to get filename when running with wine but not on Windows where it returned corrupted data

So I tried mingw32 compile from Windows host but it had the same problems

So it was time to install Cygwin and test if I'd have better luck with it and it was a success! :)

Fixed login with email/password containing some special characters Added verbose option. Useful for debugging Changed default cookie path to ~/.gogdownloader/cookies.txt Dropped Windows support now that GOG has new working downloader

I tried to compile it on ubuntu 9.10 and it didn't work out. First, libhtmlcxx is not available as a package. I downloaded and installed it. No issues. Compilation of gogdownloader goes well but at run time it returns:

fmartins: I tried to compile it on ubuntu 9.10 and it didn't work out. First, libhtmlcxx is not available as a package. I downloaded and installed it. No issues. Compilation of gogdownloader goes well but at run time it returns:

Sude: If you know C/C++ feel free to implement more features and fix bugs Currently it doesn't do any error checking and I haven't tested if it compiles on Windows All downloads are saved to current working directory cookies.txt (Netscape format) containing your GOG cookies must be in current working directory

I was wondering if you could state a license for the project? Personally I'm a fan of the MIT license, but whatever floats your boat.

0.13 Re-use one curl handle for all operations Fix buffer problems in cookie path caused by strcat and getenv Makefile changes by mgol (don't make elf objs as they are unnecessary) Use pkg-config for CFLAGS and LDFLAGS in Makefile

0.14 - Parse download details from xml files used by the official GOG Downloader (added dependency: libtinyxml) - Get MD5 hash for downloaded files (added dependency: libcrypto++) - Verify file integrity if xml data is available - Verification is turned off by default. You can activate it with "-v" - Verbose mode is now activated with "-V"

Originally I was going to use librhash for getting md5 but apparently packages are not yet available in some distributions (Ubuntu) so I used libcrypto++ which is much bigger library Here's a diff you can apply if you want to use librhash wget https://sites.google.com/site/gogdownloader/rhash.diff patch -p0 < rhash.diff

Chunk info isn't used anywhere at the moment but it could be used to implement a repair mode where the program would repair corrupted files by comparing md5 hashes of the chunks and then downloading the corrupted chunks again Another use for this info could be multithreaded downloading using pthreads or curl multi interface