Фича данной деки в том что, использован частотный список от профессионалов, и слова идут в порядке в котором они чаще встречаются в "староанглийской" (до 90х годов) речи.
скачать можно от сюда Как обычно для каждого слова весь перевод (с том лишь отличием что сейчас глаголы и сущ, и т.п. нужно учить отдельно (именно так доказано Британскими учеными :)) произношение и транскрипция.
Много полезной инфы написал на руборд, сюда перепечатывать пока в лом, так что кому интересно, может почитать ее пока вот здесь
может быть скоро в блог чтонибудь перенесу
Показаны сообщения с ярлыком anki. Показать все сообщения
Показаны сообщения с ярлыком anki. Показать все сообщения
пятница, 21 января 2011 г.
суббота, 27 ноября 2010 г.
Anki English phrases
Вот думал я думал подправить деку с нерегулярными глаголами, и передумал.. А тут еще и такой шикарный сайт подвернулся Содержащий Английские фразы с русским переводом и самое главное с произношением!!!, получилась офигенная дека, после ее изучения, теперь можно знать не только What time is it now и т.д. и т.п. =)
Скачать и установить можно ее из интерфейса программы называется она "English-Russian phrases (eng. pronunciation)"
Собирал все скриптом написаном на python, скачать можно здесь
Так что Welcome =).
Скачать и установить можно ее из интерфейса программы называется она "English-Russian phrases (eng. pronunciation)"
Собирал все скриптом написаном на python, скачать можно здесь
Так что Welcome =).
среда, 10 ноября 2010 г.
Новая дека (2000 часто используемых слов)
Вобщем посмотрел я посмотрел свои деки, и провел работу над ошибками, результат - дека English-Russian most used (можно скачать из анки из меню shared decks)
были устранены недостатки
из недостатков кода, к сожалению все захардкожено
скрипт тута
поступила информация, что с сайта anki у некоторых скачивается с ошибкой, поэтому можно скачать эксорт деки от сюда
были устранены недостатки
- Теперь все качается с google.com/dictionary (а не translate.google.com)
- В деках присутствует транскрипция
- Если у слова 2 произношения, то качаются оба и склеиваются в один файл
- Качается полный перевод(все значения что показывает гугл), забавно было, когда бралась только первая часть :), только из за этого и переписал скрипт, как вам дека только с первой частью перевода словa queen от гугла :) ? какой перевод расскажет ученик у доски фразы "queen Victoria"?
- Главный перевод, - тот что первая строчка оборота карточки, состоит из первых слов перевода для глагола, существительного и т.п. этого слова
- Теперь в деке присутствует модель. Раньше было всего лишь 2 поля(слово - перевод) теперь же 5 полей, и при желании можно отключать ненужные вещи
- Убраны картинки, те что качались с гугла, все равно мельтешили, и никакой нагрузки не несли
- Ну и хоть я и не эксперт в питоне, но переписал скрипт именно под него, и теперь при желании можно запускать скрипт под виндой (хотя я это не пробовал, но шансов на положительный успех больше)
из недостатков кода, к сожалению все захардкожено
- нужно создавать руками папку media в папке с скриптом
- никаких входных параметров, поэтому входной файл "input" (с которого берутся слова)
- обработка ошибок тоже так себе, - если чтонибудь не получилось, то слово игнорируется (так что смотрим лог, на предмет слова fail
скрипт тута
поступила информация, что с сайта anki у некоторых скачивается с ошибкой, поэтому можно скачать эксорт деки от сюда
вторник, 26 октября 2010 г.
Anki English Irregular verbs + Russian translate
Дошли наконец руки до важной части английского языка - неправильных глаголов.
Изменил немного старый скрипт и собрал деку.
Собирается примерно как в этой статье, за исключением что все делает скрипт, плюс качает перевод и произношение (правда есть небольшой косяк, в некоторых карточка для одно неправильного глагола есть несколько прошлых времен и т.п., - для них произношение не качается)
Работает следующим образом.
создаем в папке 3 файла v1,v2,v3 соответственно Infinitive, Simple Past, Past Participle. (в том же порядке, тоесть слову из n-й строчки соответствуют слова из n-й строчки 2го и 3го файла)
далее выкачиваем скрипт в эту же папку
даем права на выполнение
запускаем
по завершению импортируем result/anki_deck в анки
копируем все из папки result/sound в ~/.anki/decks/DECK_NAME.media (где DECK_NAME имя которое дали деке)
Запускаем checkDB в анки. (tools->advanced->check media database) и все
вот так это выглядит
Скачать готовую деу можно жимкнув на
вот эту подчеркнуют надпись :)
Изменил немного старый скрипт и собрал деку.
Собирается примерно как в этой статье, за исключением что все делает скрипт, плюс качает перевод и произношение (правда есть небольшой косяк, в некоторых карточка для одно неправильного глагола есть несколько прошлых времен и т.п., - для них произношение не качается)
Работает следующим образом.
создаем в папке 3 файла v1,v2,v3 соответственно Infinitive, Simple Past, Past Participle. (в том же порядке, тоесть слову из n-й строчки соответствуют слова из n-й строчки 2го и 3го файла)
далее выкачиваем скрипт в эту же папку
$ wget https://sites.google.com/site/nicloaynidvoray/filelist/ivdeckgen
даем права на выполнение
$ chmod a+x ivdeckgen
запускаем
$ ./ivdeckgen
по завершению импортируем result/anki_deck в анки
копируем все из папки result/sound в ~/.anki/decks/DECK_NAME.media (где DECK_NAME имя которое дали деке)
Запускаем checkDB в анки. (tools->advanced->check media database) и все
вот так это выглядит
Скачать готовую деу можно жимкнув на
вот эту подчеркнуют надпись :)
воскресенье, 17 октября 2010 г.
Anki phrasal verbs
И так, кто не в курсе что это за "phrasal verbs", это важная часть английского языка, так как народ у них там ленивый, они используют как можно меньше слов в своей речи и различные комбинации часто употребляемых слов и есть "phrasal verbs" что то типа нашего "дать по тыкве".
Началось все как обычно с гугления списка этих глаголов. Сначала мне казалось что придется мержить списки с нескольких сайтов. но вот попался http://www.cad.ntu-kpi.kiev.ua/~demch/friends/esl4rus/pvlist.html список из целых 450 phrasal verbs, думаю этого с головой для обычного смертного вроде меня.
Вот и прорисовалась наша миссия, импортировать эту таблицу в anki
1. Можно конечно было бы распарсить html, но мы пойдем более простым путем, скопируем таблицу в OoO Calc. и каждую колонку сохраним в отдельный файлы verbs1, verbs2, verbs3
2. Ну вот.. самая сложная часть работы позади :) осталось взять по каждой строчке из файла и в нужном порядке положить в файл. Для этого выполним серию комманд, прямо из терминала
3. В итоге мы получили файл anki_deck, который мы должны импортировать в anki. в процессе импорта, получил несколько ошибок.
что говорит 'duplicate' вроде понятно., идем в файлы (verbs1,verbs2,verbs3), ищем там дубликаты строчки и добавляем им индексы (1) (2) и т.п., так же видим что "hand over" остался сиротой, без описания и примера., восполним это результатом из переводчика
4. Так как мы получили ошибки, и подправили файлы. удаляем файл anki_deck, и переходим к пункту 2, получаем красивый результат
выглядит очень красиво :).
а главное полезно :).
для ленивых товарищей, готовую деку можно скачать жмакнув сюда, либо посмотреть shared deck в интерфейсе анки
Началось все как обычно с гугления списка этих глаголов. Сначала мне казалось что придется мержить списки с нескольких сайтов. но вот попался http://www.cad.ntu-kpi.kiev.ua/~demch/friends/esl4rus/pvlist.html список из целых 450 phrasal verbs, думаю этого с головой для обычного смертного вроде меня.
Вот и прорисовалась наша миссия, импортировать эту таблицу в anki
1. Можно конечно было бы распарсить html, но мы пойдем более простым путем, скопируем таблицу в OoO Calc. и каждую колонку сохраним в отдельный файлы verbs1, verbs2, verbs3
2. Ну вот.. самая сложная часть работы позади :) осталось взять по каждой строчке из файла и в нужном порядке положить в файл. Для этого выполним серию комманд, прямо из терминала
$ COUNT=$(cat verbs1|wc -l);for i in $(seq 1 $COUNT);do \
echo -e $(cat verbs1|sed -n $i'p') \
"\t"$(cat verbs2|sed -n $i'p') \
"<br /><br /><span style='font-style:italic;'>" \
$(cat verbs3|sed -n $i'p')"</span>" >>anki_deck; \
echo -e $(cat verbs2|sed -n $i'p') \
"\t"$(cat verbs1|sed -n $i'p') \
"<br /><br /><span style='font-style:italic;'>" \
$(cat verbs3|sed -n $i'p')"</span>" >>anki_deck; \
done
3. В итоге мы получили файл anki_deck, который мы должны импортировать в anki. в процессе импорта, получил несколько ошибок.
Importing complete. 895 facts imported from anki_deck.
Log of import:
Fact is missing field 'Front': , hand over <br /><br /><span style='font-style:italic;'> </span>
Fact has duplicate 'Front': review / study thoroughly for a short time , brush up on (inseparable) <br /><br /><span style='font-style:italic;'> If you're going to travel to Peru, you'd better brush up on your Spanish.</span>
Fact has duplicate 'Front': distribute , pass out (2. separable) <br /><br /><span style='font-style:italic;'> Everyone in the room needs one of these information sheets. Who will help me pass them out?</span>
Fact has duplicate 'Front': return something to the proper place , put back (separable) <br /><br /><span style='font-style:italic;'> I've finished with these books. Do you want me to put them back on the shelves?</span>
Fact has duplicate 'Front': return something to the proper place , put up (1. separable) <br /><br /><span style='font-style:italic;'> Your toys are all over the floor, Timmy. Please put them up.</span>
Fact has duplicate 'Front': discard; put in the garbage , throw out (1. separable) <br /><br /><span style='font-style:italic;'> This food smells bad. You'd better throw it out.</span>
Fact has duplicate 'Front': turn out , come to a meeting or to form a crowd <br /><br /><span style='font-style:italic;'> Thousands of fans turned out to welcome the team.</span>
что говорит 'duplicate' вроде понятно., идем в файлы (verbs1,verbs2,verbs3), ищем там дубликаты строчки и добавляем им индексы (1) (2) и т.п., так же видим что "hand over" остался сиротой, без описания и примера., восполним это результатом из переводчика
4. Так как мы получили ошибки, и подправили файлы. удаляем файл anki_deck, и переходим к пункту 2, получаем красивый результат
Importing complete. 900 facts imported from anki_deck.
что говорит что все ок. жимкаем Ctrl-S (выбираем куда сохранить) и вуаля.. - дека готовавыглядит очень красиво :).
а главное полезно :).
для ленивых товарищей, готовую деку можно скачать жмакнув сюда, либо посмотреть shared deck в интерфейсе анки
воскресенье, 19 сентября 2010 г.
Google images + stardict sound + anki
И так не сказать что все прошло гладко :) ОДнаждый меня забанил гугл, после того как я в 26 потоков началу него выпрашивать картинки, поэтому пришлось немного переписать скрипт.
Работает следующим образом. У меня 14 тыщ звуковых файлов. я их смотрю и отправляю запрос вида
Ну и после этого мне возвращается несколько картинок, я беру всего 3, их склеиваю в одно изображение и приписываю перевод который мне дает stardict (тоже узкое место, из за того что куча словарей и иногда получается билеберда)
и на выходе получаем следующее
например на заброс backbone получается такая вот карточка

ball

call

если все ок, то звуковой файл кладется рядышком, и переход на следующую итерацию, если вдруг гугл нас банит - то ни одно изображение до нас не доходит и программа завершается.
скрипт для запуска
все чем он занимается это запускает основной в несколько потоков (тут можно настроить timeout с которым он опрашивает сколько потоков в текущий момент крутится и количество тредов), также обратите внимание что он запускает (это 2й основной скрипт) и по чему идет цикл (это рутовая директория аудиофайлов в которой 26 дирикторий с английскими буковками, внутри которых аудиофайлы с словами на эту букву)
работает это следующим образом - создаете эти 2 скрипта в одной дириктории, у меня это ganki_root.sh и ganki.sh а также дирикторию (у меня это ganki)
далее
ну а потом, уже когда карточки будут готовы, или гугл пошлет :), можно воспользоватся вот этой инструкцией
Медиа дека для Anki и создать деку для ганки (по аналогии)
хотя наверно даже большого скрипта писать не надо и достаточно из консоли написать один for и создать нужный файл (если вдруг понадобится, то напишу как :)
Вобще наверно логичнее не писать перевод в карточку, а добавлять текстом в деку.. (это так.. для разнообразия и практики с imagemagic)
большой респект человеку написавшим сей скрипт и сэкономившему мне кучу времени с работой google.com/images
Работает следующим образом. У меня 14 тыщ звуковых файлов. я их смотрю и отправляю запрос вида
http://www.google.com/images?....
Ну и после этого мне возвращается несколько картинок, я беру всего 3, их склеиваю в одно изображение и приписываю перевод который мне дает stardict (тоже узкое место, из за того что куча словарей и иногда получается билеберда)
и на выходе получаем следующее
например на заброс backbone получается такая вот карточка

ball

call

если все ок, то звуковой файл кладется рядышком, и переход на следующую итерацию, если вдруг гугл нас банит - то ни одно изображение до нас не доходит и программа завершается.
скрипт для запуска
#!/bin/bashls
TERM=xterm
export TERM
THREADS=3
TIMEOUT=5s
for FOLDER in /usr/share/stardict/sounds/Sound_En/*;
do
bash ../ganki.sh "$FOLDER" &
while [ "`jobs -p|wc -l`" -ge $THREADS ];
do
sleep $TIMEOUT
done
done
все чем он занимается это запускает основной в несколько потоков (тут можно настроить timeout с которым он опрашивает сколько потоков в текущий момент крутится и количество тредов), также обратите внимание что он запускает (это 2й основной скрипт) и по чему идет цикл (это рутовая директория аудиофайлов в которой 26 дирикторий с английскими буковками, внутри которых аудиофайлы с словами на эту букву)
#!/bin/bash
# Great thanks image download function creator http://www.krazyworks.com/wget-google-image-collector/
TMP_FILE=g.src.tmp
IMAGE_COUNT=3
SIZE="large"
FONT="/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif.ttf"
ROOT_FOLDER=$1;
OUT_DIR=$(echo $ROOT_FOLDER|sed "s/.*\///g")
if [ ! -d "$OUT_DIR" ]
then
mkdir $OUT_DIR
fi
for SOUND_FILE in $ROOT_FOLDER/*;
do
cp $SOUND_FILE $OUT_DIR;
KEYWORD=`echo ${SOUND_FILE/*\//}|sed "s/.ogg//g"`;
echo $OUT_DIR:$KEYWORD;
CAPTION=$(sdcv -n $KEYWORD|grep -A 10 Ru|egrep '^ *[1-3]\)'|head -n 2|sed "s/^ *[0-9].//g"|tr "\n" ", ")
if [ -z "$CAPTION" ];
then
CAPTION=$(sdcv -u 'LingvoUniversal (En-Ru)' $KEYWORD|tail -n 2|tr "\n" ", ")
fi
CAPTION=$(echo $CAPTION|sed 's/[\,]* *$//g');
# download images from google
i=0
URL="http://images.google.com/images?q=${KEYWORD}&svnum=100&hl=en&lr=&safe=off&sa=G&imgsz=${SIZE}"
wget -q -U Mozilla -O "${OUT_DIR}/results_${i}.txt" "$URL" -e robots=off
cat "${OUT_DIR}/results_${i}.txt" | sed 's/href/\n/g' | grep imgurl | grep imgrefurl | sed 's/imgurl=/@/g' | sed 's/&imgrefurl/@/g' | awk -F'@' '{print $2}' > "${OUT_DIR}/image_urls.txt"
results=$(cat "${OUT_DIR}/results_${i}.txt" | sed 's/border/\n/g' | fgrep '&start=' | fgrep -v '&start=0' | uniq | fgrep '
' | wc -l | awk '{print $1}')
i=1
while [ $i -lt $results ]
do
(( START = i * 20 ))
URL="http://images.google.com/images?q=${KEYWORD}&svnum=100&hl=en&lr=&safe=off&sa=G&imgsz=${SIZE}&start=${START}"
wget -q -U Mozilla -O "${OUT_DIR}/results_${i}.txt" "$URL" -e robots=off
cat "${OUT_DIR}/results_${i}.txt" | sed 's/href/\n/g' | grep imgurl | grep imgrefurl | sed 's/imgurl=/@/g' | sed 's/&imgrefurl/@/g' | awk -F'@' '{print $2}' >> "${OUT_DIR}/image_urls.txt"
(( i = i + 1 ))
done
find "$OUT_DIR" -type f -name "results_*.txt" -exec rm {} \;
cat "${OUT_DIR}/image_urls.txt" | fgrep '.jpg' | head -n ${IMAGE_COUNT} > /tmp/google_image_collector_${KEYWORD}.tmp
mv /tmp/google_image_collector_${KEYWORD}.tmp "${OUT_DIR}/image_urls.txt"
if [ -f "${OUT_DIR}/image_urls.txt" ]
then
clear
COUNT=$(cat "${OUT_DIR}/image_urls.txt" | wc -l | awk '{print $1}')
#echo "Found $COUNT images matching $KEYWORD"
if [ $COUNT -eq 0 ];
then
echo $OUT_DIR:"gooogle probably block me"
exit 0;
fi
j=1
cat "${OUT_DIR}/image_urls.txt" | while read LINE
do
wget -q -U Mozilla -nd -t 1 -T 5 -O "${OUT_DIR}/${KEYWORD}_${j}.jpg" "$LINE" -e robots=off
convert -resize '200x200' "${OUT_DIR}/${KEYWORD}_${j}.jpg" "${OUT_DIR}/${KEYWORD}_${j}.jpg"
(( j = j + 1 ))
done
fi
convert -size 640x260 gradient: "${OUT_DIR}/grad.jpg"
for ii in `seq 1 3`;
do
composite -compose Copy -geometry +$((10*(ii)+200*(ii-1)))+10 "${OUT_DIR}/${KEYWORD}_$ii.jpg" "${OUT_DIR}/grad.jpg" "${OUT_DIR}/grad.jpg"
rm "${OUT_DIR}/${KEYWORD}_$ii.jpg"
done
convert -background none -fill white -font $FONT -pointsize 18 -size 620x80 -gravity South caption:"$CAPTION" "${OUT_DIR}/caption.gif"
composite -gravity South "${OUT_DIR}/caption.gif" "${OUT_DIR}/grad.jpg" "${OUT_DIR}/$KEYWORD.jpg"
rm "${OUT_DIR}/grad.jpg"
rm "${OUT_DIR}/caption.gif"
done
exit 0
работает это следующим образом - создаете эти 2 скрипта в одной дириктории, у меня это ganki_root.sh и ganki.sh а также дирикторию (у меня это ganki)
далее
cd ganki
chmod a+x ../ganki_root.sh
../ganki_root.sh
ну а потом, уже когда карточки будут готовы, или гугл пошлет :), можно воспользоватся вот этой инструкцией
Медиа дека для Anki и создать деку для ганки (по аналогии)
хотя наверно даже большого скрипта писать не надо и достаточно из консоли написать один for и создать нужный файл (если вдруг понадобится, то напишу как :)
Вобще наверно логичнее не писать перевод в карточку, а добавлять текстом в деку.. (это так.. для разнообразия и практики с imagemagic)
большой респект человеку написавшим сей скрипт и сэкономившему мне кучу времени с работой google.com/images
четверг, 16 сентября 2010 г.
Медиа дека для Anki
этот мануал гораздо лучше, скрипт более гибкий и лаконичный
Итак .. немного вводная.
Anki программа для запоминания, Это Обычные карточки, но которые показываются по определенному алгоритму, и те карты которые сложно запомнить показываются чаще, которые легко реже.
Создавать деки можно самому, так и брать готовые с сайта.
Тема же сегоднешнего заняти, натырить картинок с тырнета и сделать из них красивую деку(набор карточек).
итак поехали
1. выберем жертв, в моем случае стали 2 сайта http://www.my-english-dictionary.com и www.pdictionary.com скачаем их через wget
2. Исследуем скачаные дириктории
2.1 в случае с pdictionary все просто , картинки лежат в папке images и носят названия того что на них изображено
2.2. c my-english-dictionary все гораздо интереснее
тоесть на каждую картинку по отдельной страничке и с именем eng???.htm с картинкой eng???.jpg
слазив внутрь заметим что название картинок лежит в теге img с сылкой на наше изображение а имя картинки в атрибуте alt
Ну так как видно что все идет строго попарядку можно в цикле пройти по всем htm страничкам и переименовать файлы в вид name.jpg и положим их в папки result и result_small (кто его знает может thumbnail-ы тоже кому пригодятся)
итак.. мы получили картинки, но о боже.. большие картинки с большими черными подсказками :)

что же делать... "Доктор, нужно резать!"... да.. будем резать.. и резалку мы возьмем imagemagic, и резултат трудов положим еще в одну поддирикторию result
можно посмотреть результат наших трудов - что все ок. ну и двинем дальше.
Насколько помнится мы загрузили изображения еще со 2го сайта, и внимательный телепат наверняка разглядел что изображения то там не jpg а gif - ну не будем портить всю малину через тот же image magic сконвертим их в jpg и двинем в текующую фотку где у нас уже есть изображения(перейдем в тот сайт и из дириктории image вфполним следующее
это мы так скопировали, а теперь их переделаем в jpg (вернемся в ..../result/result и выполним вот это колдовство
ну и избавимся от наших гифок
3. Самое интересное.. файлы у нас есть все называются как надо - осталось их загнать в деку анки. ну и конечно руками мы это делать не будем. что нам в конце концов - делать чтоль нечего
топаем на страничку http://ichi2.net/anki/wiki/FileImport которая нам рассказывает как можно создать файл вида
левая часть это одна сторона карточки, а правая "Сюрприз!!!!" не только изображение но еще и произношение.
Я вспомнил про когда то скачаные словари для stardict с произношением, и подумал что вот он!, тот шанс :)... но на этом не остановился когда узнал что слов многих нету и на помощь пришел сайт http://www.answers.com который любезно согласился предоставить отсутствующие звуки.
упуская подробности (одной строкой выполнять все эти операции было тяжело) и я наваял небольшой скрптик, правда не отладил но главное работает
эхх шит фокус с echo -e "\t" не удался.. придется подправить .. заменить все пробелы на таб
смысл в том что нужно поменять значение переменной DIRECTORY на то куда вы выложили файлы, SOUND_DIRS - это то где скрипт ищет произношение (не бязательно полный путь, так как идет все через grep)
ну и результат получаем файл import и папку media
открываем anki
жмем на create (name=mediadeck)
file->import выбираем наш файл "import"
saveas (mediadeck)
теперь нужно зайти в :~/.anki/decks
и создать там дирикторию mediadeck.media
и копируем
после этого в анки нужно выполнить Tools>Advanced>Check Media DB (tag cards)
ну вот вобщем то и все.
Я понимаю что инструкция тяпляп. :) - поэтому если это действительно кому то еще понадобится - пишите письма :). постораюсь ответить (главная тут проблема что я не указывал из какой дириктории что делал, так что кофейная гущя вам в помощ)
а вот скриншот того что получилось (картинка и значек проигрывателя который произносит слово)
+-+Anki.png)
ну а это готовая дека, которая получилась, распаковать зип и импортировать shared.anki
Итак .. немного вводная.
Anki программа для запоминания, Это Обычные карточки, но которые показываются по определенному алгоритму, и те карты которые сложно запомнить показываются чаще, которые легко реже.
Создавать деки можно самому, так и брать готовые с сайта.
Тема же сегоднешнего заняти, натырить картинок с тырнета и сделать из них красивую деку(набор карточек).
итак поехали
1. выберем жертв, в моем случае стали 2 сайта http://www.my-english-dictionary.com и www.pdictionary.com скачаем их через wget
$mkdir sites && cd sites
$wget -pdrc http://www.my-english-dictionary.com
$wget -pdrc www.pdictionary.com
2. Исследуем скачаные дириктории
2.1 в случае с pdictionary все просто , картинки лежат в папке images и носят названия того что на них изображено
$ls www.pdictionary.com/images/
a b c d e f g h i j k l m misc n o p q r s t u v w x y z
$ls www.pdictionary.com/images/z
zebra.gif zero.gif zigzag.gif zipper.gif
2.2. c my-english-dictionary все гораздо интереснее
$ ls |head
eng100.htm
eng100.jpg
eng101.htm
eng101.jpg
eng102.htm
eng102.jpg
eng103.htm
тоесть на каждую картинку по отдельной страничке и с именем eng???.htm с картинкой eng???.jpg
слазив внутрь заметим что название картинок лежит в теге img с сылкой на наше изображение а имя картинки в атрибуте alt
$cat eng100.htm |grep 100.jpg
<img src = "eng100.jpg" alt= "drawer" border = 0>
Ну так как видно что все идет строго попарядку можно в цикле пройти по всем htm страничкам и переименовать файлы в вид name.jpg и положим их в папки result и result_small (кто его знает может thumbnail-ы тоже кому пригодятся)
$mkdir result&&mkdir result_small
$for i in `seq 1 408`;do NAME=`cat eng$i.htm|grep eng$i.jpg|sed 's|.*alt= "||g;s|".*||g'`;echo $NAME;cp eng$i.jpg result/$NAME.jpg;cp s-eng$i.jpg result_small/$NAME.jpg; done
итак.. мы получили картинки, но о боже.. большие картинки с большими черными подсказками :)

что же делать... "Доктор, нужно резать!"... да.. будем резать.. и резалку мы возьмем imagemagic, и резултат трудов положим еще в одну поддирикторию result
$mkdir result
$for i in *;do convert $i -crop 400x265+0+0 result/$i;done
можно посмотреть результат наших трудов - что все ок. ну и двинем дальше.
Насколько помнится мы загрузили изображения еще со 2го сайта, и внимательный телепат наверняка разглядел что изображения то там не jpg а gif - ну не будем портить всю малину через тот же image magic сконвертим их в jpg и двинем в текующую фотку где у нас уже есть изображения(перейдем в тот сайт и из дириктории image вфполним следующее
$cp */*.gif ../../www.my-english-dictionary.com/result/result/
это мы так скопировали, а теперь их переделаем в jpg (вернемся в ..../result/result и выполним вот это колдовство
$for i in *.gif;do convert $i ${i/gif/jpg};done
ну и избавимся от наших гифок
$rm *.gif
3. Самое интересное.. файлы у нас есть все называются как надо - осталось их загнать в деку анки. ну и конечно руками мы это делать не будем. что нам в конце концов - делать чтоль нечего
топаем на страничку http://ichi2.net/anki/wiki/FileImport которая нам рассказывает как можно создать файл вида
caption [tab] x-ray <img src="x-ray.jpg">[sound:x-ray.ogg]
левая часть это одна сторона карточки, а правая "Сюрприз!!!!" не только изображение но еще и произношение.
Я вспомнил про когда то скачаные словари для stardict с произношением, и подумал что вот он!, тот шанс :)... но на этом не остановился когда узнал что слов многих нету и на помощь пришел сайт http://www.answers.com который любезно согласился предоставить отсутствующие звуки.
упуская подробности (одной строкой выполнять все эти операции было тяжело) и я наваял небольшой скрптик, правда не отладил но главное работает
#!/bin/bash
DIRECTORY=/home/nikolay/sites/www.my-english-dictionary.com/result/result
EXTENSION=jpg
SOUND_EXTENSION="ogg mp3 wma wav"
SOUND_DIRS="(stardict|$DIRECTORY)"
SITE='http://www.answers.com'
OUT_MEDIA_DIR=$DIRECTORY/media
OUT_FILE=import
rm $OUT_FILE
if [ -d "$OUT_MEDIA_DIR" ];
then
rm -Rf "$OUT_MEDIA_DIR"
fi
mkdir "$OUT_MEDIA_DIR"
cd $DIRECTORY
for i in *$EXTENSION;
do
FULL_NAME=$i;
NAME="${i/.jpg/}";
SOUND_FILE_NAME=$(ls $NAME.*|egrep '(ogg|mp3|wma|wav)')
if [ -z "$SOUND_FILE_NAME" ];
then
for i in $SOUND_EXTENSION;
do
SOUND_FILE_PATH=$(locate "/$NAME.$i"|egrep "$SOUND_DIRS")
if [ -n "$SOUND_FILE_PATH" ];
then
SOUND_FILE_NAME=$NAME.$i
cp "$SOUND_FILE_PATH" "$SOUND_FILE_NAME"
break
fi
done
if [ -z "$SOUND_FILE_NAME" ];
then
#truing download from answer.com loca
wget -q $SITE/$NAME --output-document $NAME.tmp
SERVER_FILE_PATH=$(cat $NAME.tmp |grep playIt|grep wav|sed "s/.*playIt('//g;s/'.*//g"|sed q)
if [ -n "$SERVER_FILE_PATH" ];
then
wget -q $SERVER_FILE_PATH --output-document $NAME.wav
SOUND_FILE_NAME="$NAME.wav"
fi
rm $NAME.tmp
fi
fi
STRING="$NAME$(echo -e '\t')<img src=\"$FULL_NAME\">"
cp "$FULL_NAME" "$OUT_MEDIA_DIR/"
if [ -n "$SOUND_FILE_NAME" ];
then
STRING="$STRING[sound:$SOUND_FILE_NAME]"
cp "$SOUND_FILE_NAME" "$OUT_MEDIA_DIR"
fi
echo $STRING>>$OUT_FILE
done;
эхх шит фокус с echo -e "\t" не удался.. придется подправить .. заменить все пробелы на таб
$ sed -i 's| |\t|' import
смысл в том что нужно поменять значение переменной DIRECTORY на то куда вы выложили файлы, SOUND_DIRS - это то где скрипт ищет произношение (не бязательно полный путь, так как идет все через grep)
ну и результат получаем файл import и папку media
открываем anki
жмем на create (name=mediadeck)
file->import выбираем наш файл "import"
saveas (mediadeck)
теперь нужно зайти в :~/.anki/decks
и создать там дирикторию mediadeck.media
$mkdir ~/.anki/decks/mediadeck.media
и копируем
$cp media/* /home/nikolay/.anki/decks/mediadeck.media/
после этого в анки нужно выполнить Tools>Advanced>Check Media DB (tag cards)
ну вот вобщем то и все.
Я понимаю что инструкция тяпляп. :) - поэтому если это действительно кому то еще понадобится - пишите письма :). постораюсь ответить (главная тут проблема что я не указывал из какой дириктории что делал, так что кофейная гущя вам в помощ)
а вот скриншот того что получилось (картинка и значек проигрывателя который произносит слово)
+-+Anki.png)
ну а это готовая дека, которая получилась, распаковать зип и импортировать shared.anki
Подписаться на:
Сообщения (Atom)