Archive for the 'm2TV' Category

2010/07/04 iEPGのファイルから各種情報を取り出してみるテスト v4

iEPGのファイルから、各種情報を取り出してm2TVで録画予約するための文字列を作成するAppleScriptです。

iEPGファイルをparseして、属性ラベルとデータのペアリストにして、さらにペアリストからレコードを作成。レコードにするとデータの扱いが楽になるので、取り出してm2TVが理解できそうな文字列に変換してみました。

テレビ局の情報がiEPGに記載されているものと、m2TVが理解できるものとで差がありそうで(「TBS」と「TBSテレビ」の違いなど)、実際に試してみる必要がありますが……iEPGに書かれているテレビ局名で録画予約が行えない場合には、テレビ局名の置換テーブルでも用意しておく必要がありそうです(その場合は、とりあえず東京エリアを対象にして試作)。

ただ、実際にm2TVにイベントを送ってみたら……以前は動いていたAppleScript(単に固定パラメータで録画予約するだけ)が動かなくなっていました(ーー;;;; 10.6.3のときには動いていたのですが、10.6.4にアップデートした環境で動いていません。

ここまで作ってみたので、出先でiEPGファイルをダウンロードして、メールに録画情報の文面を入れて送信し……自宅でスタンバイしているMacで録画予約を実行し、本当に録画予約できたかどうか設定ファイルを調べて、メールで返信を行う……といったフローを確立できるかと思っていましたが、この調子ではm2TVではとても無理そうで、大変残念です。

スクリプト名:iEPGのファイルから各種情報を取り出してみるテスト v4
set anAlias to choose file
set aData to read anAlias
set aData to aData as Unicode text

–iEPGのデータから取り出すラベル値のリスト
set pList to {“Content-type:”, “version:”, “station:”, “year:”, “month:”, “date:”, “start:”, “end:”, “program-title:”, “subgenre:”, “genre:”}
set dList to {}

repeat with i in pList
  set j to contents of i
  
  
set aRes to trimStrFromTo2(aData, j, (ASCII character 13) & (ASCII character 10)) of me
  
if aRes is not equal to “” then
    set aRes to repChar(aRes, return, “”) of me
  end if
  
  
set the end of dList to {j, aRes}
end repeat

set bRec to makeRecordFromList(dList) of me

–m2TVで録画予約できるように、iEPGから取り出した情報を適宜組み立てる
set aTitle to | program-title | of bRec

set sTime to | start | of bRec
set sTime to repChar(sTime, “:”, “”) of me

set eTime to | end | of bRec
set eTime to repChar(eTime, “:”, “”) of me

set aDate to | month | of bRec & | date | of bRec

set aStation to | station | of bRec

set m2tvRecStr to “tv “ & aStation & ” “ & sTime & ” “ & eTime & ” “ & aDate & return & aTitle & return

–>
(*
“tv テレビ朝日 2100 2251 0703
土曜ワイド劇場「東京駅お忘れ物預り所4」[デ][字]

*)

on trimStrFromTo2(aStr, fromStr, toStr)
  if fromStr is not equal to “” then
    set sPos to (offset of fromStr in aStr)
  else
    set sPos to 0
  end if
  
  
if sPos = 0 then
    return “”
  else
    set sPos to sPos + 1
  end if
  
  
if toStr is not equal to “” then
    set aLen to length of fromStr
    
set b to text (sPos + aLen) thru -1 of aStr
    
set ePos to (offset of toStr in b)
  else
    set ePos to length of aStr
  end if
  
set aRes to text 1 thru ePos of b
  
return aRes
end trimStrFromTo2

on makeRecordFromList(aList)
  set quotChar to (ASCII character 34)
  
  
set s_header to “return {”
  
set recList to {}
  
set s to “”
  
  
set itemCount to count aList
  
  
repeat with i from 1 to itemCount
    set j to ((contents of item 1 of item i of aList) as Unicode text)
    
if j contains “:” then
      set j to repChar(j, “:”, “”) of me
    end if
    
    
set aLabel to “| “ & j & ” |”
    
set aValue to ((contents of item 2 of item i of aList) as Unicode text)
    
set s to s & aLabel & “:” & quotChar & aValue & quotChar
    
if i is not itemCount then
      set s to s & “,”
    end if
  end repeat
  
  
set s to s_header & s & “}”
  
set aRes to run script (s as Unicode text)
  
  
return aRes
  
end makeRecordFromList

–文字置換
on repChar(origText, targChar, repChar)
  set origText to origText as string
  
set targChar to targChar as string
  
set repChar to repChar as string
  
  
set curDelim to AppleScript’s text item delimiters
  
set AppleScript’s text item delimiters to targChar
  
set tmpList to text items of origText
  
set AppleScript’s text item delimiters to repChar
  
set retText to tmpList as string
  
set AppleScript’s text item delimiters to curDelim
  
return retText
end repChar

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2010/07/04 iEPGのファイルから各種情報を取り出してみるテスト v3

iEPGのファイルから各種情報を取り出すAppleScriptの試作品です。

iEPGのファイルから各ラベル要素を取り出し、属性ラベルとデータのペアリストにして、さらにそれを「リストをレコード化」するサブルーチンを使うことでレコード化します。

スクリプト名:iEPGのファイルから各種情報を取り出してみるテスト v3
set anAlias to choose file
set aData to read anAlias
set aData to aData as Unicode text

–iEPGのデータから取り出すラベル値のリスト
set pList to {"Content-type:", "version:", "station:", "year:", "month:", "date:", "start:", "end:", "program-title:", "subgenre:", "genre:"}
set dList to {}

repeat with i in pList
  set j to contents of i
  
  
set aRes to trimStrFromTo2(aData, j, (ASCII character 13) & (ASCII character 10)) of me
  
if aRes is not equal to "" then
    set aRes to repChar(aRes, return, "") of me
  end if
  
  
set the end of dList to {j, aRes}
end repeat

set bRec to makeRecordFromList(dList) of me
bRec
–> {| content-type |:"application/x-tv-program-info; charset=shift_jis", | version |:"1", | station |:"TBSテレビ", | year |:"2010", | month |:"07", | date |:"03", | start |:"21:00", | end |:"21:54", | program-title |:"世界・ふしぎ発見!", | subgenre |:"", | genre |:""}

set aTitle to | program-title | of bRec
–> "世界・ふしぎ発見!"

on trimStrFromTo2(aStr, fromStr, toStr)
  if fromStr is not equal to "" then
    set sPos to (offset of fromStr in aStr)
  else
    set sPos to 0
  end if
  
  
if sPos = 0 then
    return ""
  else
    set sPos to sPos + 1
  end if
  
  
if toStr is not equal to "" then
    set aLen to length of fromStr
    
set b to text (sPos + aLen) thru -1 of aStr
    
set ePos to (offset of toStr in b)
  else
    set ePos to length of aStr
  end if
  
set aRes to text 1 thru ePos of b
  
return aRes
end trimStrFromTo2

on makeRecordFromList(aList)
  set quotChar to (ASCII character 34)
  
  
set s_header to "return {"
  
set recList to {}
  
set s to ""
  
  
set itemCount to count aList
  
  
repeat with i from 1 to itemCount
    set j to ((contents of item 1 of item i of aList) as Unicode text)
    
if j contains ":" then
      set j to repChar(j, ":", "") of me
    end if
    
    
set aLabel to "| " & j & " |"
    
set aValue to ((contents of item 2 of item i of aList) as Unicode text)
    
set s to s & aLabel & ":" & quotChar & aValue & quotChar
    
if i is not itemCount then
      set s to s & ","
    end if
  end repeat
  
  
set s to s_header & s & "}"
  
set aRes to run script (s as Unicode text)
  
  
return aRes
  
end makeRecordFromList

–文字置換
on repChar(origText, targChar, repChar)
  set origText to origText as string
  
set targChar to targChar as string
  
set repChar to repChar as string
  
  
set curDelim to AppleScript’s text item delimiters
  
set AppleScript’s text item delimiters to targChar
  
set tmpList to text items of origText
  
set AppleScript’s text item delimiters to repChar
  
set retText to tmpList as string
  
set AppleScript’s text item delimiters to curDelim
  
return retText
end repChar

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2010/07/04 iEPGのファイルから各種情報を取り出してみるテスト v2

iEPGの録画予約ファイルを読み込んで、各種情報を取り出すAppleScriptの試作です。

iEPGのファイルをダウンロードしてみたところ、

–iEPGファイル サンプル ここから
Content-type: application/x-tv-program-info; charset=shift_jis
version: 1
station: テレビ朝日
year: 2010
month: 05
date: 10
start: 19:00
end: 19:54
program-title: もしものシュミレーションバラエティー お試しかっ![字]
genre: 144
subgenre: 8

日本最大のカレー専門チェーン店で帰れま10にチャレンジ!
ナインティナイン岡村隆史が初参戦で大活躍!?

–iEPGファイル サンプル ここまで

といった形式で書かれていたので、それぞれのラベル値の内容を取り出すようにしてみました。

とりあえず、「テレビ王国」と「ON TV」のiEPGファイルで試してみました。

スクリプト名:iEPGのファイルから各種情報を取り出してみるテスト v2
set anAlias to choose file
set aData to read anAlias
set aData to aData as Unicode text

–iEPGのデータから取り出すラベル値のリスト
set pList to {"Content-type:", "version:", "station:", "year:", "month:", "date:", "start:", "end:", "program-title:", "subgenre:", "genre:"}
set dList to {}

repeat with i in pList
  set j to contents of i
  
  
set aRes to trimStrFromTo2(aData, j, (ASCII character 13) & (ASCII character 10)) of me
  
if aRes is not equal to "" then
    set aRes to repChar(aRes, return, "") of me
  end if
  
  
set the end of dList to {j, aRes}
end repeat

dList
–> {{"Content-type:", "application/x-tv-program-info; charset=shift_jis"}, {"version:", "1"}, {"station:", "テレビ朝日"}, {"year:", "2010"}, {"month:", "07"}, {"date:", "03"}, {"start:", "21:00"}, {"end:", "22:51"}, {"program-title:", "土曜ワイド劇場「東京駅お忘れ物預り所4」[デ][字]"}, {"subgenre:", "1"}, {"genre:", "48"}}

on trimStrFromTo2(aStr, fromStr, toStr)
  if fromStr is not equal to "" then
    set sPos to (offset of fromStr in aStr)
  else
    set sPos to 0
  end if
  
  
if sPos = 0 then
    return ""
  else
    set sPos to sPos + 1
  end if
  
  
if toStr is not equal to "" then
    set aLen to length of fromStr
    
set b to text (sPos + aLen) thru -1 of aStr
    
set ePos to (offset of toStr in b)
  else
    set ePos to length of aStr
  end if
  
set aRes to text 1 thru ePos of b
  
return aRes
end trimStrFromTo2

–文字置換
on repChar(origText, targChar, repChar)
  set origText to origText as string
  
set targChar to targChar as string
  
set repChar to repChar as string
  
  
set curDelim to AppleScript’s text item delimiters
  
set AppleScript’s text item delimiters to targChar
  
set tmpList to text items of origText
  
set AppleScript’s text item delimiters to repChar
  
set retText to tmpList as string
  
set AppleScript’s text item delimiters to curDelim
  
return retText
end repChar

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2010/03/17 m2TVの録画ライブラリ情報を取得する

アイ・オー・データ機器のUSB地デジチューナー「m2TV」の録画ずみライブラリの情報を取得するAppleScriptです。

m2TVアプリケーションがAppleScript側に提供している機能は、番組録画予約だけですが、m2TVアプリケーションのライブラリ情報ファイル(plist形式)にAppleScriptから直接アクセスすることで、ご覧のようにライブラリ情報を取得しています。

スクリプト名:m2TVの録画ライブラリ情報を取得する
set aRes to getM2TV_LibData() of me
–>
(*
{{eventDate:date “2010年3月3日水曜日 21:00:00″, durationSeconds:3240, sName:”テレビ朝日”, pTitle:”相棒8 #18”, eDesc:”警視庁一の異端児・杉下右京(水谷豊)と突如特命係に左遷された神戸尊(及川光博)。尊は上層部からの命で右京を調査するため特命係へ。この新しい相棒から目が離せない!”, eDetail:”

【番組内容】
第18話『右京、風邪をひく』
山中で他殺体が発見された。捜査一課の伊丹は被害者の近所に住むジュン(東風万智子)が怪しいと睨み事情をきくと犯行を自供。鼻高々の伊丹だが右京(水谷豊)と尊(及川光博)は何故か微笑み合う。自供の裏にはもうひとつの事件があった!

【出演者】
水谷豊・及川光博・益戸育江
川原和久・大谷亮介・山中崇史・山西惇・六角精児

【ゲスト】
東風万智子・滝直希

【スタッフ】
●脚本:古沢良太
●監督:東伸児
●ゼネラルプロデューサー:松本基弘(テレビ朝日)
●プロデューサー:伊東仁(テレビ朝日)・西平敦郎(東映)・土田真通(東映)

【音楽】
池頼広
※相棒8オリジナル・サウンドトラック好評発売中!

【おしらせ】
右京ティーカップ絶賛発売中!
PCサイトと携帯サイトも充実!
PC: http://www.tv−asahi.co.jp/aibou/
携帯:メニュー ⇒ テレビ ⇒ テレビ朝日 ⇒ 相棒”}}
*)

–m2TVの録画ライブラリ情報を取得する
on getM2TV_LibData()
  set docFol to (path to documents folder) as string
  
set prgFilePath to docFol & “MacTV:MacTVLibrary.plist”
  
  
–設定ファイルが存在しなければリターン
  
tell application “Finder”
    set aRes to exists of file prgFilePath
  end tell
  
if aRes = false then return
  
  
–m2TVの録画ライブラリ情報ファイルから部分的に情報を読み込む
  
set prefsFile to prgFilePath as alias
  
tell application “System Events”
    set prgList to {}
    
    
set vRec to value of property list file (prefsFile as string) –plist fileから値を読み取る
    
repeat with i in vRec
      set j to contents of i
      
      
set eDate to eventDate of eventInfo of j
      
set stationName to station of j
      
set progTitle to |title| of j
      
set aDuration to eventDuration of eventInfo of j
      
set eventDescDat to eventDesc of eventInfo of j
      
set eventDetail to eventDetails of eventInfo of j
      
      
set the end of prgList to {eventDate:eDate, durationSeconds:aDuration, sName:stationName, pTitle:progTitle, eDesc:eventDescDat, eDetail:eventDetail}
      
      
    end repeat
  end tell
  
  
return prgList
  
end getM2TV_LibData

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2010/03/16 m2TVの録画スケジュール情報を取得する

アイ・オー・データ機器のUSB地デジチューナー「m2TV」でテレビ録画予約情報を取得するAppleScriptです。

m2TVのアプリケーション自体には、AppleScriptには指定時間帯/チャンネルの録画依頼機能しか開放されていません。録画予約を行っても、それが実際に予約されたのかどうかという結果も返ってきません。true/falseぐらいは返ってきてほしいものです。

そこで、m2TVアプリの設定ファイルをAppleScriptで直接読み込むテストを行い、録画スケジュール情報を取り出してみました。ご覧のとおり、情報を取得できています。

録画予約を行った後に、本ルーチンを併用して録画予約が確実に行えたかを確認することもできますし、録画予約を行う前に予約状況を確認することも可能です。

あとは、1週間分のTV番組表からiEPGの録画予約ファイルをすべてダウンロードし、AppleScript側で自力で番組表データをリストに仕上げ、さまざまなクエリーで検索できるようにするとよいでしょう。そのようなルーチンがすでに存在しているといいのですが……。

スクリプト名:m2TVの録画スケジュール情報を取得する
set aRes to getM2TV_recSchedule() of me
–> {{sDate:date “2010年3月16日火曜日 22:25:00″, eDate:date “2010年3月16日火曜日 22:50:00″, durationSeconds:1500, sName:”NHK教育・東京”, pTitle:”知る楽 歴史は眠らない“貧困”国家 日本の深層 第3回「見えなくなった貧困」”}, {sDate:date “2010年3月17日水曜日 0:59:00″, eDate:date “2010年3月17日水曜日 1:29:00″, durationSeconds:1800, sName:”日本テレビ”, pTitle:”レコ☆Hits!”}}

–m2TVの録画予約スケジュールを取得する
on getM2TV_recSchedule()
  set docFol to (path to documents folder) as string
  
set prgFilePath to docFol & “MacTV:MacTVSchedule.plist”
  
  
–設定ファイルが存在しなければリターン
  
tell application “Finder”
    set aRes to exists of file prgFilePath
  end tell
  
if aRes = false then return
  
  
–m2TVの録画情報ファイルから部分的に情報を読み込む
  
set prefsFile to prgFilePath as alias
  
tell application “System Events”
    set prgList to {}
    
    
set vRec to value of property list file (prefsFile as string) –plist fileから値を読み取る
    
repeat with i in vRec
      set j to contents of i
      
set startDate to |start| of j
      
set endDate to |end| of j
      
set stationName to station of j
      
set progTitle to |title| of j
      
set aDuration to eventDuration of eventInfo of j
      
set the end of prgList to {sDate:startDate, eDate:endDate, durationSeconds:aDuration, sName:stationName, pTitle:progTitle}
    end repeat
  end tell
  
  
return prgList
  
end getM2TV_recSchedule

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2010/03/08 Twitterrificを使って、特定のアカウントの発言を監視

Twitterrificを使って、特定のアカウントの発言内容を監視するAppleScriptを作成しました。

Twitter経由で自宅のMacに命令を送ってテレビ録画を……などと考え、TwitterクライアントでAppleScript対応のTwitterrificをコントロール。自宅のMacにTwitterrificをインストールして、適宜自動処理用のTwitterアカウントを取得。Twitterrificが動作するようになったら、監視対象のTwitterアカウント(自分)をフォローするようにして、外でのTwitter経由の発言が自宅マシンでも見えるようにしておきます。

本Scriptの中に、

property masterAccount : “piyomaru”

という行があり、これが監視対象の(自分の)Twitterアカウントです。とりあえず、このあたりを書き換えていただいて、本Scriptを「アプリケーション」形式で保存。その際に、「実行後、自動的に終了しない」をチェックしておきます。

これで、本Scriptは10秒間隔でTwitterrificに問い合わせを行い、「#m2tv」の文字列を含む監視対象アカウントの発言が流れて来ないか、監視します。

条件に合致する発言があれば、その内容をそのまま発言者にエコーバックするようにしています。

twitterific1.jpg

実際には、このエコーバックした後にコマンド解釈部を入れて、さまざまなコマンドを実行させるようにするとよいでしょう。

ただ……実際に動かしてみて分かったのですが、Twitterrificが3分間隔でTwitterにアクセスするため、最悪の場合にはコマンドを送って返ってくるまで6分ぐらいかかることになり……Twitter経由でTV録画予約はできないことはないですけれども、ほかの手段を考えるかTwitterrific以外のアクセス手段を検討したほうがよさそうです(自前でTwitterへのアクセスプログラムをAppleScriptで作ったほうがよさそう)。

スクリプト名:twittEcho v2
property idleTime : 10
property idleF : false
property lastTweet : ""
property lastTweetDate : ""

property masterAccount : "piyomaru" –監視対象のアカウント

idleMain(true) of me

repeat
  idleMain(false) of me
  
delay 5
end repeat

on idleMain(initF)
  tell application "Twitterrific"
    set aList to every tweet whose screen name = masterAccount and text of it contains "#m2tv"
    
if aList is not equal to {} then
      set anItem to contents of first item of aList
      
set thisPostDate to date of anItem
      
      
      
–初期化フラグをtrueにして呼んだ場合には、処理に必要な変数の初期化のみ行ってリターン
      
if initF = true then
        set lastTweetDate to thisPostDate
        
return
      end if
      
      
      
if thisPostDate is not equal to lastTweetDate then
        
        
set lastCommand to text of anItem
        
        
try
          with timeout of 30 seconds
            post update ("@" & masterAccount & " (echo)" & lastCommand)
            
            
if lastCommand contains "beep" then
              say "Message from twitter"
            end if
          end timeout
        end try
        
        
set lastTweetDate to thisPostDate
      end if
    end if
  end tell
end idleMain

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2010/03/05 m2TVで録画予約(2)

アイ・オー・データ機器さんからお借りしたMac OS X用USB地上波デジタルチューナー「m2TV」で、指定の番組の録画予約を行うAppleScriptです。

とりあえず、使い回しができる程度の汎用性を持たせたサブルーチンに仕立ててみました。実用上、最低限のレベルのルーチンです。

m2TVがAppleScript側に解放している機能は、開始時刻、終了時刻、録画日、放送局名などを具体的に指定して録画予約を実行するというものです。本来あることが期待される、録画予約のキャンセルや、録画番組の衝突などのチェックは行えません。メールで録画予約ができるといっても、1文字間違えただけで録画予約が却下されるなど、非常に注意力が要求されるレベルのものです。

そこで、AppleScript側で番組録画予約の管理を行い、番組の終了時刻を調べて自動で補うようにし、番組名をフルネームで書かなくても予約できるようにするなど……よりあいまいな内容で録画予約できるようにすると便利そうです。

また、メールで録画したとしても、送信したコマンドの内容が間違っていたとか、きちんと予約できたといった結果をメールで返すようになっていなければ実用性がいまひとつです。このあたりも、AppleScript側で管理するとよさそうです。

さらに、メールだけでなくiChatやTwitterなどで録画予約ができれば鬼に金棒。Twitter用のコマンド監視Scriptもすでに試作しているため、このあたりはさっくりできそうです。

ユーザー的に、この手の製品に一番期待してしまうのが「iPodやiPhoneで録画した番組を見る」ことだったりするわけですが、現状ではそのあたりの機能はm2TV(のソフトウェア)には用意されていません。「録画→iPod/iPhone向けに変換→iTunesに登録」といったフローが実現できると魅力的なソリューションになると思われます。また、その際にAppleScriptと連携することで、より少ない労力で実現できることでしょう。

m2TVそのものの話になりますが……m2TVのアプリケーションには、(プロ野球の中継が延長になるケースなど)録画予約した番組の放映時間が変更になった場合に自動で録画開始/終了時刻を変更する機能があるようですが、AppleScript経由で明示的に時刻を指定して録画予約した番組がこの機能の恩恵に預かれるのか、そのあたり、実際にプロ野球の中継がはじまる時期に、実際に中継が延長されないと実証ができません。

Core 2 Duo 2.4GHzのMacBook ProでTV視聴を行っている場合には動作が安定していましたが、Core Duo 2.0GHzのMacBook ProではときおりTVの絵が止まるような場面に遭遇しています。なんにしても、長期連続動作が可能か実機で検証する必要がありそうです。

スクリプト名:recSample1
set sTime to “0930″
set eTime to “1030″
set stationName to “NHK総合”
set theDate to (current date) + (1 * days)
set theName to “ぴよまるインタビュー”

set aRes to recTVprogram(sTime, eTime, stationName, theDate, theName) of me
–> true

–テレビ録画予約を実行
–(開始時刻、終了時刻、局名、録画実行月/日、番組名
on recTVprogram(sTime, eTime, stationName, theDate, theName)
  set b to month of theDate as number
  
set bb to retZeroPaddingText(b, 2) of me
  
  
set c to day of theDate as number
  
set cc to retZeroPaddingText(c, 2) of me
  
set d to bb & cc
  
  
set rsvInfo to “tv “ & stationName & ” “ & sTime & ” “ & eTime & ” “ & d & “\n” & theName & “\n”
  
  
tell application “m2TV”
    «event 1TVpaddR» rsvInfo
  end tell
  
  
return true
end recTVprogram

–数値にゼロパディングしたテキストを返す
on retZeroPaddingText(aNum, aLen)
  set tText to (“0000000000″ & aNum as text)
  
set tCount to length of tText
  
set resText to text (tCount - aLen + 1) thru tCount of tText
  
return resText
end retZeroPaddingText

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

★プログラムリスト中に「円マーク」の記述がありますが、実際にはバックスラッシュです

2010/03/04 m2TVで録画予約

アイ・オー・データ機器さんから製品をお借りして、さっそくAppleScriptから録画予約する処理を試してみました。

m2tv3.jpg

m2TVの視聴用アプリ「m2TV」は2010/2月末のアップデート(→ ver 1.3.1f7)により、メールから録画予約する機能が追加され……この機能がAppleScriptで提供されていたために「m2TV自体もAppleScriptからコントロールできるのでは?」との期待が高まり、今回のテストを行うこととなりました。

実際に確認してみたところ……視聴/録画アプリケーション「m2TV」にAppleScript用語辞書は用意されていないのですが、生イベントを送ることでAppleScriptから命令を送ることができるようになっていました。用語辞書さえ用意すれば、何らかの命令語でコントロールすることは可能になっているようです。

m2tv1.jpg
▲m2TVの視聴画面

スクリプト名:m2TVで録画予約
–開始時間、終了時間、日付
set rsvInfo to “tv NHK総合 0900 0930 0304
ニュース

tell application “m2TV”
  «event 1TVpaddR» rsvInfo
end tell
–> 0

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

AppleScriptから録画予約を実行し、録画状況をm2TV上で確認してみるとこんな感じです。

m2tv2.jpg

一応、録画予約実行時にリザルトが返ってくるのですが、同じ日の同じ時刻に重複して録画予約を入れてもリザルトの内容は変わりません(そのかわり、録画予約も行われない)。

m2tv4.jpg

▲GUI側から予約内容の詳細について確認したところ

重複があったり録画指定内容に誤りがある場合にはリザルトが変わるとか、そういう動作を期待したいところですが……まずはAppleScript用語辞書をしっかり装備していただくのが先決でしょう。

2010/02/25 I/Oデータの地デジチューナー「m2TV」添付ソフトがAppleScriptに対応

アイ・オー・データ機器の地上波デジタルチューナー「m2TV」添付ソフトがAppleScriptに対応しているとのこと(Twitter経由でhitoriblogさんの情報)。

地デジのTVをすでに持っているので、AppleScriptで遊ぶためだけに買うのは……なんですが、メーカーにメールでも書いて貸してもらいましょうか?(問い合わせ先が分からない、、、)

添付ソフトのAppleScript用語辞書次第ですが、Web上から情報を収集して録画するとか、twitter経由で録画予約するとか、いろいろできそうな感じがします。