1 (edytowany przez wabikboy 2012-12-21 10:23:54)

Temat: Lektor do E'Book'ów :)

Ostatnio z nudów bawiłem się skryptem z tego tematu który czyta wpisany tekst w konsoli i tak sobie skleiłem coś co czyta tekst linijka po linijce z plików tekstowych, nie jest to nic nadzwyczajnego ale, można wykorzystać jako lektora do eBook'ów smile.
Wpisujemy np: /czytacz.sh /nazwa_pliku.txt.
Można też uruchomić z opcją "v" wtedy też wyświetla tekst na ekran
opcja "l" (el) pozwala ręcznie wybrać linie
Jeśli uruchomimy z ostatnio czytanym plikiem to można kontynuować od ostatniej linijki, zacząć od nowa lub wpisać ręcznie nr linii
Skrypt posiada też menu help

A więc:

Potrzebna jest oczywiście podłączona do routera karta dźwiękowa i głośniki oraz zainstalowany program "madplay"

Jeżeli w/w już mamy to tworzymy sobie plik np: /sey.sh a w nim taki kod:

CO=$(echo $* | sed -e 's/ /%20/g')
wget -q -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6" "http://translate.google.com/translate_tts?tl=pl&q=$CO" -O - | madplay -q -

i nadajemy uprawnienia: chmod 755

a następnie tworzymy plik /czytacz.sh z takim kodem:

#!/bin/sh

dir=$(dirname $0)

if [ -e "$dir/sey.sh" ] ; then 

    if [ ! -e "$dir/file" ] ; then
    touch "$dir/file"
    fi
    if [ ! -e "$dir/position" ] ; then
    touch "$dir/position"
    echo 1 > $dir/position
    fi

pozyc=$(cat $dir/position)
bookis=$(cat $dir/file)
lineall=$(cat "$1" | wc -l)

if [ "$bookis" == "$1" ] ; then
repeat() {
echo "Czy czytać od ostatniego miejsca ? tak/nie 
x - reczny wybor nr linii 
"

read wybor

case "$wybor" in
  "tak") x=$pozyc ;;
  "nie") x=1 ;;

    "x") echo "Podaj nr linii startu"
    read x 
    y=$(echo $x | sed 's/[a-z A-Z]/0/g')

    if [ "$y" == "0" ] ; then
    echo "Bledny wybor lub wpisales(as) 0
    "
    repeat 
    fi ;;

  *) echo "Bledny wybor lub nic nie wybrales(as) !
" 
repeat ;;
esac
}
repeat

else

if [ "$2" == "l" ] || [ "$3" == "l" ] ;then
echo "Podaj nr linii startu"
read x
else
    x=1
fi
fi

if [ "$2" == "h" ] || [ "$2" == "help" ] || [ "$1" == "h" ] || [ "$1" == "help" ] || [ -z $1 ]; then

echo "Parametry programu

     Uruchom: czytacz.sh [Plik] [Opcja]

Opcje:
      l       Mozna wpisac linie poczatku
      v       Wyswietla tekst na Ekran
      h       Wyswietla to menu
      help    jak wyżej.

Jesli opcja nie zostanie wybrana wykona sie domyslny program.
"

else
echo "$1" > $dir/file
while [ "$x" -le "$lineall" ]
do

linijka=$(sed -n "$x"p "$1" | sed 's/ę/%C4%98/g
                          s/Ę/%C4%98/g
                          s/ó/%C3%93/g
                          s/Ó/%C3%93/g
                          s/ą/%C4%84/g
                              s/Ą/%C4%84/g
                              s/ś/%C5%9A/g
                              s/Ś/%C5%9A/g
                              s/ł/%C5%81/g
                              s/Ł/%C5%81/g 
                              s/ż/%C5%BB/g
                              s/Ż/%C5%BB/g
                              s/ź/%C5%B9/g
                              s/Ź/%C5%B9/g
                              s/ć/%C4%86/g
                              s/Ć/%C4%86/g
                              s/ń/%C5%83/g
                              s/Ń/%C5%83/g'
         )

linijka2=$(sed -n "$x"p "$1" | sed 's/ę/e/g
                          s/Ę/E/g
                          s/ó/o/g
                          s/Ó/O/g
                          s/ą/a/g
                              s/Ą/A/g
                              s/ś/s/g
                              s/Ś/S/g
                              s/ł/l/g
                              s/Ł/L/g 
                              s/ż/z/g
                              s/Ż/Z/g
                              s/ź/z/g
                              s/Ź/Z/g
                              s/ć/c/g
                              s/Ć/C/g
                              s/ń/n/g
                              s/Ń/N/g'
         )

if [ "$2" == "v" ]; then
echo "$linijka2"
fi

$dir/sey.sh "$linijka"

x=$((x+1))
echo $x > $dir/position
done

fi

else 
echo "Brak pliku sey.sh"
fi

Można np: jakiegoś eBook'a przekonwertować w Adobe Acrobat z PDF na TXT i wykorzystać ten skrypt do czytania.
Co prawda nie czyta z zachowaniem emocji ale może Google kiedyś to dopracuje smile

pozdrawiam

TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile