Anki, транскрипция и произношение.

Сейчас многие занимаются изучением иностранных языков.
Я тоже не исключение. Для расширения словарного запаса мне помогает Anki (прекрасное кросс-платформенное приложение).
Все прекрасно в этом творении софтверной мысли :).
Но вот так называемые Deck'и редко содержать что-то больше чем слово и его самый распатроненный перевод. Не густо. Хочется видеть как минимум транскрипцию, да и звуковое сопровождение (от носителя языка) тоже не плохо. Благо Anki это может.

Транскрипцию я предпочитаю брать из словарей Lingvo, звук из словарей Google.
Делая это "руками" и броузером теряем слишком много времени и бесценное внимание (концентрацию на задаче).

Соответственно...

Вот мой скриптик который помогает делать следующие:
  • получить mp3 файл с произношением
  • получить транскрипцию (копируется в буфер)
  • ну и можно как словарь консольный пользовать :)
#!/usr/bin/ksh
#

if [[ "x$1" = "x" ]]; then
    echo "Specify word!"
    exit 1
fi

echo "=-=-=-=-=-=-=-= General =-=-=-=-=-=-=-="
s_word=$*
echo "word => ${s_word}"

s_url=$(
        curl --silent "http://www.google.ru/dictionary?langpair=en%7Cru&q=${s_word}" | \
        perl -ne "m#${s_word}.+?mp3#i and print" | \
        perl -ne 'm#(http://.+?\.mp3)# and print $1 and exit' 
       )

echo "URL => ${s_url}"
curl --silent -O ${s_url} &

for l_word in ${s_word}
do
    s_regex=${l_word}'(<[^>]+>)+\[(<[^>]+>)+([^<]+)(<[^>]+>)+\]'
    s_trans=$(
        curl --silent "http://lingvo.yandex.ru/en?text=${s_word}&lang=en&search_type=lingvo&st_translate=on" | \
        perl -ne "m/${s_regex}/ and print '[' . \$3 . ']' "
    )
    echo -n ${s_trans} | pbcopy
    echo "transcription => ${s_trans}"
    echo
done
echo

echo "=-=-=-=-=-=-= Translation =-=-=-=-=-=-="
curl --silent "http://lingvo.yandex.ru/en?text=${s_word}&lang=en&search_type=lingvo&st_translate=on" | \
grep  'p class="L1"' | \
perl -pe '
s/(<p[^>]*>)|(<br[^>]*>)/\n/gi; 
s/(<[^>]+>)+//gi; 
s/[\t ]+/ /g; 
s/Syn:/\nSyn:/gi;
s/«[^»]+» в других словарях.*//gi;
s/\n+/\n/sg
' | head -40 #remove this if you want to see full translation

[[ -x $( which mpg123 ) ]] && \
[[ -f "${s_word}.mp3"   ]] && mpg123 ${s_word}.mp3 2>/dev/null &

Может кому поможет ;)
Всем спасибо, Все свободны.

UPDATE: к сожалению данный скрипт уже не работает (интернет штука динамическая). Времени написать свежую версию нет :(

4 comments:

  1. куда вставлять этот скрипт?

    ReplyDelete
  2. сохрание его как файл (например get_pronons.ksh)

    потом в терминале:
    cd [путь к файлу]
    ksh get_pronons.ksh word

    ReplyDelete
  3. Ложу рядом с get_pronons.ksh файл word со списком анг.слов, в терминале пишу выполнение, выходит следующее:

    =-=-=-=-=-=-=-= General =-=-=-=-=-=-=-=
    word => word
    get_pronons.ksh: line 14: curl: not found
    URL =>
    get_pronons.ksh: line 20: curl: not found
    get_pronons.ksh: line 26: curl: not found
    get_pronons.ksh[29]: pbcopy: not found [Нет такого файла или каталога]
    transcription =>


    =-=-=-=-=-=-= Translation =-=-=-=-=-=-=
    get_pronons.ksh: line 36: curl: not found

    Опишите пожалуйста поподробнее, что, как делать?

    ReplyDelete
  4. Тогда вопрос, что дает терминал на следующие комманды:
    uname -a
    which curl
    which pbcopy

    И еще, параметром должно быть слово а не имя файла.

    ReplyDelete