All notable changes to this project will be documented in this file. The format is based on Keep a Changelog.
Version number 1.MINOR.PATCH, increments:
- MINOR version when relevant functionality was added, removed, changed
- PATCH version on bug fixes, small aesthetic changes, config changes
greadbook()
works with the new (and old) Goodreads book page, now- some unit test code was broken
After months, a necessary maintenance update without new features.
- many tools were broken due to the new Goodreads OpenID login procedure
(#38,
#39),
login (
glogin()
) should work now, unit tests are passing again - "Warning: next input will be in plaintext"
on password prompt on some systems without Term::ReadKey module.
If important to you, run
make deps
. - some unit test code was broken
cron.monthly
wasn't used for a long time so I don't want to maintain it any longer
This release does not add any new features. However, some major internal renewals took place.
Note: This will break your existing Toolbox installation.
Users have to run make deps
and make installdirs
after updating.
-
Perl5 module dependencies are not installed system-wide anymore. Now these go into the project's local lib-directory. This helps non-Docker users to remove the toolbox with less residue. Also easens installation without root-privileges, given that Perl's
local::lib
module is installed. -
replaced outdated Perl5 module
WWW::Curl::Easy
withHTTP::Tiny
. This should fix Curl-based installation problems on newer systems; -
recentrated.pl:
- no longer saves to
/var/db/good
but to./list-out/recentrated/
- log-file written to
./list-out/recentrated/log.txt
now
- no longer saves to
-
Docker:
- image is based on Alpine Linux now
- webserver webfs was replaced with thttpd
- login didn't worked anymore due to HTML changes on a Goodreads webpage
user_rating
bug when extracting own(?) shelf; shelves of other users still work with the old code
- updated unit tests
- new
greadcomments()
function in the Toolbox library to extract a user's comments on reviews, status updates etc.
- migrated from DockerHub to GitHub Packages (ghcr.io); DockerHub no longer supports GitHub integration for free (for new accounts)
- a larger review text is indicated by at least 500 characters now (was 160 characters)
- Makefile offers a Github Packages target
- clearer error message in a CAPTCHA situation
This is primarily a maintenance update after a long time.
- similaraut.pl:
- failed to load authors because the source markup changed after the last version
- some improvements on the looks of all HTML reports
- similarauth.pl:
- new
--minseen
parameter to drop authors that are not similar to at least N other authors; reduces the number of authors and size of the output file
- new
- recentrated.pl:
--textonly
option also drops smaller texts now, because the flag's purpose is to cut down "noisy" e-mails with too many ratings and smaller reviews are almost always useless too ("loved it so much!"). Without this flag, [**** ], [TTTT ] and [tttt ] are shown as usual.
- lib/Goodscrapes.pl:
- greadreviews() parameter
text_only
was renamed totext_minlen
- greadreviews() parameter
- possible cross-site scripting attacks (XSS) against our HTML reports by adding Javascript to reviews, usernames, book titles on the Goodreads website. This software is too insignificant to be a real target, but you never know.
Dockerfile
: Docker is a popular software that allows users to run apps in an isolated container with all dependencies included/matched; there are make-targets for Docker, now, seemake help
. The container runs a simple web-server so that a host can access any HTML report generated within the container. (#30)
- all programs write to the new
list-out
directory by default and not to the main directory any longer. This simplifies sharing files between a Docker container and its host (using Docker volumes or a httpd). - the
dict
directory was renamed tolist-in
,dict/default.lst
was renamed tolist-in/dict.lst
- savreviews.pl:
- "Undefined subroutine &Goodscrapes::max called at Goodscrapes.pm"
- "Use of uninitialized value $uid in concatenation (.) or string at Goodscrapes.pm" was caused by "NOT A BOOK" books, which actually have different book IDs but lack author info etc
- all programs support the
--ignore-errors
option which disables retries and let a program keep going on despite of errors. This is useful when Goodreads has a bad day with permanent timeouts or other problems which often only affect a few resources while most of them can be obtained without problems. You also can re-run a program without this option, so that missing resources are loaded from the web again (and everything else from your local cache)
- developers: function
gsetcache()
was removed in favor ofgsetopt( cache_days => int )
- friendnet.pl:
- missing ");" at the end (syntax error)
- friendrated.pl:
- poor table-caption in authors-report file
- friendrated.pl:
- new column 'GR Avg' with average rating by the Goodreads community
- git-hooks (developers): automatically check syntax of user-scripts and run library unit-tests before pushing changes to GitHub
- friendrated.pl:
- output-filenames include stars-range and number of favorers
- covers and titles are not in the same column any more; each its own
- renamed "doc" folder to "help"
- login problems due to changed GR source markup
- year numbers < 1000 (including negative B.C.) were extracted as
0
- new program: friendnet.pl - saves your social network to CSV files for further processing with social network analysis tools (#27)
- friendrated.pl:
- table columns in HTML output are sortable in the web-browser, now
- moved all program documentation to the new
doc
-directory - friendrated.pl:
- renamed option
--hate
to--hated
- books-table and authors-table are no longer in the same report file: each has its own file now
- option
--outfile
changed to--outdir
- renamed option
- report.css was removed in favor of datatables.net libs (loaded from CDN)
- search.pl:
- Titles were missing in the generated HTML file due to changes in the source markup
- friendrated.pl:
--hate
option to list most hated books among the members you follow (#24)
- recentrated.pl:
- allows login and can be run against non-public member accounts
- friendrated.pl:
--rated
option changed to--minrated
- recentrated.pl:
- all option names and positional parameters changed (see --help)
- "Unescaped left brace in regex is illegal here in regex [...] line 1852" error broke programs on some Perl version
- friendrated.pl:
- new
--toread
option lists the most wished-for books among the members you follow (program checks the "to-read" shelves instead of the "read" shelves and sets--rated=0
)
- new
- recentrated.pl:
- indicate active text-only option in mail body
- indicate tweet-size text reviews by [tttt ] versus [TTTT ]
- similarauth.pl: showed 0 authors all the time because the source markup was changed by GR
- New CPAN dependencies, run Makefile or just run:
$ sudo perl -MCPAN -e "install IO::Prompter"
- some programs no longer accept the Goodreads user-ID as first positional
parameter but expect the user's login email address;
you can still check another user with the
--userid
option:- likeminded.pl
- friendrated.pl
- friendgroup.pl
- similarauth.pl
- Users don't have to extract the Goodreads cookie from their web-browsers anymore. Programs which require a cookie can obtain it themselves now, given the user's login email address and password. This should render the toolbox more accessible to its users (#25)
- recentrated:
--textonly
option to skip ratings without text
- "Undefined subroutine &WWW::Curl::Easy::CURLOPT_TCP_KEEPALIVE" (#20)
- savreviews.pl:
- writes multiple files at once, with one file per star-rating (#14)
- reviews contain review date too
--outfile
option changed to--outdir
- friendrated.pl:
- second table in document with most read authors
- savreviews.pl:
- prints statistics with number of reviews per year
- likeminded.pl:
--similar
option was renamed to--common
- final report does not rank members by the number of common authors only but includes library-sizes (#18)
- final report does not list private accounts anymore
- generated HTML-reports now include
report.css
for styling
- "Experimental keys on scalar is now forbidden" if Perl 5.20+
- likeminded.pl:
- new option
--maxauthorbooks
to limit the amount of books per author since some authors list more than 2000 books; default is 600 most popular books
- new option
- friendrated.pl:
- more filters, e.g., "books with less than 1000 ratings and published between 1950 to 1980 and ..." (#16)
- if Goodreads shows an "unexpected error", all programs retry multiple times but continue in any case; critical conditions such as "maintenance mode", "over capacity", connection issues etc are handled as usual (continuous retries or user CTRL-C)
- missing results in search.pl and other tools
if
num_ratings
ornum_reviews
< 100 due to regex mistake, which existed for 3 months (since v1.9.0)
- new program: friendgroup.pl (#6)
- cookie validity is tested against Goodreads at the start of a program (using cookies)
- one
make
target only for all Toolbox programs (simplifies maintenance and usage)
- wrong value in
num_ratings
ornum_reviews
if N>=1,000,000
- new program: savreviews.pl
- multiple
--shelf
options:--shelf=music --shelf=science
(#10) --dict
options for custom dictionaries- added words-based dictionaries to
./dict/
folder (perform better than Ngram dicts)
- search: exit condition bug
- new program: search.pl
- likeminded.pl:
- dictionary-based reviews-search (builtin Ngrams dict) (#9)
- new program: similarauth.pl
- XML/XSLT support dropped (YAGNI, less dependencies)
- likeminded.pl:
- compares authors now, not books (see likeminded.md for details)
- all programs write to HTML files now, no XML/XSLT any longer
- new program: likeminded.pl
- recentrated:
- removed reviewer names from mail (noise)
- indicates text reviews with
[TTTT ]
vs[**** ]
- shorter URLs (mail clients recognize URLs without protocol too)
- new program: friendrated.pl
- new program: recentrated.pl
- new program: amz-tradein.pl