#!/bin/bash

# Autor:    Lukas Gantert admin@nofalab.ch http://www.nofalab.ch
# Zweck:    Erstellen und Erweitern einer Woertersammlung in Text und Ton
# Lizenz:   GPL http://www.gnu.org/licenses/gpl.html
# Todo:     integrieren: -f file, -c continuous, error-messages (ex. oggenc not found)

version=20081223
main_dir=$HOME/Sussu
tmp_dir=/tmp
txt_dir="$main_dir"/txt
ogg_dir="$main_dir"/ogg
tmp_file="$tmp_dir"/tmp.txt
txt_file="$txt_dir"/sussu.txt
voice="Lukas Gantert"
language=french-sussu
progname=$(basename $0)
secs=2
search=$2

Help () {
    clear
    echo "NAME
    $progname :
    Erstellen, Erweitern und Durchsuchen einer Begriffs-Sammlung
    fuer zwei Sprachen in Buchstabe und Schallwelle.

    DESCRIPTION
    Die eingegebenen Woerter werden als Namen fuer die Schalldateien
    verwendet. Um Schallaufnahmen zu machen braucht es ein funktionierendes
    Audio-System auf dem Computer. Dabei sollte der Mixer (z.B. alsamixer) so
    eingestellt sein, dass das Mikrofon ein Signal gibt.
    Die Aufnahmezeit wird durch den Wert der Variable \"secs\"
    am Anfang des Skripts bestimmt.

    USAGE
    $progname
    "
    exit
}

# Version
# *******
Version () {
    echo "$progname - $version
    Ce programme est un logiciel libre.
    Vous pouvez en redistribuer des copies selon les termes de la
    License Publique Générale de GNU, <http://www.gnu.org/licenses/gpl.html>.
    AUCUNE GARANTIE n'est fournie tel que permis selon la loi.

    Écrit par Lukas Gantert."
    exit
}

# Text und Ton eingeben (input)
# *****************************
Insert () {
    mkdir -p $tmp_dir $ogg_dir $txt_dir

    # Wortpaar einlesen von Tastatur
    echo 'einen Begriff oder eine Wortfolge in Sprache "A" eintippen
    und mit "Enter" bestaetigen:'
    read word1
    echo 'den gleichen Begriff in Sprache "B" eingeben:'
    read word2
    string=$(echo "$word1"..."$word2")
    echo "$string" > $tmp_file     # schreibe Wortpaar in $tmp_file

    # Ton aufnehmen
    clear
    echo -e "\e[1m\033[32m$string\e[0m"
    echo "Sprechen sie den Begriff in beiden Sprachen ins Mikrofon,
    nachdem sie irgend eine Taste gedrueckt haben (Sie haben $secs Sekunden Sprechzeit)."
    read -s -n 1 enter

    # aufnehmen von der Soundkarte im wav-Format
    arecord -d $secs -f cd -t wav $tmp_dir/"$string".wav

    #encodiere ins ogg-Format
    oggenc -q 2 -t $tmp_dir/"$string" -a "$voice" -G "$language" $tmp_dir/"$string".wav &&

    # abspielen (zur Kontrolle)
    #ogg123 -q $tmp_dir/"$string".ogg

    # speichern
    echo "zufrieden mit dem Text und mit der Tonaufname?
    y = Ja, den Text und Ton speichern.
    q = Alles verwerfen und abbrechen."
    read -s -n 1 yq
    if [[ $yq = q ]] ; then
        rm $tmp_dir/*
        echo nichts geschrieben.
        exit
    elif [[ $yq = y ]] ; then
        mv -i $tmp_dir/"$string".ogg $ogg_dir
        echo "$string" >> $txt_file
        echo "Ton und Buchstabe gespeichert."
    fi
    rm $tmp_dir/* # aufrauemen
    Insert
}

# suchen, anzeigen und abspielen
# ******************************
Search () {
    # Begriff suchen und anzeigen
    grep -i --color $search "$txt_file"
    # Tondatei abspielen, die auf gleiches Suchmuster zutrifft
    find $ogg_dir -name *"$search"*.ogg -exec ogg123 -q {}  \;
    Menu
}

# Choreographie
# *************
Menu () {
    clear
    echo "i:insert s:search v:version h:help
    case $1 in
        -h ) Help;;
        -i ) Insert;;
        -s ) Search;;
        -v ) Version;;
        * ) Help;;
    esac
}
Menu