- Сообщения
- 24
- Реакции
- 0
Доброго дня, товарищи.
Помогите с проблемой, кто может.
Обычно я справляюсь стандартным поиском-заменой или грепом, однако появилась нужда помочь с причесыванием текста в удобопонятный вид, а вот это мне уже оказывается не под силу без изучения яваскрипта, на что в настоящий момент нет времени.
Есть несколько текстов (возможно, их количество увеличится позже), в которых напихано до нескольких тысяч таймстампов вида секунды:миллисекунды, привязанных к определенным событиям (включилось тогда-то, выключилось тогда-то; зажглось-потухло, и так далее). Чем создано, я не знаю, и не могу сказать, почему не в виде hh:mm:ss, более удобном для понимания длительности процесса обычному человеку.
При более-менее детальном рассмотрении оказалось, что несмотря на разные тэги в разных текстах целая часть таймстампа ищется греповским \d+(?=\.) совершенно безошибочно, других чисел с точкой за ними просто нет, в текстах либо титров, либо реплик все числительные прописаны буквами. Но дальше мне приходится вычислять каждый отдельно, так сказать, мануально, хоть и головой. В соответствии со всеми законами Мерфи я начинаю косячить примерно на 10-й таймстамповской минуте и дальше. Да и не хватает старика надолго.
Если повыкинуть все ненужное, то оставшаяся полезная нагрузка выглядит примерно так: [start],45.456,[end],46.524,[start],49.456,[end],52.228,[start],64.406,[end],78.327 и т.д. (Либо [begin],45.456,[stop],46.524,[begin],49.456,[stop],52.228,[begin],64.406,[stop],78.327., включая [fade-in][fade-out], и т.д., и т.п.)
Я проковырялся неделю с попытками написать скрипт без знания языка, но толком ничего не придумал, кроме того, что нашел в интернетах вроде бы работающий кусок по переводу секунд во время типа:
var hours = Math.floor(timestamp / 3600);
var minutes = Math.floor(timestamp / 60) - (hours * 60);
var seconds = timestamp % 60;
var formatted = [
hours.toString().padStart(2, '0'),
minutes.toString().padStart(2, '0'),
seconds.toString().padStart(2, '0')
].join(':');
Как, однако, использовать это, я не представляю пока (и будет ли это работать в ID). Было бы у меня время, я бы потратил месяц-другой на изучение и не беспокоил вас напрасно, но оно поджимает просившего меня оказать помощь.
Помогите с проблемой, кто может.
Обычно я справляюсь стандартным поиском-заменой или грепом, однако появилась нужда помочь с причесыванием текста в удобопонятный вид, а вот это мне уже оказывается не под силу без изучения яваскрипта, на что в настоящий момент нет времени.
Есть несколько текстов (возможно, их количество увеличится позже), в которых напихано до нескольких тысяч таймстампов вида секунды:миллисекунды, привязанных к определенным событиям (включилось тогда-то, выключилось тогда-то; зажглось-потухло, и так далее). Чем создано, я не знаю, и не могу сказать, почему не в виде hh:mm:ss, более удобном для понимания длительности процесса обычному человеку.
При более-менее детальном рассмотрении оказалось, что несмотря на разные тэги в разных текстах целая часть таймстампа ищется греповским \d+(?=\.) совершенно безошибочно, других чисел с точкой за ними просто нет, в текстах либо титров, либо реплик все числительные прописаны буквами. Но дальше мне приходится вычислять каждый отдельно, так сказать, мануально, хоть и головой. В соответствии со всеми законами Мерфи я начинаю косячить примерно на 10-й таймстамповской минуте и дальше. Да и не хватает старика надолго.
Если повыкинуть все ненужное, то оставшаяся полезная нагрузка выглядит примерно так: [start],45.456,[end],46.524,[start],49.456,[end],52.228,[start],64.406,[end],78.327 и т.д. (Либо [begin],45.456,[stop],46.524,[begin],49.456,[stop],52.228,[begin],64.406,[stop],78.327., включая [fade-in][fade-out], и т.д., и т.п.)
Я проковырялся неделю с попытками написать скрипт без знания языка, но толком ничего не придумал, кроме того, что нашел в интернетах вроде бы работающий кусок по переводу секунд во время типа:
var hours = Math.floor(timestamp / 3600);
var minutes = Math.floor(timestamp / 60) - (hours * 60);
var seconds = timestamp % 60;
var formatted = [
hours.toString().padStart(2, '0'),
minutes.toString().padStart(2, '0'),
seconds.toString().padStart(2, '0')
].join(':');
Как, однако, использовать это, я не представляю пока (и будет ли это работать в ID). Было бы у меня время, я бы потратил месяц-другой на изучение и не беспокоил вас напрасно, но оно поджимает просившего меня оказать помощь.