| 
									
										
										
										
											2013-06-28 00:14:48 +04:00
										 |  |  | #!/bin/bash
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-03 03:14:40 +04:00
										 |  |  | if [ $1 ] ; then | 
					
						
							|  |  |  | 	ARCHIVE_ROOT="$1" | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  | 	ARCHIVE_ROOT="." | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | echo "Doing: \"$ARCHIVE_ROOT\"" | 
					
						
							| 
									
										
										
										
											2013-06-28 00:14:48 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | METADATA_DIR="metadata" | 
					
						
							|  |  |  | RAW_PREVIEW_DIR="hi-res (RAW)" | 
					
						
							| 
									
										
										
										
											2013-06-28 18:37:15 +04:00
										 |  |  | PROCESSED_PREVIEW_DIR="preview" | 
					
						
							| 
									
										
										
										
											2013-06-28 00:14:48 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-28 18:37:15 +04:00
										 |  |  | PROCESSED_PREVIEW_NAME="%-:1d/${PROCESSED_PREVIEW_DIR}/%f.jpg" | 
					
						
							| 
									
										
										
										
											2013-06-28 00:14:48 +04:00
										 |  |  | PREVIEW_NAME="%-:1d/${RAW_PREVIEW_DIR}/%f.jpg" | 
					
						
							|  |  |  | JSON_NAME="%-:1d/${METADATA_DIR}/%f.json" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-28 03:48:16 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-29 04:14:45 +04:00
										 |  |  | # TODO do a version of this using exiv2... | 
					
						
							|  |  |  | #	- to be more flexible... | 
					
						
							|  |  |  | #	- check speed... | 
					
						
							|  |  |  | #	- give the user more options... | 
					
						
							|  |  |  | # | 
					
						
							| 
									
										
										
										
											2013-06-28 03:48:16 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | # XXX need to also copy jpg originals to the preview dir (things that  | 
					
						
							|  |  |  | #	were shot in jpeg in-camera)... | 
					
						
							| 
									
										
										
										
											2013-06-28 00:14:48 +04:00
										 |  |  | # XXX do we need to rotate the images using exif data here??? | 
					
						
							|  |  |  | # XXX need to prevent overwriting of unchanged exif data... | 
					
						
							|  |  |  | #	when file exists?? | 
					
						
							| 
									
										
										
										
											2013-06-28 18:37:15 +04:00
										 |  |  | # XXX add PSD metadata extraction... | 
					
						
							| 
									
										
										
										
											2013-06-29 04:14:45 +04:00
										 |  |  | #	-execute '-FileModifyDate<DateTimeOriginal' -tagsfromfile @ \ | 
					
						
							|  |  |  | #		-srcfile "$PROCESSED_PREVIEW_NAME" -overwrite_original \ | 
					
						
							| 
									
										
										
										
											2013-06-28 18:37:15 +04:00
										 |  |  | # XXX keep file dates... | 
					
						
							| 
									
										
										
										
											2013-06-28 00:14:48 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | exiftool -if '$jpgfromraw' -b -jpgfromraw -w "$PREVIEW_NAME" \
 | 
					
						
							|  |  |  | 	-execute -if '$previewimage' -b -previewimage -w "$PREVIEW_NAME" \
 | 
					
						
							| 
									
										
										
										
											2013-06-29 04:14:45 +04:00
										 |  |  | 	-execute '-FileModifyDate<DateTimeOriginal' -tagsfromfile @ \
 | 
					
						
							|  |  |  | 		-srcfile "$PREVIEW_NAME" -overwrite_original \
 | 
					
						
							| 
									
										
										
										
											2013-06-28 00:14:48 +04:00
										 |  |  | 	-execute -j -w "$JSON_NAME" \
 | 
					
						
							|  |  |  | 	-common_args --ext jpg -r "$ARCHIVE_ROOT" -progress | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | SIZE=900 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | COMPRESSION=90 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-03 03:14:40 +04:00
										 |  |  | # XXX remove this in production... | 
					
						
							| 
									
										
										
										
											2013-06-29 04:14:45 +04:00
										 |  |  | PATH=$PATH:/mnt/d/Program\ Files/vips/bin/ | 
					
						
							| 
									
										
										
										
											2013-06-28 00:14:48 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-28 03:48:16 +04:00
										 |  |  | # makepreview SIZE IN OUT | 
					
						
							|  |  |  | makepreview(){ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	SIZE="$1" | 
					
						
							|  |  |  | 	IN="$2" | 
					
						
							|  |  |  | 	OUT="$3" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-28 00:14:48 +04:00
										 |  |  | 	# create preview dir if it does not already exist... | 
					
						
							| 
									
										
										
										
											2013-07-03 01:44:03 +04:00
										 |  |  | 	DIR="`dirname \"./${OUT}\"`" | 
					
						
							|  |  |  | 	if ! [ -e "./$DIR" ] ; then | 
					
						
							|  |  |  | 		mkdir -p "./$DIR" | 
					
						
							| 
									
										
										
										
											2013-06-28 00:14:48 +04:00
										 |  |  | 	fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-28 00:23:04 +04:00
										 |  |  | 	# create previews... | 
					
						
							| 
									
										
										
										
											2013-07-03 01:44:03 +04:00
										 |  |  | 	if ! [ -e "./${OUT}" ] ; then | 
					
						
							| 
									
										
										
										
											2013-06-28 00:14:48 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-28 00:23:04 +04:00
										 |  |  | 		# get source size... | 
					
						
							| 
									
										
										
										
											2013-06-28 03:48:16 +04:00
										 |  |  | 		W=$(vips im_header_int width "$IN") | 
					
						
							|  |  |  | 		H=$(vips im_header_int height "$IN") | 
					
						
							| 
									
										
										
										
											2013-06-28 00:14:48 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-28 00:23:04 +04:00
										 |  |  | 		# NOTE: vips appends nasty unprintable \r's to values, so we need to clean them out... | 
					
						
							|  |  |  | 		W=${W//[![:digit:]]/} | 
					
						
							|  |  |  | 		H=${H//[![:digit:]]/} | 
					
						
							| 
									
										
										
										
											2013-06-28 00:14:48 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-28 00:23:04 +04:00
										 |  |  | 		# calculate the factor... | 
					
						
							|  |  |  | 		FACTOR=$(echo "scale = 4; if($H > $W) s = $H else s = $W ; s / $SIZE" | bc -l) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-28 03:48:16 +04:00
										 |  |  | 		echo "($FACTOR): ${OUT}:${COMPRESSION}" | 
					
						
							| 
									
										
										
										
											2013-06-28 00:14:48 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-03 01:44:03 +04:00
										 |  |  | 		vips im_shrink "./$IN" "./${OUT}:${COMPRESSION}" $FACTOR $FACTOR 2> /dev/null | 
					
						
							| 
									
										
										
										
											2013-06-28 00:14:48 +04:00
										 |  |  | 	fi | 
					
						
							| 
									
										
										
										
											2013-06-28 03:48:16 +04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # XXX use find... | 
					
						
							| 
									
										
										
										
											2013-06-29 04:14:45 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | cd "${ARCHIVE_ROOT}" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | for FROM in */DCIM/hi-res\ \(RAW\)/*jpg ; do | 
					
						
							| 
									
										
										
										
											2013-06-28 03:48:16 +04:00
										 |  |  | 	TO="${FROM/hi-res\ /preview }" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	# XXX do different-sized previews... | 
					
						
							| 
									
										
										
										
											2013-07-03 01:44:03 +04:00
										 |  |  | 	makepreview "$SIZE" "./$FROM" "./$TO" | 
					
						
							| 
									
										
										
										
											2013-06-28 00:14:48 +04:00
										 |  |  | done | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-29 04:14:45 +04:00
										 |  |  | # vim:set nowrap nospell : |