Advertisement
Guest User

Untitled

a guest
Feb 25th, 2011
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.21 KB | None | 0 0
  1. #!/usr/bin/python2
  2.  
  3. # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
  4. # Version 2, December 2004
  5. #
  6. # Copyright (C) 2011 solsTiCe d'Hiver <solstice.dhiver@gmail.com>
  7. # Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
  8. #
  9. # Everyone is permitted to copy and distribute verbatim or modified
  10. # copies of this license document, and changing it is allowed as long
  11. # as the name is changed.
  12. #
  13. # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
  14. # TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
  15. #
  16. # 0. You just DO WHAT THE FUCK YOU WANT TO.
  17.  
  18. import os
  19. import sys
  20. from PIL import Image
  21. from StringIO import StringIO
  22. import urllib
  23. import base64
  24.  
  25. DEFAULT_SIZE = 192
  26.  
  27. def get_img_ogg(filename, size=(DEFAULT_SIZE, DEFAULT_SIZE)):
  28. from mutagen.oggvorbis import OggVorbis
  29. ov = OggVorbis(filename)
  30. pic = base64.b64decode(ov['coverart'][0])
  31. #mimetype = ov['coverartmime']
  32.  
  33. img = Image.open(StringIO(pic))
  34. img = img.resize(size, Image.ANTIALIAS)
  35. return img
  36.  
  37. def get_img_mp3(filename, size=(DEFAULT_SIZE, DEFAULT_SIZE)):
  38. from mutagen.mp3 import MP3
  39. mp3 = MP3(filename)
  40. if mp3.has_key('APIC'):
  41. apic = mp3.get('APIC')
  42. else:
  43. keys = mp3.keys()
  44. found = False
  45. for k in keys:
  46. if k.startswith('APIC:'):
  47. mykey = k
  48. found = True
  49. break
  50. if found:
  51. apic = mp3.get(mykey)
  52. else:
  53. sys.exit(1)
  54.  
  55. mimetype = apic.mime
  56. img = Image.open(StringIO(apic.data))
  57. img = img.resize(size, Image.ANTIALIAS)
  58. return img
  59.  
  60. IMG_EXTRACTOR_FUNC = {'.mp3':get_img_mp3, '.ogg':get_img_ogg}
  61.  
  62. def get_img(filename, size=(DEFAULT_SIZE, DEFAULT_SIZE)):
  63. path, ext = os.path.splitext(filename)
  64. return IMG_EXTRACTOR_FUNC[ext.lower()](filename, size)
  65.  
  66. if __name__ == '__main__':
  67. # If we have 2 args
  68. if len(sys.argv) == 3:
  69. INPUT_FILE = urllib.url2pathname(sys.argv[1]).replace('file://', '')
  70. OUTPUT_FILE = urllib.url2pathname(sys.argv[2]).replace('file://', '')
  71. get_img(INPUT_FILE).save(OUTPUT_FILE, 'png')
  72. else:
  73. # usage
  74. sys.exit(1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement