« [PDFKit]日付印スタンプイメージをファイル保存(背景透過版) | トップページ | [ffmpeg]左右別ファイルになっているサウンドファイルをステレオファイルにマージする »

[DaVinci Resolve]DaVinci Resolveから書き出したVTTにLineポジションを付与する


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003# 
004(*
005VTTフォーマットの字幕に
006ポジション情報を付与します
007Youtube用
008*)
009# com.cocolog-nifty.quicktimer.icefloe
010----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
011use AppleScript version "2.8"
012use framework "Foundation"
013use framework "AppKit"
014use scripting additions
015
016property refMe : a reference to current application
017
018
019########################
020##設定項目
021set strSetLinePos to (" line:20%") as text
022
023########################
024##ダイアログ
025########################
026set strName to (name of current application) as text
027if strName is "osascript" then
028  tell application "Finder" to activate
029else
030  tell current application to activate
031end if
032#
033set appFileManager to refMe's NSFileManager's defaultManager()
034set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
035set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
036set aliasDefaultLocation to (ocidDesktopDirPathURL's absoluteURL()) as alias
037#
038set listUTI to {"org.w3.webvtt"} as list
039set strMes to ("ファイルを選んでください") as text
040set strPrompt to ("ファイルを選んでください") as text
041try
042  set aliasFilePath to (choose file strMes with prompt strPrompt default location (aliasDefaultLocation) of type listUTI with invisibles and showing package contents without multiple selections allowed) as alias
043on error
044  log "エラーしました"
045  return "エラーしました"
046end try
047#入力パス
048set strFilePath to (POSIX path of aliasFilePath) as text
049set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
050set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
051set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:false)
052#出力パス
053set ocidBaseFilePathURL to ocidFilePathURL's URLByDeletingPathExtension()
054set ocidSaveFilePathURL to ocidBaseFilePathURL's URLByAppendingPathExtension:("append.vtt")
055########################
056##テキスト処理
057########################
058#テキスト読み込み
059set listResponse to refMe's NSMutableString's alloc()'s initWithContentsOfURL:(ocidFilePathURL) encoding:(refMe's NSUTF8StringEncoding) |error| :(reference)
060if (item 2 of listResponse) = (missing value) then
061  log "initWithContentsOfURL 正常処理"
062  set ocidReadString to (item 1 of listResponse)
063else if (item 2 of listResponse) ≠ (missing value) then
064  log (item 2 of listResponse)'s code() as text
065  log (item 2 of listResponse)'s localizedDescription() as text
066  return "initWithContentsOfURL エラーしました"
067end if
068#改行コードをUNIXに強制
069set ocidReplacedStrings to ocidReadString's stringByReplacingOccurrencesOfString:("\r\n") withString:("\n")
070set ocidReplacedStrings to ocidReplacedStrings's stringByReplacingOccurrencesOfString:("\r") withString:("\n")
071
072########################
073##事前処理 DaVinci Resolve用
074########################
075set ocidReplacedStrings to ocidReplacedStrings's stringByReplacingOccurrencesOfString:("<b>") withString:("")
076set ocidReplacedStrings to ocidReplacedStrings's stringByReplacingOccurrencesOfString:("</b>") withString:("")
077#歌詞の場合用
078set ocidReplacedStrings to ocidReplacedStrings's stringByReplacingOccurrencesOfString:("WEBVTT\n\n") withString:("WEBVTT\nKind: lyric\nLanguage: ja\n\n")
079#通常の字幕用
080#set ocidReplacedStrings to ocidReplacedStrings's stringByReplacingOccurrencesOfString:("WEBVTT\n\n") withString:("WEBVTT\nKind: subtitles\nLanguage: ja\n\n")
081
082########################
083##本処理
084########################
085#改行区切りでリストに
086set ocidLineTextArray to ocidReplacedStrings's componentsSeparatedByString:("\n")
087#リストの数
088set numCntArray to (ocidLineTextArray's |count|()) as integer
089#出力用のテキスト
090set ocidOutPutString to refMe's NSMutableString's alloc()'s initWithCapacity:(0)
091#行の内容判定用Charset
092set ocidNewLine to (refMe's NSCharacterSet's decimalDigitCharacterSet's invertedSet())
093
094
095#読み込んだテキストの行数だけ繰り返し
096repeat with itemNo from 0 to (numCntArray - 1) by 1
097  ##リストから対象の行のテキスト読み込み
098  set ocidLineText to (ocidLineTextArray's objectAtIndex:(itemNo))
099  #
100  if (ocidLineText as text) is "" then
101    (ocidOutPutString's appendString:("\n\n"))
102  else if (ocidLineText as text) contains " --> " then
103    (ocidOutPutString's appendString:(ocidLineText))
104    (ocidOutPutString's appendString:(strSetLinePos))
105    (ocidOutPutString's appendString:("\n"))
106  else
107    (ocidOutPutString's appendString:(ocidLineText))
108    (ocidOutPutString's appendString:("\n"))
109  end if
110  
111end repeat
112########################
113##保存
114########################
115set listDone to (ocidOutPutString's writeToURL:(ocidSaveFilePathURL) atomically:(true) encoding:(refMe's NSUTF8StringEncoding) |error| :(reference))
116if (item 1 of listDone) is true then
117  return "writeToURL 正常終了"
118else if (item 2 of listDone) ≠ (missing value) then
119  log (item 2 of listDone)'s code() as text
120  log (item 2 of listDone)'s localizedDescription() as text
121  return "writeToURL エラーしました"
122end if
123
124
125
AppleScriptで生成しました

|

« [PDFKit]日付印スタンプイメージをファイル保存(背景透過版) | トップページ | [ffmpeg]左右別ファイルになっているサウンドファイルをステレオファイルにマージする »

YouTube」カテゴリの記事