Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // YouTube - タイムスタンプの秒数を増減(プロンプト)
- // 2019/08/06
- //・カーソル付近or選択範囲のタイムスタンプの秒数を プロンプトで指定した値 増減させる。
- // このマクロはMeryWiki「数値を増減」マクロの改変です
- // https://www.haijin-boys.com/wiki/%E6%95%B0%E5%80%A4%E3%82%92%E5%A2%97%E6%B8%9B
- var offset = parseInt(Prompt('オフセットを入力してください(sec)', '0')); //増減する値
- var Sel = Document.Selection;
- var gap = Document.Text.length;
- var anp = Sel.GetAnchorPos();
- var acp = Sel.GetActivePos();
- var isAcp = (acp<anp); //範囲終点(カーソル)が前方にあるか?
- var isSel = !Sel.IsEmpty;
- if (Sel.IsEmpty) { //非選択時、文字を探索して範囲選択
- var px = Sel.GetActivePointX(mePosLogical);
- var py = Sel.GetActivePointY(mePosLogical);
- var ln = Document.GetLine(py,0);
- var tx = 1 + ln.slice(0,px-1).match(/[0-9:]*$/).index;
- var bx = tx + ln.slice(tx-1).match(/[0-9:]*/)[0].length;
- Sel.SetActivePoint(mePosLogical,bx,py);
- Sel.SetAnchorPoint(mePosLogical,tx,py);
- isAcp = (px===tx); //カーソルが数値の左端(前方)にあるか?
- }
- Sel.Text = Sel.Text.replace(/(?:(\d+)\:)?([0-5]?\d)\:([0-5]\d)(?!\d|\:)/g,function($0,h,m,s){
- if(!h) h = 0;
- var time = parseInt(h) * 3600 + parseInt(m) * 60 + parseInt(s);
- time = Math.max(0,time + offset);
- h = Math.floor(time / 3600);
- m = Math.floor((time / 60) % 60);
- s = time % 60;
- var formattedTime = (h > 0) ? h + ':' + zeroPadding(m) + ':' + zeroPadding(s) : zeroPadding(m) + ':' + zeroPadding(s);
- return formattedTime;
- function zeroPadding(num){return (Array(2).join('0') + num).slice(-2);}
- });
- gap = Document.Text.length - gap; //文字数変化量
- Sel.SetAnchorPos(anp+(isAcp? gap : 0));
- Sel.SetActivePos(acp+(isAcp? 0 : gap), isSel);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement