[ Обновленные темы · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: Andrey_A, simup, ХарВик, chip642  
ConvertSrtInSsa.vbs - Конвертировать SRT в SAA
Andrey_AДата: Понедельник, 18.11.2013, 19:21 | Сообщение № 1
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7186
Награды: 143
Репутация: 125
Аверин Андрей
Конвертировать открытый на редактирование файл субтитров SRT в SSA
Используется скрипт Functions.vbs - Скрипт с различными Функциями, которые можно использовать в других скриптах

Доступно только для пользователей


 
sexbeerДата: Понедельник, 18.11.2013, 19:55 | Сообщение № 2
Рядовой

На сайте с: 18.11.2013
Город: Омск
Сообщений: 9
Награды: 1
Репутация: 0
Andrey_A, всё просто супер!!! очень оперативно! я вообще в этом ни бум-бум, преобразовывал сторонней программой, много лишних движений было, а сейчас всё на одной кнопке. только вот с кодировкой проблемы. при запуске скрипта всё меняет кроме знака градуса (E73░28'39,41''). выдает окошко как на картинке. жму ОК, файл сохраняется как положено, только вместо знака градуса дефис.
Прикрепления: 9780014.png (5.8 Kb)
 
Andrey_AДата: Понедельник, 18.11.2013, 19:57 | Сообщение № 3
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7186
Награды: 143
Репутация: 125
Аверин Андрей
Я подправил 5 минут назад , версия1.1

вставил
Код
sTextSRT = Replace(sTextSRT, ChrW(9617),Chr(176)) ' замена символа градуса из Unicode в ANSI


Возьми заново

Цитата sexbeer ()
я вообще в этом ни бум-бум


Я тоже :D


 
sexbeerДата: Вторник, 19.11.2013, 15:05 | Сообщение № 4
Рядовой

На сайте с: 18.11.2013
Город: Омск
Сообщений: 9
Награды: 1
Репутация: 0
Andrey_A, громаднейшее спасибо!!! всё работает!!!

Добавлено (19.11.2013, 15:05)
---------------------------------------------
Andrey_A, еще несколько желаний к вышепроделанному титаническому труду! :D если возможно, хотелось бы дополнить нулями градусы (до трех знаков) и секунды GPS (до двух знаков), а также убрать запятую между широтой и долготой и заменить запятую между сек и милисек на точку.
то есть привести N55°00'0,30", E73°28'3,60" к виду N055°00'00.30" E073°28'03.60" (нули к минутам и миллисекундам добавляются автоматически).

и еще... вместо "N/A, N/A" прописать "{\c&BBBBBB}N000°00'00.00" E000°00'00.00"", а вместо "Date:" вставить "{\c&FFFFFF}". плюс заменил (выделил жирным) 8-ю строчку в ssa на "Style: Default,Codename Coder Free 4F,10,4366591,4366591,4366591,0,1,0,1,3,0,5,3,3,3,0,204". Конечный файл и исходник отправил на почту. Заранее благодарствую!

 
Andrey_AДата: Вторник, 19.11.2013, 19:43 | Сообщение № 5
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7186
Награды: 143
Репутация: 125
Аверин Андрей
Цитата sexbeer ()
возможно, хотелось бы дополнить

Опять же как и в прошлый раз необходимо выслать текущие файлы и как надо сделать - так быстрее воспринимается + любой сайт может искажать специфические символы. Как только вышлите сделаю


 
sexbeerДата: Вторник, 19.11.2013, 20:12 | Сообщение № 6
Рядовой

На сайте с: 18.11.2013
Город: Омск
Сообщений: 9
Награды: 1
Репутация: 0
Andrey_A, выслал на почту. изменил расширение файла на ass, начальную шапку в нем, внёс кое-какие изменения. архив Final.zip
 
Andrey_AДата: Четверг, 21.11.2013, 14:38 | Сообщение № 7
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7186
Награды: 143
Репутация: 125
Аверин Андрей
Конвертировать открытый на редактирование файл субтитров SRT в ASS
Используется скрипт Functions.vbs - Скрипт с различными Функциями, которые можно использовать в других скриптах

Доступно только для пользователей


 
sexbeerДата: Четверг, 21.11.2013, 15:49 | Сообщение № 8
Рядовой

На сайте с: 18.11.2013
Город: Омск
Сообщений: 9
Награды: 1
Репутация: 0
Andrey_A, СПАСИБО!!! Сложно было реализовать? А то у меня еще кое-какая идея возникла в голове :D
 
Andrey_AДата: Четверг, 21.11.2013, 15:51 | Сообщение № 9
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7186
Награды: 143
Репутация: 125
Аверин Андрей
Цитата sexbeer ()
Сложно было реализовать?

Нет, просто делаю всё по очереди

Цитата sexbeer ()
идея возникла

Точное описание + файлы до и после ))


 
sexbeerДата: Четверг, 21.11.2013, 18:00 | Сообщение № 10
Рядовой

На сайте с: 18.11.2013
Город: Омск
Сообщений: 9
Награды: 1
Репутация: 0
Буду очень признателен! Файлы отправил на почту. В общем суть не меняется, кое-что добавляется к предыдущему. К координатам добавляется скорость (speed), высота (alt), и ускорение (G). В них так же нужно заменить запятые, отделяющие дробные части от целых, на точки и дополнить нулями: скорость и высоту до вида 000.0, ускорение не надо. speed: N/A преобразовать в SPEED 000.0KMH, alt: N/A в ALT 000.0M{\r[Default]}{\c&FFFFFF}, km/h в KMH. Так же когда скорость больше или равна 60,0 кмч, SPEED {\c&00ff00} меняется на SPEED {\c&0000ff}. Также убрал пробел между GT-i9260 и {\c&FFFFFF}. И немного изменений в шапке. Много пробелов и строка \N\N\N\N\N пусть не смущают, так надо:) это для позиционирования субтитров на экране, их количество всё точно определено. В общем в файлах понятнее будет смотреть, там видно где какие запятые пропадают, двоеточия и пробелы.

Добавлено (21.11.2013, 17:38)
---------------------------------------------
Andrey_A, кстати небольшой косяк с координатами у тебя. К примеру N54°59'42,12'', E173°26'12,05'' переделывается в N54°59'42,12'', E073°26'12,05''. С широтой (N) то же самое, но там это и не нужно, потому что всего 90 градусов в ней, до трёх знаков просто для красоты строки там попросил. А вот у долготы (E) 180 градусов. Да, кстати, N и E тоже могут меняться на S и W с изменением местоположения, но я думаю мне не пригодится:) но всё же хотелось бы иметь такую возможность. Я про то, что если у тебя N или E где-то неизменно в коде прописаны, то это неправильно. вот ссылка если интересно http://ru.wikipedia.org/wiki....0%F2%FB

Добавлено (21.11.2013, 18:00)
---------------------------------------------
и тогда исходя из вышенаписанного изменить

Код
   sTextSSA = Replace(sTextSSA, "N/A, N/A", "N{\1a&B4\3a&B4}N000°00'00.00"" E000°00'00.00""")
на
Код
   sTextSSA = Replace(sTextSSA, "N/A, N/A", "N{\1a&B4\3a&B4}X000°00'00.00"" X000°00'00.00""")
конечно, если всё это возможно осуществить
 
Andrey_AДата: Четверг, 21.11.2013, 18:52 | Сообщение № 11
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7186
Награды: 143
Репутация: 125
Аверин Андрей
Цитата sexbeer ()
кстати небольшой косяк с координатами

У меня косяков нет - я сделал точную копию того, что выслано. В 2-х скриптах (ещё раз проверил) по тем примерам-файлов всё работает. Я не вникаю в контекст файлов (я даже не знаю для чего они)
Высылайте расширенные примеры


 
sexbeerДата: Четверг, 21.11.2013, 19:01 | Сообщение № 12
Рядовой

На сайте с: 18.11.2013
Город: Омск
Сообщений: 9
Награды: 1
Репутация: 0
Andrey_A, хорошо. сейчас переделаю и вышлю, ждите новый архив на почте ;)
 
Andrey_AДата: Четверг, 21.11.2013, 23:14 | Сообщение № 13
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7186
Награды: 143
Репутация: 125
Аверин Андрей
Конвертировать открытый на редактирование файл субтитров SRT в ASS
Используется скрипт Functions.vbs - Скрипт с различными Функциями, которые можно использовать в других скриптах

Доступно только для пользователей


 
Andrey_AДата: Четверг, 21.11.2013, 23:25 | Сообщение № 14
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7186
Награды: 143
Репутация: 125
Аверин Андрей
Последний вариант, который ты послал на почту возможно через несколько дней, хотя если чуть вникнуть можно и самому подправить

 
sexbeerДата: Четверг, 28.11.2013, 09:55 | Сообщение № 15
Рядовой

На сайте с: 18.11.2013
Город: Омск
Сообщений: 9
Награды: 1
Репутация: 0
Andrey_A, для меня это китайская грамота, честно :) я думаю у тебя лучше получится.

Добавлено (22.11.2013, 11:02)
---------------------------------------------
Andrey_A, и к последнему твоему коду комментарий. там где скорость SPEED между цифрами запятую ты оставил, надо точку

Код
SPEED {\c&00ff00}012,1{\c&FFFFFF}KMH
заменить на
Код
SPEED {\c&00ff00}012.1{\c&FFFFFF}KMH
и еще я просил про превышение 60 кмч
Цитата sexbeer ()
когда скорость больше или равна 60,0 кмч, SPEED {\c&00ff00} меняется на SPEED {\c&0000ff}
сверь с архивом, который я тебе выслал, там так

и еще один лишний пробел у тебя во второй части строки, то есть вместо
Код
S64 = Space(64)
надо
Код
S63 = Space(63)

Добавлено (23.11.2013, 09:13)
---------------------------------------------
и еще о знаках препинания:) когда в 4-й строке srt появляется N/A, N/A, alt: N/A,, то запятая в 0,000G не меняется на точку.

Добавлено (28.11.2013, 09:55)
---------------------------------------------
Вот наваял тут малёха :D Не суди строго, это мой первый скрипт

Код
//SRTASS.js

var nCodePage=AkelPad.GetEditCodePage(0);
var hMainWnd=AkelPad.GetMainWnd();
var OldName=AkelPad.GetEditFile(0);
var pText=AkelPad.ReadFile(OldName);
AkelPad.SendMessage(hMainWnd, 273, 4101, 0);
AkelPad.ReplaceSel(pText)

if (nCodePage==866) {
       AkelPad.Recode(1, 1251);
       }

AkelPad.TextReplace(0, "''", "\"", 0x00200001, true);
AkelPad.TextReplace(0, ",", ".", 0x00200001, true);

for (var i = 2; i <= 305; i++) {
       AkelPad.TextReplace(0, "\r\r"+i+"\r0", "\rDialogue: 0,", 0x00200001, true);
       }

AkelPad.TextReplace(0, ". speed: N/A", "  {\\1a&B4\\3a&B4}SPEED: 000.0 KMH", 0x00200001, true);
AkelPad.TextReplace(0, ". speed: ", "  SPEED:", 0x00200001, true);
AkelPad.TextReplace(0, "\rN/A. N/A. alt: N/A", "\\N_000°00'00.00\" _000°00'00.00\"   ALT: 000.0 M", 0x00200001, true);
AkelPad.TextReplace(0, " km/h", " {\\c&A1A1A1}KMH", 0x00200001, true);

AkelPad.TextReplace(0, "\rS", "\\NS", 0x00200001, true);
AkelPad.TextReplace(0, "\rN", "\\NN", 0x00200001, true);
AkelPad.SetSel(0, 1);
AkelPad.ReplaceSel("[Script Info]\rScriptType: v4.00+\r\r[V4 Styles+]\rFormat: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding\rStyle: Default,Codename Coder Free 4F,10,16777215,16777215,000000,000000,1,0,0,0,100,100,0,0.00,1,4,0,1,10,0,10,204\r\r[Events]\rFormat: Layer, Start, End, Style, Actor, MarginL, MarginR, MarginV, Effect, Text\r");
AkelPad.TextReplace(0, "\r\r00:0", "\rDialogue: 0,0:0", 0x00200001, true);
AkelPad.TextReplace(0, "0\rGT-i9260. Date:", ",Default,,0000,0000,0000,,{\\c&0088FF}GT-i9260{\\r[Default]}", 0x00200001, true);
AkelPad.TextReplace(0, "000 --> 00", "00,0", 0x00200001, true);
AkelPad.TextReplace(0, "\". alt: -", "\"   ALT:-", 0x00200001, true);
AkelPad.TextReplace(0, "\". alt: ", "\"   ALT:+", 0x00200001, true);

for (var i = 0; i <= 9; i++) {
       AkelPad.TextReplace(0, "SPEED:"+i+".", "{\\c&A1A1A1}SPEED:{\\r[Default]} {\\1a&B4\\3a&B4}00{\\r[Default]}"+i+".", 0x00200001, true);
       AkelPad.TextReplace(0, "'"+i+".", "'0"+i+".", 0x00200001, true);
       AkelPad.TextReplace(0, "NS"+i+"°", "NS{\\r[Default]}00"+i+"°", 0x00200001, true);
       AkelPad.TextReplace(0, "NN"+i+"°", "NN{\\r[Default]}00"+i+"°", 0x00200001, true);
       AkelPad.TextReplace(0, "W"+i+"°", "{\\c&A1A1A1}W{\\r[Default]}00"+i+"°", 0x00200001, true);
       AkelPad.TextReplace(0, "E"+i+"°", "{\\c&A1A1A1}E{\\r[Default]}00"+i+"°", 0x00200001, true);
       AkelPad.TextReplace(0, "ALT:-"+i+".", "{\\c&A1A1A1}ALT:{\\r[Default]}{\\1a&B4\\3a&B4}-00{\\r[Default]}"+i+".", 0x00200001, true);
       AkelPad.TextReplace(0, "ALT:+"+i+".", "{\\c&A1A1A1}ALT:{\\r[Default]}{\\1a&B4\\3a&B4}+00{\\r[Default]}"+i+".", 0x00200001, true);
       }

for (var i = 10; i <= 99; i++) {
       AkelPad.TextReplace(0, "SPEED:"+i+".", "{\\c&A1A1A1}SPEED:{\\r[Default]} {\\1a&B4\\3a&B4}0{\\r[Default]}"+i+".", 0x00200001, true);
       AkelPad.TextReplace(0, "NS"+i+"°", "NS{\\r[Default]}0"+i+"°", 0x00200001, true);
       AkelPad.TextReplace(0, "NN"+i+"°", "NN{\\r[Default]}0"+i+"°", 0x00200001, true);
       AkelPad.TextReplace(0, "W"+i+"°", "{\\c&A1A1A1}W{\\r[Default]}0"+i+"°", 0x00200001, true);
       AkelPad.TextReplace(0, "E"+i+"°", "{\\c&A1A1A1}E{\\r[Default]}0"+i+"°", 0x00200001, true);
       AkelPad.TextReplace(0, "ALT:-"+i+".", "{\\c&A1A1A1}ALT:{\\r[Default]}{\\1a&B4\\3a&B4}-0{\\r[Default]}"+i+".", 0x00200001, true);
       AkelPad.TextReplace(0, "ALT:+"+i+".", "{\\c&A1A1A1}ALT:{\\r[Default]}{\\1a&B4\\3a&B4}+0{\\r[Default]}"+i+".", 0x00200001, true);
       }

for (var i = 100; i <= 999; i++) {
       AkelPad.TextReplace(0, "SPEED:"+i+".", "{\\c&A1A1A1}SPEED:{\\r[Default]} {\\1a&B4\\3a&B4}{\\r[Default]}"+i+".", 0x00200001, true);
       AkelPad.TextReplace(0, "ALT:-"+i+".", "{\\c&A1A1A1}ALT:{\\r[Default]}{\\1a&B4\\3a&B4}-{\\r[Default]}"+i+".", 0x00200001, true);
       AkelPad.TextReplace(0, "ALT:+"+i+".", "{\\c&A1A1A1}ALT:{\\r[Default]}{\\1a&B4\\3a&B4}+{\\r[Default]}"+i+".", 0x00200001, true);
       }

AkelPad.TextReplace(0, "\". ", "\" ", 0x00200001, true);
AkelPad.TextReplace(0, "\" E1", "\" {\\c&A1A1A1}E{\\r[Default]}1", 0x00200001, true);
AkelPad.TextReplace(0, "\" W1", "\" {\\c&A1A1A1}W{\\r[Default]}1", 0x00200001, true);
AkelPad.TextReplace(0, " m", " {\\c&A1A1A1}M", 0x00200005, true);
AkelPad.TextReplace(0, "M\r\r", "M\r", 0x00200001, true);

var NewName=OldName.replace(".srt", ".ass");
AkelPad.SaveFile(0, NewName, 1251);
 
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Интеллектуальные права и отказ от ответственности