Bookplayer: Show and edit book details

Created on 13 Oct 2018  ·  13Comments  ·  Source: TortugaPower/BookPlayer

It would be great to add the ability to edit the file info like:

  • Author name
  • book title
  • cover photo (from library and from a web link)

Edit by @pichfl
As we already have this issue, I'm not creating another from the card in our backlog. Not only should we allow for editing, but also for display. Especially as some people will fill out many IDE3 fields with useful metadata such as descriptions, back-cover stories and so on.

enhancement help wanted

Most helpful comment

I had opened a feature request issue for series management a while back, and at the time I had indicated interest in possibly helping on this project, but didn't feel my Swift skills were up to the task of working on someone else's code yet.

I'm still a little uncertain on that front, but as part of my own audiobook library management suite project that is in the works, I've created tagging libraries for MP3 and MP4. Why not use TagLib or AVFoundation or something similar? Because there are no comprehensive wrappers for TagLib in Swift, and AVFoundation won't won't edit ID3 metadata without re-encoding the entire file.

My goals were pretty straightforward: It should be able to edit metadata and chapter data (for MP3 as well as MP4) without touching the audio. It's taken me the better part of six months, but I've finally got working libraries, and since I think this would help in your goal of adding metadata editing features to BookPlayer, I thought you might want to check them out.

There are three libraries at the moment:

SwiftTaggerMP4, SwiftTaggerID3, and SwiftTagger, which simply combines those two into a single package and enables you to use the same tags, regardless of whether your file is an MP3 or MP4, by choosing which library to use for you, and occasionally creating freeform/user-defined tags if one tag exists for one format but not for the other.

I'm also working on an AudiobookTagger library which will refine SwiftTagger down to just the metadata that is relevant to audiobooks, but it's not quite ready yet. I anticipate making it public soon, however.

If any of this sounds like something that would help you implement this feature, feel free to use it, or let me know how I may help you implement it. Thank you.

All 13 comments

🤔 This could be implemented in two steps,

  • The first being to have a modal viewcontroller with the book info, something like: (sorry about the rough drawing)
    img_7508
    This view could be accessed via either swiping the book cell and revealing an option, or inside the player view as an option inside the 'more' button (not sure about this last one though)
  • The second step would be letting the user edit that info and when saving (from what I've read), exporting the existing book file into a new one with the new metadata. This would mean that the identifier/hash of the file would change, so a new book instance would be needed to take the place of the old one.

We're currently with our hands full for the next release, but, we'd be more than glad to help out anyone who wants to tackle this feature 👌

I'm closing this feature and moving it into our 'later' column in our roadmap to keep our focus on the next release. Please feel free to continue the conversation though 👍

This matches with the "media details" note I put into the Roadmap some time ago and I think it would make a very neat addition to BookPlayer. We should definitely put it in both the "more" menu of the Player as well as the swipe menu. (In fact one could argue this should be true for everything in the "more" menu).

Writing these details back to the original files won't be an easy task especially if we want to support all formats, which can make this small feature rather large.

I suggest we only support updating the meta data inside BookPlayer. Text edit and selecting a picture from your library. No file download inside BookPlayer, if you want to use a picture from the web you can use Safari to download it.

If someone is willing to help us complete this please message me here so I can provide a full UI mockup.

This might be the place for this: I would love this info, or at least the length of the book, available from the index (rather than having to start the book to engage the "More" UI element). Basically when choosing my next book I'd love to be able to at _least_ compare lengths, and if possible read descriptions etc, without having to pseudo-start each book to view that information.

We could put the duration in the cell but I'm not sure how it'll affect our overall design line 🤔, I'd have to defer to @pichfl on this one. To alleviate what you're mentioning, we could also have a sort option based on a book's duration

Maybe not reliably true but it _feels_ like there's room on the line with the author to squeeze in the running time. Again, though, there are other options, like making the Info accessible from the index—maybe through swipe-right, which currently does nothing?

🤔 maybe not a swipe-right, but a drag-right which would reveal that info and when released it'll snap back in place (like revealing the time of the bubble in iMessage)

EDIT
due to the duration string not being small, yes maybe a swipe-right would be more appropriate

@bensaufley you came to the right place 😄

There is place for this in the library if you think of iPhone XS and a book with a short author name.
Looking at the same screen with an author team and on iPhone SE gives a vastly different picture:
image

So to make room for additional meta requires a bit more than just squeezing it in. But I'm intrigued. I think having the length of a book or playlist in your Library is not only a valid case, but is something we should consider as something that makes the Library more than just a list of items.

@GianniCarlo dragging and swiping are off limits, at least to me. To the left will provide a menu of actions in the future, to the right should start batch edit.

I think this is something that we should just put in, but go to the drawing board and find out how we can use the available estate while keeping the screen elegant and not overcrowded. Well, we as in I should get drawing. 🏃

Edit
After reading my own comment, I realized this will most likely provoke a new issue about the Library.

yeah I was thinking how swiping to the right will affect the batch edit 🤔. Agreed then, new design incoming 😁

@pichfl cool! FWIW I'm coming from Audible (basically fully migrated to BookPlayer at this point 🎉) and their solution is to elide with at a certain point to guarantee the vertical room—they've got one line for title, one line for author, one line for narrator, and one line for length. All of these are (IMO) useful things to see at a glance. But eliding more prominently useful info like title/author is maybe not the most elegant solution.

I had opened a feature request issue for series management a while back, and at the time I had indicated interest in possibly helping on this project, but didn't feel my Swift skills were up to the task of working on someone else's code yet.

I'm still a little uncertain on that front, but as part of my own audiobook library management suite project that is in the works, I've created tagging libraries for MP3 and MP4. Why not use TagLib or AVFoundation or something similar? Because there are no comprehensive wrappers for TagLib in Swift, and AVFoundation won't won't edit ID3 metadata without re-encoding the entire file.

My goals were pretty straightforward: It should be able to edit metadata and chapter data (for MP3 as well as MP4) without touching the audio. It's taken me the better part of six months, but I've finally got working libraries, and since I think this would help in your goal of adding metadata editing features to BookPlayer, I thought you might want to check them out.

There are three libraries at the moment:

SwiftTaggerMP4, SwiftTaggerID3, and SwiftTagger, which simply combines those two into a single package and enables you to use the same tags, regardless of whether your file is an MP3 or MP4, by choosing which library to use for you, and occasionally creating freeform/user-defined tags if one tag exists for one format but not for the other.

I'm also working on an AudiobookTagger library which will refine SwiftTagger down to just the metadata that is relevant to audiobooks, but it's not quite ready yet. I anticipate making it public soon, however.

If any of this sounds like something that would help you implement this feature, feel free to use it, or let me know how I may help you implement it. Thank you.

Hi @NCrusher74 ! SwiftTagger redirects me to the same link of SwiftTaggerID3 is that right? other than that, I'm looking forward to the AudiobookTagger library 😁 and I'm sure it'll be a great help when the time comes to use it in this project 💪

Hi! Sorry, I'd forgotten SwiftTagger was still private, because I was intending to test it out fully as a dependency in AudiobookTagger before making it public. I've made it public now, but I'm still working on a few things for AudiobookTagger before I can fully test it. I hope you find it helpful!

AudiobookTagger is released. I hope you find it helpful!

Was this page helpful?
0 / 5 - 0 ratings