-
Notifications
You must be signed in to change notification settings - Fork 29
Home
Программа автоматически по английским субтитрам разбивает фильм/сериал на отдельные фрагменты (сцены/диалоги/фразы). Также автоматически создается tsv файл для импорта в Anki, содержащий английский транскрипт и русский перевод (если были добавлены русские субтитры).
Версия программы в виде аддона для Anki — https://ankiweb.net/shared/info/939347702
- Объединение субтитров в фразы.
- Разбиение длинных фраз на более короткие.
- Разбиение видеофайла по получившимся субтитрам на видео и аудио фрагменты и генерация tsv файла для импорта в Anki.
В общем, эта программа, в некотором роде, просто облегченная/урезанная версия subs2srs, только с предварительным объединением отдельных субтитров в фразы.
Лицевая сторона содержит английский транскрипт и видеофрагмент.
Оборотная сторона содержит аудиофрагмент, русский перевод (если были добавлены русские субтитры) и копию лицевой стороны (английский транскрипт и видеофрагмент).
Один из вариантов просмотра карточки следующий:
- Просматривается видеофрагмент.
- Прослушивается аудио с одновременным чтением английского транскрипта.
- Прослушивается аудио еще раз с чтением русского перевода.
- Заново просматривается видеофрагмент.
В зависимости от сложности карточки некоторые пункты пропускаются, заменяются или адаптируются под себя.
Пример просмотра таким образом (все 4 шага) одной карточки:
-
Three Men in a Boat (1975) - https://www.youtube.com/watch?v=81zzAKm1OCQ
-
Sharpe's Rifles (1993) - https://www.youtube.com/watch?v=OkJuZ83HD_Q
-
Shrek (2001) - https://www.youtube.com/watch?v=ueJfsp8OkTo
При просмотре на компьютере, возможно, будет полезен аддон "Replay buttons on card" или его чуть измененная версия, чтобы при клике файл сразу воспроизводился, а не добавлялся в очередь.
Окно программы выглядит следующим образом:
-
После выбора видеофайла происходит попытка выбрать первую английскую дорожку. Если английскую дорожку не получится найти, будет выбрана последняя аудиодорожка в файле.
-
Также программа после добавления видеофайла попытается по его имени найти английские и русские субтитры. Английские субтитры будут искаться по шаблону: 'имя видеофайла' + маска (сначала *eng*.srt, затем *en*.srt и в конце .srt).
-
Поддерживаются srt субтитры в кодировке cp1251 и utf-8.
Для конвертации субтитров из формата ass в srt можно воспользоваться Aegisub
(открыть ass субтитры -> меню Файл -> Экспорт субтитров... -> Экспорт... -> ввести имя файла с расширением srt)
. -
Параметр "Pad Timings" корректирует начало и окончание субтитров, для более удобного просмотра видеофрагментов. Значение параметра "Start" будет вычтено из начала каждой фразы, а значение "End" добавлено к окончанию каждой фразы (по-умолчанию - 500 мс, у меня установлено - 750 мс).
-
Параметр "Gap between Phrases" отвечает за объединение субтитров в отдельные фразы. Если между субтитрами прошло больше времени чем установлено в "Gap between Phrases", то они считаются разными фразами. Иначе - объединяются в одну фразу.
-
Если установлена галочка напротив "Split Long Phrases", то субтитры превышающие установленную продолжительность будут разбиты, по-возможности, на фразы продолжительностью меньшей чем установленная и, по-возможности, более-менее равномерно. Ею удобно пользоваться, например, при просмотре видео с TED.
-
Если выбрана опция "Movie", то окончание каждой фразы будет изменено на начало следующей фразы. Таким образом, можно посмотреть весь фильм по карточкам.
При этом первый субтитр будет начинаться с 0 секунд, но если первый субтитр появляется на экране позже чем 15 сек от начала видеофайла, то время начала первого субтитра не будет изменено, а дополнительно перед первым субтитром будет вставлен пустой субтитр.
-
По нажатию на кнопку "Preview..." появится окно с информацией о количестве получившихся фраз и продолжительность самой длинной фразы и, если включена опция is_write_output_subtitles, то рядом с видеофайлом будут записаны получившиеся субтитры с фразами: "видеофайл.out.en.srt" и "видеофайл.out.ru.srt".
-
Последние пять имен колод для Anki (поле "Name for deck") сохраняются и доступны для выбора (направленный вниз треугольник справа).
-
По нажатию кнопки "Go!" будет создан tsv файл в выходной директории с именем "имя_колоды.tsv" и будет создана папка "имя_колоды.media". После этого будет запущен процесс создания видео и аудио фрагментов, которые будут записаны в только-что созданную папку. При этом, если папка "имя_колоды.media" уже существует на диске, то появится диалоговое окно с запросом о перезаписи этой папки. Если было выбрано "Нет", то процесс создания фрагментов будет отменен.
-
В файл log.txt записывается отладочная информация и возможные ошибки программы. При запуске программы вся информация удаляется и при закрытии программы вся новая информация сохраняется на диск.
-
Перед объединением субтитров в отдельные фразы сначала субтитры будут объединены в предложения, при этом длина предложения не будет превышать значение параметра "Split Long Phrases".
Сделано на случай разбиения длинных фраз на более короткие. Чтобы разбиение, по-возможности, происходило не в середине фразы, а после точки, восклицательного или вопросительного знака.
-
Настройки программы сохраняются в файл config.ini. Если этот файл удалить, то программа запустится с настройками по умолчанию. В файле есть пара настроек, которые отсутствуют в интерфейсе программы. Это:
-
is_write_output_subtitles - сохранять ли получившиеся субтитры на диск (по умолчанию - не сохранять (False))
-
is_ignore_sdh_subtitle - игнорировать при чтении субтитры для слабослышащих (по умолчанию - да (True)). Т.е. при загрузке субтитров будут проигнорированы субтитр: "[Laughter]" или "(Cannon fire) (Soldiers chanting)", но оставлен субтитр "(Clears throat) South Essex!"
-
is_add_dir_to_media_path - добавляет "имя_колоды.media/" к пути для медиа к Audio и Video полям карточки (по умолчанию - False).
-
Если эта опция включена (параметр установлен в True), то тогда в папку collection.media переносится полностью вся папка, а не медиафайлы из нее.
-
Но при этом "Check Media..." опция в Anki не будет работать с такими карточками.
-
-
is_write_output_subtitles_for_clips - сохраняет "исходные" английские субтитры рядом с каждым видеофрагментом. Преимущественно только под Linux, т.е. под Windows нет простой возможности задействовать такие субтитры при просмотре.
-
is_create_clips_with_softsub - добавляет "исходные" английские субтитры в каждый видеофрагмент внутрь контейнера (softsub). Преимущественно под Windows.
Чтобы mplayer показывал такие субтитры на десктопной версии Anki на Windows надо скопировать файл Arial из папки C:\Windows\Fonts в папку C:\Program Files\Anki\mplayer. Переименовать файл
arial.ttf
вsubfont.ttf
, а все другие *.ttf файлы, которые, возможно, были скопированы, удалить. -
is_create_clips_with_hardsub - добавляет "исходные" английские субтитры в видео (hardsub). Преимущественно под AnkiDroid, т.к. встроенный видеоплеер не умеет показывать субтитры. К имени видеофайла при этом будет добавлен суффикс
sub
. -
hardsub_style - стиль субтитров, которые будут добавлены к видео, если задействована предыдущая опция. По умолчанию -
FontName=Arial,FontSize=24,OutlineColour=&H5A000000,BorderStyle=3
. Про возможные опции можно посмотреть в Section 5 ass-specs. -
is_separate_fragments_without_subtitles - в режиме Movie вместо увеличения продолжительности текущей фразы до начала следующей фразы кусочек без субтитров просто будет сохранен в отдельном файле.
-
Видео по установке и настройке в Windows - https://www.youtube.com/watch?v=Uu9oT5z08Is
Windows - https://github.com/kelciour/movies2anki/releases/latest
Linux & MacOS - https://github.com/kelciour/movies2anki (последняя версия скрипта, шаблон карточки (movies2anki-sample.apkg) и инструкция по установке).
Запустить Anki и импортировать movies2anki-sample.apkg. При импорте колоды с примерами карточек также будет импортирован и шаблон карточки.
-
С помощью movies2anki запустить процесс создания карточек.
-
В Anki с помощью меню File -> Import... выбрать только что созданный tsv файл.
-
В Import Options выбрать шаблон
movies2anki
. -
В Deck создать новую колоду.
Для удобства если добавляется следующая серия можно сначала выбрать колоду с предыдущей серией, потом нажать Add, тогда в Deck Name будет автоматически подставлено имя выбранной колоды, останется изменить только цифру серии на следующую и нажать OK.
В имени колоды через ::
можно задавать вложенность, например, Friends::Season 4::Friends s04e07
.
-
Убедиться, что поля разделены табуляцией (
Fields separated by: Tab
). -
Выбрать:
Import even if existing note has same first field
. -
Поставить галочку около
Allow HTML in fields
. -
Нажать
Import
.
- Дождаться завершения процесса создания карточек и импортировать получившиеся видео и аудио фрагменты в collection.media директорию программы Anki.
-
Рекомендую установить несколько аддонов:
-
Также, возможно, необходимо настроить mplayer (видео)
- Как минимум, на Windows 7 необходимо добавить несколько дополнительный опций в config файл видеопроигрывателя mplayer, с помощью которого Anki воспроизводит видео.
- Файл "config" находится в папке
C:\Program Files\Anki\mplayer
(папка mplayer и config файл в ней появится после первого запуска видеофайла). В последней версии Anki файл расположен в папкеC:\Users\<имя пользователя>\mplayer
. - Далее добавить в файл "config" строчки:
vo=gl ontop=yes
- Либо можно скачать уже модифицированный файл config по ссылке (https://gist.github.com/kelciour/ec20af331fd196e44a4bb4b9e7a5df40).
-
При просмотре можно использовать горячие клавиши Anki:
- Space - показать обратную сторону карточку
- 3 - установить интервал Easy и перейти к следующей карточке (работает только на обратной стороне карточки)
- ; - пропустить обратную сторону карточки и перейти к следующей карточке (нужен аддон Handy Answer Keys Shortcuts)
- R - повторно воспроизвести видео/аудио
- Shift + 8 - пометить карточку звездочкой
При желании горячие клавиши можно настроить под себя, отредактировав аддон Handy Answer Keys Shortcuts через меню Tools - Add-ons - Handy Answer Keys Shortcuts - Edit или Tools - Add-ons - Open Add-ons Folder и открыв в текстовом редакторе файл Handy_Answer_Keys_Shortcuts.py. Например, можно модифицировать горячие клавиши следующим образом (исходный код):
- 3 - установить интервал Easy и перейти к следующей карточке (работает на обеих сторонах карточки)
- T - пометить карточку звездочкой
Если к видеофрагментам были сгенерированы субтитры:
- V - отключение/включение субтитров
или - J - включение/отключение субтитров (если в config файл была добавлена строка
nosub=yes
илиnoautosub=yes
)
-
Зайти в
Preferences -> AnkiDroid
:-
Добавить AnkiWeb аккаунт
-
Снять галочку с
Fetch media on sync
(т.к. media синхронизируется вручную)
-
- Карточки добавляются на компьютере, затем с помощью AnkiWeb (https://ankiweb.net) синхронизируются с AnkiDroid (без media).
В десктопной версии и AnkiDroid у меня снята галочка с пункта Synchronize audio and images too
. Так как сервис AnkiWeb не предназначен для хранения видеофайлов, синхронизация медленная и место на телефоне ограничено, то использую десктопную версию как основное хранилище, а на телефон скидываю только то, что смотрю в данный момент.
-
Чтобы перекидывать media файлы на телефоне установлен SSHDroid, а на компьютере WinSCP, но можно и через USB кабель. Медиафайлы переносятся в папку
AnkiDroid/collection.media
. -
При просмотре трудные и интересные карточки помечаю (нажимаю на звездочку).
-
После просмотра фильма/серии захожу в десктопной версии в Browse (Обзор), выбираю колоду, просмотр которой завершил, добавляю в поле поиска
-tag:marked
к названию колоды, нажимаю Enter и удаляю все непомеченные карточки.
После просмотра колоду можно экспортировать, оставить только транскрипт и перечитать, например, на киндле.
-
Предварительная настройка Sublime Text
- Установить Sublime Text 3. После этого установить Package Control и с его помощью установить плагин RegReplace (в Sublime Text нажать комбинацию клавиш Ctrl+Shift+P, набрать
Install package
и выбратьPackage Control: Install Package
, после этого в появившейся строке поиска набрать RegReplace и нажать Enter) - В Sublime Text выбрать меню Preferences - Package Settings - RegReplace - "Rules - User". И скопировать в открывшийся файл настроек содержимое текстового файла по ссылке - reg_replace_rules.sublime-settings
- В Sublime Text выбрать меню Preferences - Package Settings - RegReplace - "Commands - User". И скопировать в открывшийся файл настроек содержимое текстового файла по ссылке - Default.sublime-commands
- Установить Sublime Text 3. После этого установить Package Control и с его помощью установить плагин RegReplace (в Sublime Text нажать комбинацию клавиш Ctrl+Shift+P, набрать
-
В Anki напротив колоды нажать на шестеренку и выбрать
Export
-
В
Export format
выбратьNotes in Plain Text (\*.txt)
и снять галочку сInclude tags
-
Нажать
Export...
-
Открыть получившийся текстовый файл в редакторе Sublime Text 3, нажать комбинацию клавиш Ctrl + Shift + P и набрать movies2anki, после этого выбрать [eng] или [eng/rus] и нажать Enter.
В результате, на киндле получившийся файл будет выглядеть следующим образом: Zootopia.
- Пакетный режим обработки активируется, если в имени видеофайла присутствуют символы
*
и/или?
.
Полученное регулярное выражение используется для получения списка видеофайлов для пакетной обработки. - В имени колоды специальным шаблоном указывается изменяемая часть, вместо которой будут подставляться цифры, а также стартовый номер. Например,
Friends s01e{##/5}
, где в фигурных скобочках символами решетки указывается ширина поля для замены, а через косую черту стартовый номер.
В итоге, если в папке находятся видеофайлы с 5 по 24 серию, то имена колод будут следующие: Friends s01e05, Friends s01e06, ..., Friends s01e11, ..., Friends s01e24.
Для каждого видеофайла будет создан свой tsv файл и своя папка с медиа.
Перед началом обработки будут проверены существуют ли папки, и если какая-то папка существует, то программа спросит пользователя перезаписывать ли папку.
-
При импорте в Anki иногда Anki в качестве разделителя полей автоматически выбирает запятую, а не табуляцию. В этом случае вручную меняем на табуляцию.
-
Если необходимо отложить показ карточек, просмотренных ранее, т.е. показывать сначала только новые карточки
- Самый простой способ - это зайти в настройки Anki и выбрать "Show new cards before reviews" вместо "Mix new cards and reviews", но эта настройка глобальная и повлияет также и на другие колоды.
- Либо можно создать новую группу опций с другими интервалами для кнопок (например, для "Easy" сделать 7 дней) и применить ее к колоде с фильмом. Для этого надо кликнуть на шестеренку рядом с колодой, выбрать Options, в самом верху будет еще одна шестеренка, кликнуть на нее и выбрать Add, создать новую группу опций и изменить интервал.
- Либо также создать новую группу опций и на вкладке Reviews установить значение Maximum reviews/day равным нулю.
По вопросам и предложениям пишите на почту: [email protected]
- Описание
- Возможности программы
- Пример карточки в Anki
- Просмотр фильма
- Описание интерфейса
- Скачать
- Добавление шаблона карточки в Anki
- Импорт колоды в Anki
- Просмотр карточек в Anki
- Просмотр карточек в AnkiDroid
- Экспорт просмотренной колоды в текстовый файл
- Пакетная обработка
- Возможные проблемы
- Контакты