Конвертер TXT в JSON
Или вставьте текст субтитров
Параметры
Используется, когда в источнике нет времени окончания (простой текст, LRC). Таймлайн в результате строится здесь, а не преобразуется, поэтому вы получите именно это число.
Что меняет эта конвертация
1 пункт теряется или требует решения
- Тайминг
сам таймлайн — источник не хранит тайминга, поэтому в результате он строится, а не преобразуется
Этот список выведен из матрицы возможностей этих двух форматов, а не из загруженного файла. Конкретный файл может потерять больше, если использует возможности, которые формат допускает, а матрица не моделирует.
Конвертер TXT в JSON нужен, когда плеер или платформа принимает только второй формат: TXT здесь — чистый текст без времени, разметки и оформления, JSON — внутренний формат сайта, который хранит полную модель субтитров. В TXT нет ни одной отметки времени, поэтому JSON получит шкалу, построенную сайтом: по 2 000 мс на строку по умолчанию. Порядок строк при этом сохраняется, а текст переносится без изменений.
Сайт перечисляет потери до запуска — построение новой шкалы времени; исходных отметок времени в TXT нет, поэтому шкала JSON создаётся с нуля: по 2 000 мс на строку, если не задать другую длительность.
Сервер не участвует: файл читается и записывается в браузере, поэтому можно обрабатывать пакеты и прерывать очередь в любой момент.
Примеры
Обычный файл TXT, переведённый в JSON
Вход
The quick brown fox jumps over the lazy dog.
Second paragraph, first line.
Second paragraph, second line.
Выход
{
"version": 1,
"cues": [
{
"start": 0,
"end": 2000,
"lines": [
"The quick brown fox jumps over the lazy dog."
]
},
{
"start": 2000,
"end": 4000,
"lines": [
"Second paragraph, first line."
]
},
{
"start": 4000,
"end": 6000,
"lines": [
"Second paragraph, second line."
]
}
]
}
Сравните две стороны: в TXT нет ни одной отметки времени, поэтому JSON получает шкалу, построенную сайтом из строк, а текст сохраняется дословно.
Тот же перевод на неаккуратном файле TXT
Вход
Hello world.
Second block.
Выход
{
"version": 1,
"cues": [
{
"start": 0,
"end": 2000,
"lines": [
"Hello world."
]
},
{
"start": 2000,
"end": 4000,
"lines": [
"Second block."
]
}
]
}
Второй файл намеренно неровный: BOM, переводы строк CRLF. TXT читает его без падения, а JSON записывается заново, поэтому часть дефектов исчезает, но пропущенные блоки не возвращаются.
Частые вопросы
Как будут выглядеть таймкоды TXT после перевода в JSON?
В TXT нет ни одной отметки времени, поэтому JSON получит шкалу, построенную сайтом: по 2 000 мс на строку по умолчанию. Порядок строк при этом сохраняется, а текст переносится без изменений.
Чем придётся пожертвовать при экспорте TXT в JSON?
исходных отметок времени в TXT нет, поэтому шкала JSON создаётся с нуля: по 2 000 мс на строку, если не задать другую длительность. Это полный список потерь для пары TXT → JSON; сайт показывает его до запуска.
В каком виде JSON хранит реплики после перевода TXT в JSON?
JSON записывает каждую реплику объектом с полями id, start, end и lines; время — целые миллисекунды (1000 и 3500), поэтому округления нет. Строки TXT становятся элементами lines, а теги оформления — отдельными объектами.
Не перепутается ли порядок реплик после конвертации TXT в JSON?
TXT не хранит переносов внутри реплики: каждая строка станет отдельной репликой JSON, а порядок строк сохраняется.
В какой кодировке сохраняется JSON и какое у него расширение при переводе из TXT?
Файл JSON записывается в UTF-8 без BOM с переводами строк LF и расширением .json; при чтении TXT сайт сам определяет BOM и стиль переводов строк и нормализует их. Кириллица и другие алфавиты сохраняются без замены символов.
Откуда возьмётся таймкод при переводе TXT в JSON?
В TXT нет времени, поэтому JSON получит шкалу, построенную сайтом: каждая непустая строка станет репликой длиной 2 000 мс по умолчанию. Это не перевод исходных отметок, а новая разметка, которую обычно правят вручную.