+++ /dev/null
-#!/usr/bin/env bash
-
-#-------------------------------------------------------------------------------
-## Script to convert the database of paraslash 0.3.5 to version 0.4.x.
-##
-## Assumptions:
-## - para_server 0.3.5 is running
-## - "para_client check" reports no errors
-## - para_server 0.4.x is running, listens on another port and uses a
-## different afs database and a different afs socket
-## - The database of paraslash 0.4.x has been initialized (i.e.
-## para_client init has successfully been executed)
-## - All audio files in the 0.3.x database have already been added to
-## the 0.4.x database (execute para_client add /my/audio/file/dir to
-## do that)
-##
-#-------------------------------------------------------------------------------
-
-# Call this script without arguments to see usage info
-
-# How to connect to para_server 0.3.x.
-client03=/usr/local/bin/para_client
-port03=2991
-host03=localhost
-database03=$HOME/.paraslash/afs_database
-
-# How to connect to para_server 0.4.x.
-client04=$(pwd)/para_client
-port04=2990
-host04=localhost
-database04=$HOME/.paraslash/afs_database-0.4
-
-# Any character that does not occur in any filename of an audio file
-sep='|'
-
-
-client03_cmd="$client03 -p $port03 -i $host03"
-client04_cmd="$client04 -p $port04 -i $host04"
-
-exec_client03_cmd()
-{
- result="$($client03_cmd -- "$@")"
-}
-
-exec_client04_cmd()
-{
- result="$($client04_cmd -- "$@")"
-}
-
-convert_attribute_table()
-{
- local atts
-
- echo "converting attribute table"
- exec_client03_cmd lsatt
- atts="$result"
- exec_client04_cmd addatt $atts
-}
-
-convert_attributes()
-{
- local OIFS="$IFS" a p att atts
-
- printf "converting attributes: "
- $client03_cmd -- ls -p -lv \
- | grep '^path:\|^attributes_txt:' \
- | sed -e "/^path:/N;s/\n/$sep/1" \
- | {
- IFS="$sep"
- while read p a; do
- p=${p#path: }
- a=${a#attributes_txt:}
- IFS=" "
- atts=
- for att in $a; do
- atts="$atts $att+"
- done
- IFS="$OIFS"
- [[ -n "$atts" ]] && $client04_cmd -- setatt $atts "$p"
- IFS="$sep"
- printf "."
- done
- echo done
- }
- IFS="$OIFS"
-}
-
-convert_lna()
-{
- local OIFS="$IFS" p l n a
-
- printf "converting last_played, num_played, amplification values: "
- $client03_cmd -- ls -p -d -lv \
- | grep '^path:\|^last_played: \|^num_played: \|^amplification: ' \
- | sed -e "/^path:/N;N;N;s/\n/$sep/g" \
- | {
- IFS="$sep"
- while read p l n a; do
- #echo "p: $p, l:$l, n:$n a:$a"
- p=${p#path: }
- l=${l#last_played: }
- n=${n#num_played: }
- a=${a#amplification: }
- IFS="$OIFS"
- $client04_cmd -- touch "-l$l" "-n$n" "-a$a" "$p"
- IFS="$sep"
- printf "."
- done
- echo done
- }
- IFS="$OIFS"
-}
-
-convert_blobs()
-{
- local blob name
-
- for blob in img lyr mood pl; do
- printf "converting $blob table: "
- exec_client03_cmd ls$blob
- echo "$result" | while read name; do
- $client03_cmd -- cat$blob "$name" | $client04_cmd -- add$blob "$name"
- printf "."
- done
- echo done
- done
-}
-
-convert_ids()
-{
- local OIFS="$IFS" p i y iopts yopts
-
- printf "converting image and lyrics ids: "
- $client03_cmd -- ls -p -lv \
- | grep '^path:\|^image_name: \|^lyrics_name: ' \
- | sed -e "/^path:/N;N;s/\n/$sep/g" \
- | {
- IFS="$sep"
- while read p i l; do
- IFS="$OIFS"
- iopts=
- yopts=
- p=${p#path: }
- i=${i#image_name: }
- l=${l#lyrics_name: }
- if [[ "$i" != '(none)' ]]; then
- exec_client04_cmd lsimg -l "$i"
- iopts="-i${result%% *}"
- fi
- if [[ "$l" != '(none)' ]]; then
- exec_client04_cmd lslyr -l "$l"
- yopts="-y${result%% *}"
- fi
- if [[ -n "$iopts" && -n "$yopts" ]]; then
- $client04_cmd -- touch "$iopts" "$yopts" "$p"
- elif [[ -n "$iopts" ]]; then
- $client04_cmd -- touch "$iopts" "$p"
- elif [[ -n "$yopts" ]]; then
- $client04_cmd -- touch "$yopts" "$p"
- fi
- printf "."
- IFS="$sep"
- done
- echo done
- }
- IFS="$OIFS"
-}
-
-
-usage()
-{
- grep '^##' $0 | sed -e 's/^## *//'
- echo '
-Usage: $0 command
-
-command is one of the following:
-
- attribute_table: create attributes
- attributes: convert attributes for each audio file
- lna: convert the last_played/num_played/amplification values
- blobs: convert the image/lyrics/moods/playlists tables
- ids: convert image and the lyrics id of each audio file.
- all: Do all of the above.
-
-Edit the top of the script to customize some options.
-'
-}
-
-if test $# -ne 1; then
- usage
- exit 1
-fi
-
-case "$1" in
-attribute_table)
- convert_attribute_table
- ;;
-attributes)
- convert_attributes
- ;;
-lna)
- convert_lna
- ;;
-blobs)
- convert_blobs
- ;;
-ids)
- convert_ids
- ;;
-all)
- convert_attribute_table
- convert_attributes
- convert_lna
- convert_blobs
- convert_ids
- ;;
-*)
- usage
- exit 1
- ;;
-esac