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 .
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
pozdrawiam
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka
