Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #у меня этот скрипт называется getsound
- #путь для кешированных слов
- CACHE_DIR="/home/mp3/words"
- #принимаем только один параметр:
- #произносимое слово
- WORD=$1
- #командная строка плеера.
- #Пробовал mpg123 и mplayer
- PLAYER="mpg123"
- RULE=/home/bin/dump.js
- #===================================================================
- speak () {
- `$PLAYER "$1" 2>/dev/null`
- }
- pop_cache () {
- C_FILES=$(ls $CACHE_DIR|grep -e "$WORD[0-9].mp3")
- if [ ! -z "$C_FILES" ] ; then
- for FILE in $C_FILES ;
- do
- speak $CACHE_DIR\/$FILE
- done
- #если отработали до этого момента
- #выходим
- exit 0
- fi
- }
- #перво наперво проверяем кеш
- #если кеш есть на этом и кончим
- pop_cache
- get_page () {
- #получаем текст страницы, из него будем выдирать ссылку
- curl "https://dictionary.cambridge.org/us/dictionary/english/$WORD"
- }
- push_cache() {
- #COUNT предполагает что при
- #использовании push_cache() в цикле
- #ему будет передан номер итерации
- #каждый вызов, вторым параметром.
- #Эта нумерация используется для имен файлов
- #в кеше, перечисляя варианты по каждому запросу
- local COUNT=$2
- local INPUT_LINE=$1
- wget --no-check-certificate $INPUT_LINE -O $CACHE_DIR\/$WORD$COUNT.mp3 2>/dev/null
- }
- #Типа main
- #в два каскада фильтруем текст страницы: сначала вычленяем строку по названию кнопки,
- #и уже из этого результата выдираем непосредственно ссылку на нужный файл
- ADDRESS=$(get_page|sed -n '/sound audio_play_button uk/ {
- s_.*http\([^"]*\)\.mp3.*_http\1\.mp3_
- p
- }')
- if [ -z "$ADDRESS" ] ; then echo "the word was not found at the cambrige pronounce base"; exit 1; fi
- #далеко не всегда мы будем получать в ответ одну ссылку,
- #поэтому в цикле
- COUNT=0
- for INPUT_LINE in $ADDRESS
- do
- push_cache $INPUT_LINE $COUNT
- ((COUNT++))
- done
- pop_cache
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement