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.monthlywasn'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::libmodule is installed. -
replaced outdated Perl5 module
WWW::Curl::EasywithHTTP::Tiny. This should fix Curl-based installation problems on newer systems; -
recentrated.pl:
- no longer saves to
/var/db/goodbut to./list-out/recentrated/ - log-file written to
./list-out/recentrated/log.txtnow
- 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_ratingbug 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
--minseenparameter 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:
--textonlyoption 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_onlywas 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-outdirectory 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
dictdirectory was renamed tolist-in,dict/default.lstwas 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-errorsoption 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
--hateto--hated - books-table and authors-table are no longer in the same report file: each has its own file now
- option
--outfilechanged 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:
--hateoption 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:
--ratedoption 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
--toreadoption 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
--useridoption:- 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:
--textonlyoption 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
--outfileoption 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:
--similaroption 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.cssfor styling
- "Experimental keys on scalar is now forbidden" if Perl 5.20+
- likeminded.pl:
- new option
--maxauthorbooksto 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_ratingsornum_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
maketarget only for all Toolbox programs (simplifies maintenance and usage)
- wrong value in
num_ratingsornum_reviewsif N>=1,000,000
- new program: savreviews.pl
- multiple
--shelfoptions:--shelf=music --shelf=science(#10) --dictoptions 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