diff --git a/bin/extract_itunes_artwork.sh b/bin/extract_itunes_artwork.sh deleted file mode 100755 index 4b70b1f78..000000000 --- a/bin/extract_itunes_artwork.sh +++ /dev/null @@ -1,98 +0,0 @@ -#!/bin/bash -# Script to transfort .itc files into images (JPG or PNG) -# -# .itc files are located in ~/Music/iTunes/Album Artwork -# -# This script uses (/!\ needs ) ImageMagick's convert, hexdump, printf and dd. -# -# This script might be a little slow, You might want to look at Simon Kennedy's work at http://www.sffjunkie.co.uk/python-itc.html -# -# ~/{Library Path}/Album Artwork/Cache/D989408F65D05F99/04/13/04/D989408F65D05F99-EB5B7A9086F4B4D4.itc -# -# The filenames are an amalgam of the library ID (D989408F65D05F99) and the track's ID (EB5B7A9086F4B4D4). -# The directory structure comes from the library ID and the last three digits of the track's ID converted to decimal, -# ie 4D4 becomes 04, 13, 04. -# - -AlbumArtwork="${HOME}/Music/iTunes 1/Album Artwork" -DestinationDir="Artwork" -IFS=$'\n' - - -if [ ! -d "$DestinationDir" ]; then - mkdir "$DestinationDir" - echo "new Images dir" -fi - -for file in `find "$AlbumArtwork" -name '*.itc'`; do - start=0x11C - exit=0; - i=1; - echo $file - while [ 1 ]; do - - typeOffset=$(($start+0x30)) - imageType=$(hexdump -n 4 -s $typeOffset -e '"0x"4/1 "%02x" "\n"' $file) - - #If there is no next byte, jump to the next itc file. - if [[ -z $imageType ]]; then - break - fi - - imageOffsetOffset=$(($start+8)) - - itemSize=$(hexdump -n 4 -s $start -e '"0x"4/1 "%02x" "\n"' $file) - imageOffset=$(hexdump -n 4 -s $imageOffsetOffset -e '"0x"4/1 "%02x" "\n"' $file) - - imageStart=$(($start+$imageOffset)) - imageSize=$(($itemSize-imageOffset)) - - imageWidth=$(hexdump -n 4 -s $(($start+56)) -e '"0x"4/1 "%02x" "\n"' $file) - imageWidth=$(printf "%d" $imageWidth) - imageHeight=$(hexdump -n 4 -s $(($start+60)) -e '"0x"4/1 "%02x" "\n"' $file) - imageHeight=$(printf "%d" $imageHeight) - - dir=$(dirname "$file") - xbase=${file##*/} #file.etc - xpref=${xbase%.*} #file prefix - - #echo $file - #echo itemsize $itemSize - #echo start $start - #echo imageOffset $imageOffset - #echo imageStart $imageStart - #echo imageSize $imageSize - #echo imageWidth $imageWidth - #echo imageHeight $imageHeight - - if [[ $imageType -eq 0x504E4766 ]] || [[ $imageType -eq 0x0000000E ]] ; then - targetFile="$DestinationDir/$xpref-$i.png" - if [ ! -f "$targetFile" ]; then - echo PNG - dd skip=$imageStart count=$imageSize if="$file" of="$targetFile" bs=1 &> /dev/null - fi - elif [[ $imageType -eq 0x41524762 ]] ; then - targetFile="$DestinationDir/$xpref-$i.png" - if [ ! -f "$targetFile" ]; then - echo ARGB - dd skip=$imageStart count=$imageSize if="$file" of="$TMPDIR/test$i" bs=1 &> /dev/null - - #Using a matrix to convert ARGB to RGBA since imagemagick does only support rgba input - convert -size $imageWidth"x"$imageHeight -depth 8 -color-matrix '0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0' rgba:"$TMPDIR/test$i" "$targetFile" - fi - elif [[ $imageType -eq 0x0000000D ]] ; then - targetFile="$DestinationDir/$xpref-$i.jpg" - if [ ! -f "$targetFile" ]; then - echo JPG - dd skip=$imageStart count=$imageSize if="$file" of="$targetFile" bs=1 &> /dev/null - fi - else - echo $imageType - exit=1 - break; - fi - - start=$(($start+$itemSize)) - i=$(($i+1)) - done -done \ No newline at end of file