Перейти к содержанию

Участник:Isbur/Anki workflow

Материал из Викиверситета

Anki - кроссплатформенное open source приложение для создания и запоминания флэш-карточек.

[Manual:Pywikibot/Installation| Мануал] по установке PyWikiBot - обёртки над API Mediawiki.

Интересующие скрипты из этого фреймворка:

  • listpages.py - с ним мы будем работать
  • pagegenerators.py - listpages активно использует pagegenerators, нам понадобится знание опций для этого скрипта (их можно просто передавать вместе с собственными опциями listpages).

Перенос из Mediawiki в промежуточный файл

[править]

Запускать в cmd! иначе будет плохо[1][2]:

--> python pwb.py listpages -format:\"\"{page.title}\"\" -get -search > output.txt
What do you want to search for? --> subpageof:"Isbur/Функциональный анализ I/Карточки"

Приведён вариант для работы с fnr.exe.

Установка

[править]

Как устанавливать – https://github.com/benwr/ankdown

Проблема с установкой – нужно предварительно настроить компилятор для C/C++. Кажется, лучше всего устанавливать версию от Microsoft, хоть она и очень тяжеловесная.

https://wiki.python.org/moin/WindowsCompilers

С MinGW что-то не взошло :(

Работа

[править]

(внутри каталога PyWikiBot, в который скопирован fnr.exe)

python pwb.py listpages -format:%~~~{page.title}% -get -search:"subpageof:\"Isbur/Функциональный анализ I/Карточки\"" > output.txt
fnr.exe --cl --dir "." --fileMask "output.txt" --find "%" --replace "\n\n%\n\n"
fnr.exe --cl --dir "." --fileMask "output.txt" --find "~~~" --replace "\n\n---\n\n"
iconv -f CP1251 -t UTF-8 output.txt > output.utf8.txt
pandoc -f mediawiki -t markdown -o output.md output.utf8.txt
fnr.exe --cl --dir "." --fileMask "output.md" --find "\%" --replace "%"
fnr.exe --cl --dir "." --fileMask "output.md" --find "\-" --replace "-"
mkdir "Functional Analysis I"
cp output.md ".\Functional Analysis I"
ankdown -r ".\Functional Anlysis I" -p "Functional Analysis I"

Перенос из Mediawiki в промежуточный файл (запускать в cmd! иначе будет плохо[3][4]):

--> python pwb.py listpages -format:\"\"{page.title}\"\" -get -search > output.txt
What do you want to search for? --> subpageof:"Isbur/Функциональный анализ I/Карточки"

Затем надо удалить начальные символы, а также заменить <math> и <math что-то там> на <$>, </math> на </$>, например, используя fnr.exe:

"C:\Users\Igor\Pywikibot\core_stable\fnr.exe" --cl --dir "C:\Users\Igor\Pywikibot\core_stable" --fileMask "output.txt" --find """""" --replace """\n\n"""
"C:\Users\Igor\Pywikibot\core_stable\fnr.exe" --cl --dir "C:\Users\Igor\Pywikibot\core_stable" --fileMask "output.txt" --find "<math>" --replace "[$]"
"C:\Users\Igor\Pywikibot\core_stable\fnr.exe" --cl --dir "C:\Users\Igor\Pywikibot\core_stable" --fileMask "output.txt" --find "<math display=""inline"">" --replace "[$]"
"C:\Users\Igor\Pywikibot\core_stable\fnr.exe" --cl --dir "C:\Users\Igor\Pywikibot\core_stable" --fileMask "output.txt" --find "</math>" --replace "[/$]"

Не забывать сконвертировать файл в UTF-8 (например, при помощи Notepad++)

После этого импортировать файл в Anki (и выполнить рекомендации по генерации картинок из латеха!).

Синхронизируем...

Наслаждаемся!

Possible issues

[править]

Полезно установить аддоны (например, зум), однако могут быть проблемы с подключением - поможет VPN.

В Ankdown та же проблема с кодировками, что и в pywikibot'е; однако же, здесь легко найти место, где происходит открытие файла, и можно явно указать там кодировку.

Также в скрипте нужно включить опцию по замене знаков долларов на подходящие для Anki символы.

Примечания

[править]
  1. Пока некорректно работает с UTF-8: то ли надо править сам PyWikiBot, то ли разбираться с переменными окружения
  2. Промежуточное решение - никогда не использовать более PowerShell
  3. Пока некорректно работает с UTF-8: то ли надо править сам PyWikiBot, то ли разбираться с переменными окружения
  4. Промежуточное решение - никогда не использовать более PowerShell