/Enhance-GoodReads-Export

Small tool to add additional data to .csv library exports from goodreads

Primary LanguagePythonMIT LicenseMIT

Enhance GoodReads Export

A small tool to add additional data to a GoodReads library export file (.csv) by parsing the website.

Currently adds reading dates (start and finish, including re-readings) and genres.

When analyzing the export file in Bookstats this data is used to show additional / more accurate graphs (e.g. favorite genres, better pages / day stats,...).

Currently only works with separate GoodReads login (i.e. email and password, not via e.g. facebook).

For Windows users there is a standalone executable version with a basic graphical user interface.

All others can use the script ("enhance_goodreads_export.py") directly. This requires python 3.6 and the dependencies specified in "requirements.txt".

Usage instructions for the command line version (output of "python enhance_goodreads_export.py --help"):

usage: enhance_goodreads_export.py [-h] [-c CSV] [-u UPDATE] [-e EMAIL]
                                   [-p PASSWORD] [-f] [-g]

Adds genre and (re)reading dates information to a GoodReads export file.

optional arguments:
  -h, --help            show this help message and exit
  -c CSV, --csv CSV     path of your GoodReads export file (the new columns
                        will be added to this file)
  -u UPDATE, --update UPDATE
                        (optional) path of previously enhanced GoodReads
                        export file to update (output will still be written to
                        the file specified in --csv)
  -e EMAIL, --email EMAIL
                        the email you use to login to GoodReads
  -p PASSWORD, --password PASSWORD
                        your GoodReads Password
  -f, --force           process all books (by default only those without genre
                        information are processed)
  -g, --gui             show GUI

The tool adds two additional columns to the .csv file: "read_dates" and "genres" Their format is as follows:

  • read_dates: "START_DATE_1,END_DATE_1;START_DATE_2,END_DATE_2;..." where the dates are in YYYY-MM-DD format
  • genres: "GENRE,SUBGENRE,SUBSUBGENRE,(...)|NUM_USERS;GENRE,..." where NUM_USERS is the number of users that have added the book to that shelf