diff options
author | Pieter Goetschalckx | 2016-06-11 21:53:07 +0200 |
---|---|---|
committer | Pieter Goetschalckx | 2016-06-11 21:53:07 +0200 |
commit | 7a8aff407adb46dc4ecb3b0abaab3c808031badc (patch) | |
tree | 17a0ce7a453cbabfebd21d35bb8f4373357c8298 /audiotag-thumbnailer | |
download | aur-7a8aff407adb46dc4ecb3b0abaab3c808031badc.tar.gz |
Initial import
Diffstat (limited to 'audiotag-thumbnailer')
-rwxr-xr-x | audiotag-thumbnailer | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/audiotag-thumbnailer b/audiotag-thumbnailer new file mode 100755 index 000000000000..5e0245a9e2ed --- /dev/null +++ b/audiotag-thumbnailer @@ -0,0 +1,74 @@ +#!/usr/bin/python + +# DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE +# Version 2, December 2004 +# +# Copyright (C) 2011 solsTiCe d'Hiver <solstice.dhiver@gmail.com> +# Copyright (C) 2004 Sam Hocevar <sam@hocevar.net> +# +# Everyone is permitted to copy and distribute verbatim or modified +# copies of this license document, and changing it is allowed as long +# as the name is changed. +# +# DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE +# TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +# +# 0. You just DO WHAT THE FUCK YOU WANT TO. + +import os +import sys +from PIL import Image +from StringIO import StringIO +import urllib +import base64 + +DEFAULT_SIZE = 192 + +def get_img_ogg(filename, size=(DEFAULT_SIZE, DEFAULT_SIZE)): + from mutagen.oggvorbis import OggVorbis + ov = OggVorbis(filename) + pic = base64.b64decode(ov['coverart'][0]) + #mimetype = ov['coverartmime'] + + img = Image.open(StringIO(pic)) + img = img.resize(size, Image.ANTIALIAS) + return img + +def get_img_mp3(filename, size=(DEFAULT_SIZE, DEFAULT_SIZE)): + from mutagen.mp3 import MP3 + mp3 = MP3(filename) + if mp3.has_key('APIC'): + apic = mp3.get('APIC') + else: + keys = mp3.keys() + found = False + for k in keys: + if k.startswith('APIC:'): + mykey = k + found = True + break + if found: + apic = mp3.get(mykey) + else: + sys.exit(1) + + mimetype = apic.mime + img = Image.open(StringIO(apic.data)) + img = img.resize(size, Image.ANTIALIAS) + return img + +IMG_EXTRACTOR_FUNC = {'.mp3':get_img_mp3, '.ogg':get_img_ogg} + +def get_img(filename, size=(DEFAULT_SIZE, DEFAULT_SIZE)): + path, ext = os.path.splitext(filename) + return IMG_EXTRACTOR_FUNC[ext.lower()](filename, size) + +if __name__ == '__main__': + # If we have 2 args + if len(sys.argv) == 3: + INPUT_FILE = urllib.url2pathname(sys.argv[1]).replace('file://', '') + OUTPUT_FILE = urllib.url2pathname(sys.argv[2]).replace('file://', '') + get_img(INPUT_FILE).save(OUTPUT_FILE, 'png') + else: + # usage + sys.exit(1) |