TortugaPower / BookPlayer

Player for your DRM-free audiobooks
GNU General Public License v3.0
1.66k stars 198 forks source link

Bug: Cloud upload not correct? #1081

Closed fs1209 closed 8 months ago

fs1209 commented 10 months ago

Environment

Description

The cloud upload for some of the files are (most probably) not correct.

One example (see screenshots attached) the file "04 Goblet of Fire" has 719.4 MB and was according to the app uploaded to the cloud. On any other device (I've tried it with another iPhone, an iPad and a Mac) the file has 327 Bytes. These files show no cover on the new device.

Steps to reproduce the behavior

  1. Install BookPlayer on a device
  2. Log into the account via Apple ID
  3. Download the file

iPhone folder BookPlayer/Processed: image

iPad: image

GianniCarlo commented 10 months ago

Hi @fs1209 ! Can you share to my email gcarlo89@hotmail.com the debug information from your phone? I'll be able to verify more quickly what we have on our servers. I think I know what the bytes on the other devices are (probably an encoded AWS S3 error).

For additional context, I found an error (really a wrong assumption on my part) regarding how a third party library that we use to handle the sync tasks order worked. In short, between app launches, the sync tasks are not maintaining the original order, which can mess up replicating the actions taken in the app and the final hierarchy representation we have on the server. I already have our own implementation to remove the third party library, I just need to test it a little bit more before creating the PR and updating the Beta on TestFlight before release

Sorry about the issue, and thanks for your support to the app 🙌, I'll be waiting on the debug file for this ticket, to help solve anything that comes up

fs1209 commented 10 months ago

You’re right, this is the content of the downloaded file: 

Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning. --Rich Cook

Am 24.01.2024 um 14:36 schrieb Frank Schmidt @.***>:

Hi Gianni Carlo,

enclosed you‘ll find the debug information.

Thanks and regards, Frank

Trifles make perfection, and perfection is no trifle. — Michelangelo > Am 24.01.2024 um 14:27 schrieb Gianni Carlo ***@***.***>: > >  > > Hi @fs1209 ! Can you share to my email ***@***.*** ***@***.***> the debug information from your phone? I'll be able to verify more quickly what we have on our servers. I think I know what the bytes on the other devices are (probably an encoded AWS S3 error). > > For additional context, I found an error (really a wrong assumption on my part) regarding how a third party library that we use to handle the sync tasks order worked. In short, between app launches, the sync tasks are not maintaining the original order, which can mess up replicating the actions taken in the app and the final hierarchy representation we have on the server. I already have our own implementation to remove the third party library, I just need to test it a little bit more before creating the PR and updating the Beta on TestFlight before release > > Sorry about the issue, and thanks for your support to the app 🙌, I'll be waiting on the debug file for this ticket, to help solve anything that comes up > > — > Reply to this email directly, view it on GitHub , or unsubscribe . > You are receiving this because you were mentioned. >
GianniCarlo commented 10 months ago

@fs1209 following up on this, I can confirm that most books are already uploaded, and they were just already moved in S3 under the Audiobooks folder, this could be related to an open issue with the third party library (https://github.com/lucas34/SwiftQueue/issues/375) that we'll be replacing with our own implementation, where the task may have already ran successfully, but on the next app launch, it may be queued up again, and that's why it's stuck on moving the file Die Siedler von Catan.m4a to the Audibooks folder.

I went through the entire library, and the hierarchy of folder matches what we have, we're just missing the following files:

If you sign out, and the sign back in on your phone, these should be queued up, and after that it should sync without problems (another improvement that I'll be working on is background tasks, but after finishing the queue fix, not sure how that got past me 🤦)

Once those are uploaded, on your other devices, you can offload the error file that got associated with your book (on Options → Remove from device), and then redownload and it should work. Heads-up that streaming should work, there's a cache improvement that I have to work on, but got pushed after the queue fix, as that's critical right now

Please let me know how it goes @fs1209

fs1209 commented 10 months ago

I’ll keep you updated, actually there are 152 objects to upload, this will take some time. A view, which shows the cloud objects with some details (date/time/size/sync-status…) would be very helpful...

Simplicity is the ultimate sophistication. --Leonardo da Vinci

Am 24.01.2024 um 17:43 schrieb Gianni Carlo @.***>:

@fs1209 https://github.com/fs1209 following up on this, I can confirm that most books are already uploaded, and they were just already moved in S3 under the Audiobooks folder, this could be related to an open issue with the third party library (lucas34/SwiftQueue#375 https://github.com/lucas34/SwiftQueue/issues/375) that we'll be replacing with our own implementation, where the task may have already ran successfully, but on the next app launch, it may be queued up again, and that's why it's stuck on moving the file Die Siedler von Catan.m4a to the Audibooks folder.

I went through the entire library, and the hierarchy of folder matches what we have, we're just missing the following files:

Mordshunger.m4a 05 Rosenrot (5).m4a 02 Das gefrorene Licht.m4a 04 Goblet of Fire.m4a 01 Das Lächeln der Fortuna.m4a If you sign out, and the sign back in on your phone, these should be queued up, and after that it should sync without problems (another improvement that I'll be working on is background tasks, but after finishing the queue fix, not sure how that got past me 🤦)

Once those are uploaded, on your other devices, you can offload the error file that got associated with your book (on Options → Remove from device), and then redownload and it should work. Heads-up that streaming should work, there's a cache improvement that I have to work on, but got pushed after the queue fix, as that's critical right now

Please let me know how it goes @fs1209 https://github.com/fs1209 — Reply to this email directly, view it on GitHub https://github.com/TortugaPower/BookPlayer/issues/1081#issuecomment-1908514109, or unsubscribe https://github.com/notifications/unsubscribe-auth/BD5TPMXJRMNM5OFG2GULQV3YQE22FAVCNFSM6AAAAABCIW2J5SVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMBYGUYTIMJQHE. You are receiving this because you were mentioned.

fs1209 commented 9 months ago

Good Morning!

I had some tries from my iPhone and there was always the point where my iPhone was locked and the upload was interrupted. Then I did the following:

  1. connected all of my devices to my account
  2. removed all Books from one of the devices, the empty library synced to all the devices.
  3. logged off my account from all devices
  4. copied my audiobooks to all my devices
  5. logged into my account on my Mac (this syncs perfectly on the first try
  6. after upload was done, I’ve logged into all my devices and everything was in sync.

One issue seems to be there when I start listening to a book that’s not downloaded. There are no chapter marks, just one big chapter.

Shall I open an issue on GitHub for this?

Thanks for your support! Frank


Einfachheit ist die höchste Stufe der Vollendung. --Leonardo da Vinci

Am 24.01.2024 um 18:18 schrieb Frank Schmidt @.***>:

I’ll keep you updated, actually there are 152 objects to upload, this will take some time. A view, which shows the cloud objects with some details (date/time/size/sync-status…) would be very helpful...

Simplicity is the ultimate sophistication. --Leonardo da Vinci

Am 24.01.2024 um 17:43 schrieb Gianni Carlo @.***>:

@fs1209 https://github.com/fs1209 following up on this, I can confirm that most books are already uploaded, and they were just already moved in S3 under the Audiobooks folder, this could be related to an open issue with the third party library (lucas34/SwiftQueue#375 https://github.com/lucas34/SwiftQueue/issues/375) that we'll be replacing with our own implementation, where the task may have already ran successfully, but on the next app launch, it may be queued up again, and that's why it's stuck on moving the file Die Siedler von Catan.m4a to the Audibooks folder.

I went through the entire library, and the hierarchy of folder matches what we have, we're just missing the following files:

Mordshunger.m4a 05 Rosenrot (5).m4a 02 Das gefrorene Licht.m4a 04 Goblet of Fire.m4a 01 Das Lächeln der Fortuna.m4a If you sign out, and the sign back in on your phone, these should be queued up, and after that it should sync without problems (another improvement that I'll be working on is background tasks, but after finishing the queue fix, not sure how that got past me 🤦)

Once those are uploaded, on your other devices, you can offload the error file that got associated with your book (on Options → Remove from device), and then redownload and it should work. Heads-up that streaming should work, there's a cache improvement that I have to work on, but got pushed after the queue fix, as that's critical right now

Please let me know how it goes @fs1209 https://github.com/fs1209 — Reply to this email directly, view it on GitHub https://github.com/TortugaPower/BookPlayer/issues/1081#issuecomment-1908514109, or unsubscribe https://github.com/notifications/unsubscribe-auth/BD5TPMXJRMNM5OFG2GULQV3YQE22FAVCNFSM6AAAAABCIW2J5SVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMBYGUYTIMJQHE. You are receiving this because you were mentioned.

GianniCarlo commented 9 months ago

Hi @fs1209 !

Yeah regarding the iPhone locked, the next thing I'm working on is adding background tasks, I thought that it would suffice with just the background time we have while the user is doing playback with the phone locked, but it's definitely not the case.

I've submitted v5.2.0 that should address the two items I mentioned before in this ticket (preserve order of queued tasks between app launches, and avoid duplicated queued tasks per the ticket open on the third party library). Two other things pending from this ticket is to avoid storing the S3 error response, and give some feedback to the user when an item is being uploaded, so we can show an alert if the user tries to offload the item's backing file

Regarding chapter marks, yeah let's keep track of it in a separate issue. Basically after loading the file's metadata prior to streaming, we reload the chapter info we have on the local database, so we can show the proper chapter marks, so something should be going wrong in that process

GianniCarlo commented 8 months ago

An update on this ticket, we should be now giving feedback if the user attempts to delete an item that is being uploaded. The next thing to be worked on is the S3 error response being stored, I'll include the fix in the beta (v5.2.6) later this week

GianniCarlo commented 8 months ago

The S3 error response fix is live now on the AppStore, @fs1209 let me know if there's any pending items please

fs1209 commented 8 months ago

Everything works fine, many thanks for your great support!