Advertisement
Guest User

Untitled

a guest
Jul 7th, 2018
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.40 KB | None | 0 0
  1. #!/bin/bash
  2. #у меня этот скрипт называется getsound
  3.     #путь для кешированных слов
  4. CACHE_DIR="/home/mp3/words"
  5.     #принимаем только один параметр:
  6.     #произносимое слово
  7. WORD=$1
  8.     #командная строка плеера.
  9.         #Пробовал mpg123 и mplayer
  10. PLAYER="mpg123"
  11. RULE=/home/bin/dump.js
  12.  
  13. #===================================================================
  14. speak () {
  15.     `$PLAYER "$1" 2>/dev/null`
  16.     }
  17.    
  18. pop_cache () {
  19.     C_FILES=$(ls $CACHE_DIR|grep -e "$WORD[0-9].mp3")
  20.     if [ ! -z "$C_FILES" ] ; then  
  21.         for FILE in $C_FILES ;
  22.         do
  23.             speak $CACHE_DIR\/$FILE
  24.         done
  25.         #если отработали до этого момента
  26.         #выходим
  27.         exit 0 
  28.     fi
  29.     }
  30.  
  31.     #перво наперво проверяем кеш
  32.     #если кеш есть на этом и кончим
  33. pop_cache
  34.  
  35. get_page () {
  36.     #получаем текст страницы, из него будем выдирать ссылку
  37. curl "https://dictionary.cambridge.org/us/dictionary/english/$WORD"
  38.     }
  39.  
  40. push_cache() {
  41.     #COUNT предполагает что при
  42.     #использовании push_cache() в цикле
  43.     #ему будет передан номер итерации
  44.     #каждый вызов, вторым параметром.
  45.     #Эта нумерация используется для имен файлов
  46.     #в кеше, перечисляя варианты по каждому запросу
  47.     local COUNT=$2
  48.  
  49.     local INPUT_LINE=$1
  50.  
  51.     wget --no-check-certificate $INPUT_LINE -O $CACHE_DIR\/$WORD$COUNT.mp3 2>/dev/null
  52.     }
  53.  
  54.     #Типа main
  55.     #в два каскада фильтруем текст страницы: сначала вычленяем строку по названию кнопки,
  56.     #и уже из этого результата выдираем непосредственно ссылку на нужный файл
  57. ADDRESS=$(get_page|sed -n '/sound audio_play_button uk/ {
  58. s_.*http\([^"]*\)\.mp3.*_http\1\.mp3_
  59. p
  60. }')
  61.  
  62. if [ -z "$ADDRESS" ] ; then echo "the word was not found at the cambrige pronounce base"; exit 1; fi
  63.  
  64.     #далеко не всегда мы будем получать в ответ одну ссылку,
  65.     #поэтому в цикле
  66. COUNT=0
  67. for INPUT_LINE in $ADDRESS
  68.     do
  69.         push_cache $INPUT_LINE $COUNT
  70.         ((COUNT++))
  71.     done
  72. pop_cache
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement