DVD to Excel, Excel to DVD

DVDtoExcel.scpt, ExceltoDVD.scpt

  

by EV / 細馬宏通(ほそまひろみち)

*DVD playerの04Go To Time....scpt (Apple Sample Code)を参考にしました。

Download  (dvdexcel.tgz)


動作環境:    Macintosh OS X以上

用意するもの :    
DVD player (3.1以上)
Microsoft Excel (OS X上で動作するバージョン)


どんなスクリプト?


DVD playerの現在の時刻をExcelのセルに入力します。
Excel上で選択された時刻からDVD playerを再生します。


何に使えるのか?

DVDにはもともとチャプタが刻まれています。が、映像を分析したりプレゼンするときに、チャプタとは関係なく、自分の好みの場所から再生したいことがあります。そんなとき、このスクリプトを使うと便利です。
ひとつのDVDの時刻データをExcelのファイルにまとめて、時刻の隣の列に注釈をつけておくとよいでしょう。Excelの機能を使えば並べ替えが簡単に行えます。


準備
1. DVD player 3.1以上では、メニューバーの上にアップルスクリプトのマークが表示されています。これを選んで、「スクリプトフォルダを開く」を選択してください。
2. スクリプトフォルダに14DVDtoExcel.scpt, 15ExceltoDVD.scptを移動させてください。
3. DVD playerのアップルスクリプトメニューから、DVDtoExcelとExceltoDVDが使えます。


使い方
1. DVDtoExcelを実行すると、Excelファイルの3行めに一行挿入され、1列めに時刻が入ります。
2. ExceltoDVDを実行すると、Excelファイルで選択中の行の一列めに入っている時刻から、DVD playerが再生されます。
3. ショートカットを使うと便利です。

back to index




備考
DVD playerの04Go To Time....scpt (Apple Sample Code, Written by Cary Dean) にお世話になりました。サブルーティーンはまんま使ってあります。スクリプトに興味のある方のためにじっさいのスクリプトをのせておきます。


DVDtoExcel.scpt

on ConvertTimeToString(inTime)
    -- break the time up into hours, minutes, and seconds
    set timeVal to inTime
    set numHours to (timeVal div hours)
    set timeVal to timeVal - (numHours * hours)
    set numMinutes to (timeVal div minutes)
    set numSeconds to timeVal - (numMinutes * minutes)
   
    -- now put together the string in the proper format adding preceding zeros if necessary
    set timeStr to "" as string
    -- hours
    if (numHours < 10) then set timeStr to "0"
    set timeStr to (timeStr & numHours)
    -- minutes
    set timeStr to (timeStr & ":")
    if (numMinutes < 10) then set timeStr to (timeStr & "0")
    set timeStr to (timeStr & numMinutes)
    -- seconds
    set timeStr to (timeStr & ":")
    if (numSeconds < 10) then set timeStr to (timeStr & "0")
    set timeStr to (timeStr & numSeconds)
   
    return (timeStr as string)
end ConvertTimeToString

tell application "DVD Player"
    set inTime to elapsed time
  end tell

set sTime to ConvertTimeToString(inTime)

tell application "Microsoft Excel"
    Select Range "R3C1"
    Insert EntireRow of Selection
    set selectedrow to (Row of ActiveCell) as text
    set selectedcell to "R" & selectedrow & "C1"
    set NumberFormatLocal of Selection to "@"
    set FormulaR1C1 of Cell selectedcell to sTime
end tell

----------------------------------------------------


ExceltoDVD.scpt

property kInvalidTime : -1002
property kTimeDelimiter : ":"

on ConvertStringToTime(inStr)
    try
        set numHours to 0
        set numMinutes to 0
        set numSeconds to 0
       
        -- store off the old delimiter
        set oldDelimiters to AppleScript's text item delimiters
       
        -- set the delimiter to ":"
        set AppleScript's text item delimiters to kTimeDelimiter
       
        set numItems to count of (text item of inStr)
        if (numItems is equal to 1) then
            set numSeconds to (text item 1 of inStr)
        else if (numItems is equal to 2) then
            set numMinutes to (text item 1 of inStr)
            set numSeconds to (text item 2 of inStr)
        else if (numItems is equal to 3) then
            set numHours to (text item 1 of inStr)
            set numMinutes to (text item 2 of inStr)
            set numSeconds to (text item 3 of inStr)
        else
            error number kInvalidTime
        end if
       
        -- convert the time to secs
        set numSecs to (numHours * hours) + (numMinutes * minutes) + numSeconds
       
        -- reset the delimiter
        set AppleScript's text item delimiters to oldDelimiters
    on error errNum
        set AppleScript's text item delimiters to oldDelimiters
        error number kInvalidTime
    end try
   
    return (numSecs)
end ConvertStringToTime



tell application "Microsoft Excel"
    set selectedrow to (Row of ActiveCell) as text
    set selectedcell to "R" & selectedrow & "C1"
    set sTime to FormulaR1C1 of Cell selectedcell
end tell

set inTime to ConvertStringToTime(sTime)

tell application "DVD Player"
    set elapsed time to inTime
    play dvd
end tell