- PVSM.RU - https://www.pvsm.ru -
Всем привет! Написал небольшой скрипт, который ищет заданную фразу по всем субтитрам в папке (и во всех подпапках) и показывает соответствующий видеофайл с этого места. Если было несколько совпадений, то будет создан плейлист, по которому можно перемещаться либо с помощью «Enter» либо «Shift + <» и «Shift + >».
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, то скорее всего ошибка в фразе для поиска. Возможно, нужно экранировать некоторые спец. символы обратной косой чертой ().
На странице загрузки [2] есть готовый бинарник под Windows (архив playphrase.zip).
Для упрощения ввода новых фраз можно воспользоваться файлом videogrep.bat (под Windows) или videogrep.sh (под Linux), предварительно отредактировав его и изменив в текстовом редакторе путь к папке с видеофайлами и субтитрами. Для выхода можно набрать quit, exit или q, x.
Если кратко, то последовательность примерно следующая (предполагается, что аудиокнига разбита по главам):
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+$/" {*}
python -m aeneas.tools.execute_task audio.mp3 text.txt "task_language=eng|os_task_file_format=srt|is_text_type=plain" subtitles.srt
В итоге получится как-то так:
В общем, может быть, кому-нибудь будет полезна.
Автор: Николай
Источник [9]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/open-source/262855
Ссылки в тексте:
[1] github.com/kelciour/playphrase: https://github.com/kelciour/playphrase
[2] странице загрузки: https://github.com/kelciour/playphrase/releases/latest
[3] aeneas: https://github.com/readbeyond/aeneas
[4] онлайн версией: https://aeneasweb.org
[5] EPUB 3 Audio-eBooks: https://www.readbeyond.it/ebooks.html
[6] csplit: https://en.wikipedia.org/wiki/Csplit
[7] Pragmatic Segmenter: https://github.com/diasks2/pragmatic_segmenter
[8] text-segmenter.rb: https://gist.github.com/kelciour/d281f2091c63ef39698896b2f549413b
[9] Источник: https://geektimes.ru/post/292387/
Нажмите здесь для печати.