mateusz-bak / openreads

A mobile books tracker written in Flutter that respects your privacy.
GNU General Public License v2.0
872 stars 50 forks source link

[FEATURE_REQUEST] Fetch & Replace book data process #541

Open ELowry opened 5 months ago

ELowry commented 5 months ago

Is your feature request related to a problem? Please describe.

I have imported my Goodreads library, and it was mostly successful; however, the title format and ISBN values used by Goodreads are nowhere near clean or reliable:

Also, there are a significant number of books that were imported without an ISBN, and for which the automatic cover retrieval was impossible; however, a good portion of these are actually on the Open Library database, and I am amble to find them manually.

I have started cleaning up the collection by manually searching for each title (via the Open Library search), and adding them in. For over 300 books, this is likely to take me hours, and it is possible that information that was included in the import will be lost in the process.

Describe the solution you'd like

The simplest solution to this problem that I can come up with would be some way to semi-automatically update a book's contents based on what is found on Open Library. (Similar to what is suggested in #54)

Ideally, a button would be added to the book editing page (or better, the ⋮ menu in the top right directly) to "Update from Database" or something along those lines. This would first open up an Open Library search using the book's title (maybe with tabs at the top to switch to a search using the book's author). This page would function like the existing book search, but the interaction button would open up the following page instead:

The main page could look something like this: image Here, all information is laid out side-by-side with the previously registered info on the left, and the new info on the right. Missing fields don't need to be included, and if only one side has the info, it should be hi lighted by default.

After selecting the values to use (if the text elements are editable fields, this would allow for manual correction), a validation button could be pressed (at the bottom of the page; or a floating checkbox in a corner, for example) to confirm. This would "merge" the information based on user selection.

Describe alternatives you've considered

What I am suggesting would be a "best case scenario"; but I am certain there are many ways to approach this issue.

A nice option could be to have this process automated across multiple books at once (or even the whole library). One way to do this would be to:

  1. Select which source to prefer (original VS Open Library)
  2. Select whether to overwrite existing data or only fill in missing data.
  3. Then the app goes through each book and lists the "best find" search result, letting the user either validate the selection, look for the book manually, or leave it blank so nothing gets imported (if the book isn't on Open Library, for example).

This would effectively allow people to get all the data for a whole collection updated in minutes instead of multiple hours in some cases.