github kikootwo/ReadMeABook v1.2.12

4 hours ago

🎉 Release v1.2.12

If you might roll back to v1.2.11: this release adds two database columns. Before downgrading, turn off "Check Watched Lists" in Admin > Jobs and remove or switch any "New releases only" watches, or the older build requests their whole backlog.

Features:

  • ✅ watch an author or series for new releases only
    • #302
    • #451
    • watching now asks: Entire catalog (the default, as before) or New releases only, which requests books released from today on (preorders count) and skips undated books. Each watch can be changed later from the Profile cards.
    • adding one watch now checks only that author or series, not every watch
  • ✅ the automatic ebook fetch skips a book whose folder already holds an ebook
    • #313
    • #496
    • covers the auto-grab after an audiobook import and the nightly missing-ebooks job. A lone PDF booklet, or a folder that another book also uses, does not count. Manual Fetch Ebook, Interactive Search and Manual Import are unchanged.
    • this is one part of #313; importing ebook files already on your system is still open there

Fixes:

  • ✅ automatic search stops grabbing the wrong book

    • #223
    • #459
    • stricter title and author matching: numbers in the title must match, author names match as whole words, and one-word titles are checked more strictly. Subtitles after a colon and author initials match better. Interactive search still lists every result.
  • ✅ automatic search skips a release numbered as another book of the same series

  • ✅ automatic search skips releases far too small for the book's runtime

  • ✅ search and ranking handle titles with apostrophes

  • ✅ ranking treats text after ". " or " - " in a request title as an optional subtitle, like text after a colon

    • #466
    • #494
    • a release that names a different book after " - " still loses to the requested one
  • ✅ automatic search compares titles and authors written in non-Latin scripts instead of matching every release

    • #424
    • #452
    • Cyrillic, Greek, Chinese, Japanese, Korean, Arabic, Hebrew, Thai and other scripts are now compared letter by letter, so automatic search can't grab an unrelated book
  • ✅ bulk import keeps books apart when their tags are in non-Latin scripts

  • ✅ bulk import reads all-digit ASINs in folder names

    • #280
    • #485
    • the ASIN is used when the Audible title fits the folder name
  • ✅ Manual Import from an ebook request imports the ebook and leaves the audiobook alone

    • #278
    • #492
    • the file picker lists ebook files, and .azw is now recognized as an ebook
  • ✅ interactive ebook search lists results over 20 MB

    • #323
    • #487
    • automatic search still skips them
  • ✅ Interactive Search from My Requests picks for that request instead of failing with "already requested"

  • ✅ series search uses the Audible catalog and says when Audible can't be reached

    • #450
    • #456
    • it answers within about 8 seconds. When Audible fails, the page shows "Couldn't get results from Audible" with Try again instead of "No series found".
  • ✅ book details show the series for books where Audnexus has none

    • #446
    • #447
    • the series comes from the Audible catalog, so {series} folders and series tags are filled in for new requests. Books already in the library keep their folder and tags.
  • ✅ author pages keep loading past a page with no matching books

    • #310
    • #465
    • watched authors set to Entire catalog also read past such a page
  • ✅ shelf sync and watched lists no longer re-create cancelled requests, and back off after failures

    • #409
    • #448
    • a failed request that added nothing to the blocklist is retried after 1, 3, 7 and 14 days, then every 30 days, instead of on every sync. Pressing Request still retries at once.
  • ✅ a book removed from the library frees its request

    • #214
    • #471
    • the request shows as failed "Removed from library" once no audio is left in its folder. Shelf sync and watched lists won't request it again, while a manual request still can.
  • ✅ qBittorrent: hybrid (v1+v2) torrents and base32 magnets are tracked under the right ID

    • #422
    • #455
    • a torrent that is already in qBittorrent is not added again and is not treated as RMAB's
  • ✅ Transmission and Deluge track torrents added from base32 magnet links

  • ✅ Deluge finds a torrent whatever the letter case of its stored hash

    • #460
    • #461
    • the check that keeps a torrent another request still uses ignores letter case too
  • ✅ qBittorrent puts RMAB's downloads in the category folder when the default Torrent Management Mode is Manual

  • ✅ seeding cleanup removes a torrent shared by several requests once all of them are finished and done seeding

    • #283
    • #464
    • deleting a request still keeps a torrent another active request uses
  • ✅ SABnzbd: a duplicate NZB no longer fails the request, and a retried upload is not added twice

  • ✅ folder and file names stay within the 255-byte filesystem limit

    • #264
    • #473
    • long non-Latin titles are cut by bytes, not characters, keeping the extension and any " - N" whole. Names that already fit are unchanged.
  • ✅ ebook and direct download names stay within the 255-byte limit

  • ✅ multi-file request downloads keep every file at the top of the zip under its full name

  • ✅ library scans no longer fail when two jobs add the same book at once, and startup clears leftover jobs of deleted schedules

  • ✅ the Audiobookshelf connection test says why it could not connect

    • #221
    • #486
    • it names the cause (connection refused, DNS, timeout or TLS) and the host and port. A server URL ending in /api gets a hint to remove it.
  • ✅ a deleted request no longer accepts a torrent pick, a search or an approval

  • ✅ GET /api/requests/:id no longer returns 500 for a request with a selected download

  • ✅ the admin dashboard's user count leaves out deleted users, matching the Users page

  • ✅ account checks on sign-in, sessions and API routes are applied the same way everywhere

    • #472
    • #475
    • #477
    • #481
    • #483
    • #484
    • #489
    • admin sign-in, admin job routes, author and series pages, browse and search, and download links now check that the account still exists, is still allowed in and still has access. Sessions and API tokens stop working for a pending or rejected account, and admin access follows a role change on the next request.

    Upgrade:

    docker pull ghcr.io/kikootwo/readmeabook:latest
    docker compose down
    docker compose up -d

What's Changed

  • fix: fill a book's series from the Audible catalog when Audnexus has none by @kikootwo in #447
  • fix: automatic re-requests skip cancelled requests and back off after failures by @kikootwo in #448
  • feat: watch authors and series for new releases only by @kikootwo in #451
  • fix: match titles and authors written in non-Latin scripts by @kikootwo in #452
  • fix: track qBittorrent hybrid torrents and base32 magnets under the right ID by @kikootwo in #455
  • ci: install the pinned static ffmpeg in PR Tests instead of apt by @kikootwo in #454
  • fix: keep bulk import books apart when their tags are in non-Latin scripts by @kikootwo in #453
  • fix: search series through the Audible catalog API and show failures by @kikootwo in #456
  • fix: Transmission and Deluge track base32 magnet torrents under the right hash by @kikootwo in #458
  • fix: Deluge lookups and the shared-torrent guard ignore the letter case of a hash by @kikootwo in #461
  • fix: GET /api/requests/:id returns 200 for requests with a selected download by @kikootwo in #462
  • fix: automatic search stops grabbing the wrong book (stricter title and author matching) by @kikootwo in #459
  • fix: author pages keep loading past a page with no matching books by @kikootwo in #465
  • fix: seeding cleanup removes a torrent shared by finished requests by @kikootwo in #464
  • fix: qBittorrent uses the RMAB category's save path in Manual mode by @kikootwo in #467
  • fix: admin dashboard and local-login checks skip deleted users by @kikootwo in #468
  • fix: interactive search from My Requests picks for that request by @kikootwo in #463
  • fix: admin sign-in applies the same account checks as the regular sign-in by @kikootwo in #472
  • fix: folder and file names stay within the 255-byte filesystem limit by @kikootwo in #473
  • fix: a book removed from the library frees its request by @kikootwo in #471
  • fix: search and ranking handle titles with apostrophes by @kikootwo in #469
  • fix: admin job routes use the same session checks as the other admin routes by @kikootwo in #475
  • fix: signed-in sessions and tokens follow the account's approval status by @kikootwo in #477
  • fix: a deleted request no longer accepts a torrent pick or a search by @kikootwo in #476
  • fix: automatic search skips releases too small for the book's runtime by @kikootwo in #479
  • fix: ebook and direct download names stay within the 255-byte limit by @kikootwo in #478
  • fix: author and series catalog routes check the account like the other signed-in routes by @kikootwo in #481
  • fix: admin checks use the account's current role by @kikootwo in #483
  • fix: automatic search skips releases numbered as another book of the series by @kikootwo in #482
  • fix: download links check the account like a sign-in does by @kikootwo in #484
  • fix: bulk import reads all-digit ASINs in folder names, confirmed by the catalog title by @kikootwo in #485
  • fix: the Audiobookshelf connection test says why it could not connect by @kikootwo in #486
  • fix: interactive ebook search lists results over 20 MB by @kikootwo in #487
  • fix: library scans survive a duplicate insert, and startup removes repeat jobs of deleted schedules by @kikootwo in #488
  • fix: browse and search routes add request details only for a checked account by @kikootwo in #489
  • chore(deps): move request downloads to archiver 8 and keep zip entry names flat by @kikootwo in #491
  • docs: the size score gives full points from about 140 kbps, not 64 by @kikootwo in #493
  • fix: Manual Import from an ebook request imports the ebook and leaves the audiobook alone by @kikootwo in #492
  • fix: SABnzbd duplicates no longer fail the request, and a retried upload is not added twice by @kikootwo in #480
  • fix: ranking treats text after ". " or " - " in a request title as an optional subtitle by @kikootwo in #494
  • fix: an ebook already in the audiobook's folder stops the automatic ebook fetch by @kikootwo in #496
  • chore: release v1.2.12 by @kikootwo in #505

Full Changelog: v1.2.11...v1.2.12

Don't miss a new ReadMeABook release

NewReleases is sending notifications on new releases.