All pastes #718981 Raw Edit

dash

public shellscript v1 · immutable
#718981 ·published 2007-09-28 21:04 UTC
rendered paste body
#!/bin/bashLIST='/mnt/Local/Encoded/list.txt'STAT='/mnt/Local/Encoded/stat.txt'TEMP='/mnt/Local/Encoded/.stat.temp'COL=''VALUE=''SORTORDER=''if [[ ! -f "$LIST" ]]; then	echo "List file ['${LIST}'] not found."	exitfifunction duration {	dur="$1"	dur_h=$( echo "$dur / 3600" | bc ); if [[ ${#dur_h} < 2 ]]; then dur_h=0$dur_h; fi	dur=$( echo "$dur % 3600" | bc )	dur_m=$( echo "$dur / 60" | bc ); if [[ ${#dur_m} < 2 ]]; then dur_m=0$dur_m; fi	dur=$( echo "$dur % 60" | bc )	dur_s=$dur; if [[ ${#dur_s} < 2 || $dur_s < 1 ]]; then dur_s=0$dur_s; fi	echo "${dur_h:-00}:${dur_m:-00}:${dur_s:-00} [$dur S]"}function nice_size {	bytes="$1"; K=1024; M=1048576; G=1073741824; T=1099511627776	if (( $( echo "$bytes < $K" | bc ) )); then		res="$bytes"		s='B'	elif (( $( echo "$bytes < $M" | bc ) )); then		res="$( echo "scale=4; $bytes / $K" | bc )"		s='KB'	elif (( $( echo "$bytes < $G" | bc ) )); then		res="$( echo "scale=4; $bytes / $M" | bc )"		s='MB'	elif (( $( echo "$bytes < $T" | bc ) )); then		res="$( echo "scale=4; $bytes / $G" | bc )"		s='GB'	else		res="$( echo "scale=4; $bytes / $T" | bc )"		s='TB'	fi	echo "$res $s [$bytes B]"}rm "$STAT" "$TEMP" 2> /dev/nullcase "$1" in	-a|--ascending )		# ascending sort; reverse		SORTORDER='-r '		shift	;;	-d|--descending )		# descending sort; default		SORTORDER=''		shift	;;	-m|--md5 )		# sort by md5; why ?		COL='1'		CMD='echo '	;;	-o|--old-size )		# sort by old size		COL='3'		CMD='nice_size '		PARAMS='-n'	;;	-n|--new-size )		# sort by new size		COL='4'		CMD='nice_size '		PARAMS='-n'	;;	-t|--creation-time )		# sort by creation time		COL='2'		CMD='date +\'%d %b %T %Y\' --date=@'		PARAMS='-n'	;;	-u|--creation-duration )		# sort by creation duration		COL='5'		CMD='duration '		PARAMS='-n'	;;	-c|--compression )		# sort by compression percent		COL='6'		CMD='echo '		PARAMS='-n'	;;	-g|--general-stats|* )		# default; make generic stats page		COL=''	;;esacif [[ $COL ]]; then	# sort via specific value		cat "$LIST" | while read LINE; do		if [[ "$LINE" != '####'* ]]; then			DATA="$( awk -F'::' '{ print $2 }' <<< "$LINE" )"			VALUE="$( awk -v c="$COL" -F' ' '{ print $c }' <<< "$DATA" )"			NAME="$( awk -F'::' '{ print $1 }' <<< "$LINE" | sed 's/\ $//' )"			echo "$VALUE $NAME" >> "$TEMP"		fi	done	i=1	NUM=$( awk 'END { print NR }' "$TEMP" )	sort "$SORTORDER" "$PARAMS" "$TEMP" | while read SORT; do		DATA=$( echo "$SORT" | cut -f1 -d' ' )		NAME="$( echo "$SORT" | sed "s/${DATA}\ //" )"		PC=$( echo "scale=4; $i / $NUM" | bc )		echo -en "\r  Parsing $i of $NUM :: ${PC}% Complete...."		echo "$( ${CMD}${DATA} ) :: \"$NAME\"" >> "$STAT"		i=$( expr $i + 1 )	done	echoelse	# general stats file	cat "$LIST" | while read LINE; do		if [[ "$LINE" != '####'* ]]; then			NUM=$( awk 'END { print NR }' "$LIST" )			NAME="$( awk -F'::' '{ print $1 }' <<< "$LINE" | sed 's/\ $//' )"			DATA="$( awk -F'::' '{ print $2 }' <<< "$LINE" )"			read DATA_HASH DATA_TIME DATA_OLD DATA_NEW DATA_DUR DATA_COM <<< "$DATA"			if (( $DATA_TIME > ${STAT_TIME:-0} )); then				STAT_TIME="$DATA_TIME"				NAME_TIME="$NAME"			fi			if (( $DATA_OLD > ${STAT_MAX_OLD:-0} )); then				STAT_MAX_OLD="$DATA_OLD"				NAME_MAX_OLD="$NAME"			fi			if (( $DATA_OLD < ${STAT_MIN_OLD:-9999999999} )); then				STAT_MIN_OLD="$DATA_OLD"				NAME_MIN_OLD="$NAME"			fi			if (( $DATA_NEW > ${STAT_MAX_NEW:-0} )); then				STAT_MAX_NEW="$DATA_NEW"				NAME_MAX_NEW="$NAME"			fi			if (( $DATA_NEW < ${STAT_MIN_NEW:-999999999} )); then				STAT_MIN_NEW="$DATA_NEW"				NAME_MIN_NEW="$NAME"			fi			if (( $DATA_DUR > ${STAT_MAX_DUR:-0} )); then				STAT_MAX_DUR="$DATA_DUR"				NAME_MAX_DUR="$NAME"			fi			if (( $DATA_DUR < ${STAT_MIN_DUR:-999999999} )); then				STAT_MIN_DUR="$DATA_DUR"				NAME_MIN_DUR="$NAME"			fi			if (( $( echo "$DATA_COM > ${STAT_MAX_COM:-0.0000}" | bc ) )); then				STAT_MAX_COM="$DATA_COM"				NAME_MAX_COM="$NAME"			fi			if (( $( echo "$DATA_COM < ${STAT_MIN_COM:-100.0000}" | bc ) )); then				STAT_MIN_COM="$DATA_COM"				NAME_MIN_COM="$NAME"			fi			# totals			TOTAL_OLD=$( echo "${TOTAL_OLD:-0} + $DATA_OLD" | bc )			TOTAL_NEW=$( echo "${TOTAL_NEW:-0} + $DATA_NEW" | bc )			TOTAL_DUR=$( echo "${TOTAL_DUR:-0} + $DATA_DUR" | bc )			TOTAL_COM=$( echo "${TOTAL_COM:-0} + $DATA_COM" | bc )			# averages			AVERAGE_OLD=$( echo "scale=4;$TOTAL_OLD / $NUM" | bc )			AVERAGE_NEW=$( echo "scale=4;$TOTAL_NEW / $NUM" | bc )			AVERAGE_DUR=$( echo "scale=4;$TOTAL_DUR / $NUM" | bc )			AVERAGE_COM=$( echo "scale=4;$TOTAL_COM / $NUM" | bc )			# nice-looking stuffs			NICE_TIME="$( date +'%d %b %T %Y' --date=@${STAT_TIME} ) [${STAT_TIME}]"			NICE_MAX_OLD="$( nice_size $STAT_MAX_OLD )"			NICE_MIN_OLD="$( nice_size $STAT_MIN_OLD )"			NICE_MAX_NEW="$( nice_size $STAT_MAX_NEW )"			NICE_MIN_NEW="$( nice_size $STAT_MIN_NEW )"			NICE_MAX_DUR="$( duration $STAT_MAX_DUR )"			NICE_MIN_DUR="$( duration $STAT_MIN_DUR )"			NICE_TOTAL_OLD="$( nice_size $TOTAL_OLD )"			NICE_TOTAL_NEW="$( nice_size $TOTAL_NEW )"			NICE_TOTAL_DUR="$( duration $TOTAL_DUR )"			NICE_AVERAGE_OLD="$( nice_size $AVERAGE_OLD )"			NICE_AVERAGE_NEW="$( nice_size $AVERAGE_NEW )"			NICE_AVERAGE_DUR="$( duration $AVERAGE_DUR )"		fi	done		###################################################################	## This part looks confusing, it's all inside the echo statement ##	###################################################################	echo -e "######## Stats for IDE [Generated from '${LIST}'] ########Number of Encoded Videos :: $NUMMost Recent :: \"$NAME_TIME\" :: $NICE_TIME#### Unencoded SizeLargest :: \"$NAME_MAX_OLD\" :: $NICE_MAX_OLDSmallest :: \"$NAME_MIN_OLD\" :: $NICE_MIN_OLDAverage :: $NICE_AVERAGE_OLD#### Encoded SizeLargest :: \"$NAME_MAX_NEW\" :: $NICE_MAX_NEWSmallest :: \"$NAME_MIN_NEW\" :: $NICE_MIN_NEWAverage :: $NICE_AVERAGE_NEW#### Encoding DurationLongest :: \"$NAME_MAX_DUR\" :: $NICE_MAX_DURShortest :: \"$NAME_MIN_DUR\" :: $NICE_MIN_DURAverage :: $NICE_AVERAGE_DUR#### Compression RatiosHighest :: \"$NAME_MAX_COM\" :: ${STAT_MAX_COM}%Lowest :: \"$NAME_MIN_COM\" :: ${STAT_MIN_COM}%Average :: ${AVERAGE_COM}% #### Total SizeUnencoded :: $NICE_TOTAL_OLDEncoded :: $NICE_TOTAL_NEW" > "$STAT"	#############################################	## end of confusing-looking echo statement ##	#############################################fi#rm "$TEMP" 2> /dev/null