Пример использования:
playphrase.exe -i <media_dir> <phrase>
Перед первым запуском (или при добавлении новых видеофайлов с субтитрами) необходимо по имеющимся srt субтитрам сгенерировать txt файлы, которые будут использоваться при поиске:
playphrase.exe -i <media_dir> _init_
Дополнительные ключи:
-e, --ending — автоматический переход к следующему клипу (своего рода оффлайн версия сервиса playphase.me)
-r, --randomize — перемещивает клипы
-p, --padding PADDING — добавляется к началу и концу каждого клипа (по умолчанию 0.0 секунд)
-o, --output FILENAME — сохраняет результаты поиска в файл
-d, --demo — просто выводит количество совпадений без открытия видеоплеера
-ph, --phrases [GAP_BETWEEN_PHRASES] — показ начнется не с найденной строки субтитра, а чуть раньше (по возможности с начала фразы). При желании после ключа --phrases можно задать значение GAP_BETWEEN_PHRASES (по умолчанию 1.75). Все субтитры, расстояние между которых не больше, чем GAP_BETWEEN_PHRASES, будут объединены в одну фразу.
-l, --limit LIMIT — ограничить максимальную продолжительность фразы (по умолчанию 30 секунд)
> Страница программы
Для работы скрипта необходимо, чтобы имя файла с субтитрами совпадало с именем видеофайла.
При поиске можно использовать регулярные выражения.
Если в консоли появится None, то скорее всего ошибка в фразе для поиска. Возможно, нужно экранировать некоторые спец. символы обратной косой чертой (\).
На странице загрузки есть готовый бинарник под Windows (архив playphrase.zip).
Для упрощения ввода новых фраз можно воспользоваться файлом videogrep.bat (под Windows) или videogrep.sh (под Linux), предварительно отредактировав его и изменив в текстовом редакторе путь к папке с видеофайлами и субтитрами. Для выхода можно набрать quit, exit или q, x.
При желании скрипт можно использовать и с аудиокнигами, но необходимо будет предварительно сгенерировать субтитры для каждого аудиофайла. Для этого можно воспользоваться программой aeneas (или онлайн версией), предназначенной в первую очередь для создания EPUB 3 Audio-eBooks. Для полуавтоматического разбиения текста книги по главам можно использовать, например, консольную утилиту csplit, а для дальнейшего разбиения на более короткие фрагменты Pragmatic Segmenter.
Если кратко, то последовательность примерно следующая (предполагается, что аудиокнига разбита по главам):
- Разбить текст книги по главам с помощью csplit. Пример команды:
csplit "Last Mortal Bond, The - Brian Staveley.txt" /^[0-9]+$/ {*}
csplit "The Lion, the Witch and the Wardrobe.txt" -f "Chapter" -b "_%02d.txt" "/^Chapter \w+$/" {*}
- Разбить текст каждой главы с помощью Pragmatic Segmenter. Для частичной автоматизации можно воспользоваться скриптом text-segmenter.rb (компиляция ответов на Stack Overflow).
- Сгенерировать субтитры для каждого аудиофайла с помощью aeneas. Пример команды:
python -m aeneas.tools.execute_task audio.mp3 text.txt "task_language=eng|os_task_file_format=srt|is_text_type=plain" subtitles.srt
В итоге получится как-то так:
В общем, может быть, кому-нибудь будет полезна.
Комментарии (11)
Geograph
27.08.2017 19:21+1Интересная идея. Ещё бы в MKV-контейнер умела за субтитрами лазить.
kelciour Автор
27.08.2017 21:02Спасибо. Да, такой возможности в программе нет, т.к. всегда обходился простеньким bat файлом для пакетного экспорта srt субтитров из mkv файлов — extract-en-subtitles-from-mkv-files.bat.
Для его работы необходимо установить MKVToolNix и либо добавить папку с установленным MKVToolNix в переменную окружению PATH или просто отредактировать bat файл по ссылке выше, заменив вызов mkvextract на полный путь к программе (что-то типа «C:\Program Files\MKVToolNix\mkvextract.exe»).
Потом просто поместить bat файл в папку с mkv файлами и запустить, изменив при необходимости номер дорожки с английскими субтитрами в файле. Сейчас там 2. Номер дорожки с субтитрами проще всего узнать с помощью MediaInfo, переключив в меню View на Text и посмотрев значение ID у дорожки с субтитрами. Полученный номер ввести в bat файл, уменьшив только его на 1.Ruckus
29.08.2017 10:36ОС бывают и другие. Да и демо скрипта явно не под Windows снято.
kelciour Автор
29.08.2017 15:27Запись видео сделано под Ubuntu, т.к. у меня сейчас нет винды на десктопе. Просто у меня полетел жесткий диск и пришлось переустанавливать систему. Начал с Ubuntu, а до Windows пока руки еще не дошли, а так бы записал бы в Windows, так же как сделал с недавним видео для movies2anki:
Semenchik
28.08.2017 15:30А где можно найти онлайн-версию playphrase.me? :)
kelciour Автор
28.08.2017 16:27Не знаю по каким причинам, но playphrase.me недоступен уже где-то с середины июля. Скорее всего, сайт закрыли. Из не совсем альтернатив есть видео словарь на сервисе puzzle-english.com и сайт youglish.com.
JTG
28.08.2017 16:57+1Некий Sam Lavigne однажды взял отличную библиотеку MoviePy (GitHub) и сделал на её базе отличный инструмент VideoGrep (GitHub).
Со всем этим хозяйством можно делать так:
capjdcoder
Так на Хабр бы эту статью, не?
kelciour Автор
Честно говоря, не представляю в какой из хабов там. Все-таки тематика поста больше соответствует аудитории хаба об изучению иностранных языков, который в свое время как раз и переехал с Хабра на Geektimes, если я не ошибаюсь.