Cover art please

Hi,

Thank you for a great show. But…

When listening to your show on my phone I’m missing the cover art. My phones lockscreen presents the default gray background with black text and that is not adequate for your fine radio program.

The RSS includes a cover for the whole show but not per episode.

How does one add cover art which shows up appropriately?

I believe it’s by embedding the cover directly into the file. EasyTag can help you do this.

Have been looking at this. I release the show with The World’s Most Complicated Shell Script, which does a whole bunch of stuff including adding appropriate metadata to the mp3 and ogg files. So, I can’t use easytag to add cover art, because it’s a gui app rather than a scriptable command line thing. This is surely possible by some clever use of id3, but I can’t work out how to from the command line add an image to an mp3 that then appears on one’s phone. Solutions are gratefully accepted.

I can verify.

There is an application called lame, just apt-get it.

lame -ti image-file audio-file

I tried this on one of your mp3s and it “worked”, though it seemd to reencrypt it and the file ended up slightly smaller than the original file. It does not seem support ogg files either…

For the MP3 files: http://unix.stackexchange.com/questions/84915/add-album-art-cover-to-mp3-ogg-file-from-command-line-in-batch-mode (this uses lame as already advised by @Per)

For the OGG files: http://earthwithsun.com/questions/169151/embed-album-art-in-ogg-through-command-line-in-linux

Ha haa! I have mutagen skills. (Mutagen is the Python library I’m using to do all the mp3/ogg fiddling work.)

from mutagen.mp3 import MP3; from mutagen.id3 import ID3,APIC,error;
audio=MP3('whatever.mp3',ID3=ID3);
audio.tags.add(APIC(encoding=3, mime='image/jpeg', type=3, 
    desc=u'Cover', data=open('whatever.jpg').read()));
audio.save()

and

import base64; from mutagen.oggvorbis import OggVorbis; 
from mutagen.flac import Picture; import PIL.Image; 
o=OggVorbis('whatever.ogg');
im=PIL.Image.open('whatever.jpg');
w,h=im.size; p=Picture(); imdata=open('whatever.jpg','rb').read();
p.data=imdata; p.type=3; p.desc=''; p.mime='image/jpeg';
p.width=w; p.height=h; p.depth=24; dt=p.write(); 
enc=base64.b64encode(dt).decode('ascii');
o['metadata_block_picture']=[enc];
o.save()

So, assuming that I don’t run into any bugs, Thursday’s episode and all subsequent should have cover art embedded. Let me know if it doesn’t (or indeed if it does!)

2 Likes

Great, time to update the app

Nice!

You are doing it right, I tried the mp3 part of your script and it worked fine. Can this have something to do with the image you choose? I read that the images should be 200x200 or 300x300 pixels but I don’t know if this was a requirement or a recommendation.

(disclaimer: I have no idea what the picture I choose to try with is from)

Hm. I am doing it. And it works; at least, Nautilus on my Ubuntu desktop shows the embedded image, as does VLC in its playing popup. So I’m doing something right. If I’m also doing something wrong, then I need to know what.

Ah! Looking at your above image, that’s 1x28. I’ve only started adding cover art images as of the latest episode, 1x30; I haven’t fixed up previous mp3s.

Oh yes, It works!

I think I was the one doing something wrong :blush:

Seems like the media players I use stores a cache of cover art for each album, not for each song. I got the image you embedded by removing all files I had embedded images to and then clear the caches for vlc and google music.

Thank you @sil

2 Likes

Just for future reference @sil the cchits.net showmaker script is at GitHub which does coverart, tagging, conversion between WAV (source) and OGA, MP3 and M4A with chapter marking on appropriate media types.

Ignoring the fact it’s in PHP (it makes sense given the rest of the project), the code should be readable enough to see what I’m trying to do here.

3 Likes