gateship-one / odyssey

Odyssey music player
GNU General Public License v3.0
232 stars 39 forks source link

Use {folder,cover}.{jpg,png} as artist/album cover #99

Closed IBPX closed 5 years ago

IBPX commented 6 years ago

It is somewhat common practice to keep the album art in cover.jpg, folder.jpg, or their PNG versions. Odyssey could check if these files exist and use them for album and artist covers when none are stored in the music files themselves (or in the case of artists, either where none are found online).

This would be nice for dealing with multiple artists with the same name, as the wrong artist is chosen.

pieqq commented 6 years ago

It took me a while to realize it, but yes this feature is sorely missed!

Album covers should follow this process:

if folder.[jpg|png] or cover.[jpg|png]:
    use it
elif album cover image in any of the music files:
    use it
elif album cover can be downloaded online:
    use it
else:
    display generic image

It's great to have Odyssey looking for an album cover online, but if there is already one available in the directory or in the music files metadata, it should be used.

Extra bonus if you manage the multi-CD cases:

Artist
└── Album Title
    ├── CD1
    │   ├── 01.flac
    │   ├── …
    │   └── 10.flac
    ├── CD2
    │   ├── 01.flac
    │   ├── …
    │   └── 10.flac
    └── cover.jpg

In this case, cover.jpg should be used for both CD1 and CD2 directories.

Thanks and keep up the good work! Odyssey is a fantastic Android music player!

polsvoice commented 6 years ago

Totally agree, @pieqq ! There should at least be an option to set the cover manually if you aren't happy with the one Odyssey gives you.

therob84 commented 6 years ago

Any news about using jpg stored inside folder?

pieqq commented 6 years ago

@therob84, Odyssey is libre software, made with love by a bunch of great developers on their spare time. Since it's libre, it means anyone who wants this feature can implement it and propose a Pull Request to get it merged.

I haven't touched Java code in years, and I've never done much Android development, but I suppose a new art provider should be created to check for existence of local file and add it to the artwork database if it does.

Now, either one of us here implement that feature, either we wait for one of the dev to decide to tackle it :)

gnome17 commented 5 years ago

Hi, sorry for the long delay.

I already created a branch for this (see https://github.com/gateship-one/odyssey/tree/use_local_images). It is nearly finished but in my case an image that is stored in the same folder as the music files will be added to the android media database and should already be used by odyssey.

So in my point of view this branch will not change anything but maybe I just missunderstood the issue.

If anyone is interested you could checkout the branch and build odyssey for yourself and see if it makes any difference. Or I could provide a apk, but keep in mind this apk will be signed with other credentials than the version provided by F-Droid and if you want to switch back you have to clear the app data.

Any feedback is welcome.

polsvoice commented 5 years ago

What are the rules on which image it uses? I have some albums where Odyssey has decided to use the back cover, which is not what I want.

gnome17 commented 5 years ago

Hi, we always prefer the image stored in the android media database. If there is no image we then check last.fm or musicbrainz depending on the settings of odyssey.

In the mentioned branch we will check if there is an image in the same folder as the music of an album that matches the pattern {cover|folder|artork}.{jpg|jpeg|png}. If there are more images we will simply pick one from them. But as I mentioned before this solution seems not to work because the images will already be added to the android media database.

So I guess in your case there are back cover images in your music folders and the android system adds them to the media database.

alxndr42 commented 5 years ago

If anyone is interested you could checkout the branch and build odyssey for yourself and see if it makes any difference. Or I could provide a apk, but keep in mind this apk will be signed with other credentials than the version provided by F-Droid and if you want to switch back you have to clear the app data.

I would be interested in testing this, can you upload an APK? I disabled metadata lookups in Odyssey, both for privacy reasons and to keep my data traffic low. On the other hand, I do have cover images in the form of cover.jpg etc., so it would be great if these could be used to feed the media database.

gnome17 commented 5 years ago

Hi, I updated the branch and disabled the android media database for the lookup for cover arts. So the uploaded apk will always try to use a local file or use the odyssey metadata lookup if enabled.

Be aware you have to uninstall a previous version of odyssey before.

odyssey_local_images.zip

alxndr42 commented 5 years ago

:+1: Works!

When scrolling through the album list, the album art is initially blank and then appears shortly afterwards. Is Odyssey reading the files every time it loads cover art, or is this just a visual effect? If it's the former, would it be possible to import local cover art into the media database, if the media database doesn't contain anything?

gnome17 commented 5 years ago

Hi, thanks for your feedback. We will consider integrate the tested solution in some sort in one of the next releases.

And thanks for your suggestion but using the media database should not affect the loading speed. Maybe using the media database is faster because the stored images are much smaller but this is the only difference I can think of why it should be faster using the media database. In any case disable the lookup in the media database is an important part solving this issue.

gnome17 commented 5 years ago

Support for local album images is finally integrated in the current release of Odyssey.

If anyone is interested testing it, you could enable this feature in the Artwork Settings of Odyssey. It should work with album covers in the same folder as tracks and that are named cover, folder or artwork. It should work for png and jpg.

alxndr42 commented 5 years ago

Sorry, this somehow slipped my mind. I have tested with image providers disabled and "Use local album images" turned on now and it works very well for me. My album folders usually contain a cover.jpg and unlike before, they're all showing up now. My sanity is saved!

pieqq commented 5 years ago

I re-installed Odyssey to try this feature. At first it didn't seem to work, but after clearing the album images and blocked album images a couple of times and force-stopping and restarting Odyssey, it looks like it's working fine now!

Thanks a lot!!!

gnome17 commented 5 years ago

Thanks for your feedback, we are glad to hear everthing is working as expected.