1月3日更新
RD-X9にはUKTvListからは予約ができない。
メール予約の形式も違うのでメール予約もできない
そこでMortScriptでUKTvListからRD-X9に予約を入れる為、あれこれしてみる。
「QuicTodayからmortscriptwrapper経由で文字列を受け取って色々するスクリプト」を
参考&改造してあれこれしている個人的メモですので
このままコピっても動かないかもしれません。
「channels.tsv」のチャンネル設定を
スカパー!
1UKTVSP724SP724アニマックス0---
地デジ
8UKTV081081フジテレビ08
「mortscriptwrapper」の名前をtmailms.exeにini、mscrも同じにして、
Windowsフォルダーに三つのファイルを移動
mailto形式をtmailms.exeに渡すため、レジストリの
HKEY_CLASSES_ROOT\mailto\Shell\Open\Command\Default
[tmail.exe %1]とある部分を[tmailms.exe "%1"]に変更。
””を忘れると配列渡せないので注意
ただ、このままだとmailto経由のメールが全部tmailms.exeに渡されてしまうので、
予約メール以外はメーラーに渡すように何とかしたい
tmailms.mscr
# 改造版、UKTVLISTからRD-X9へ予約MAILを送れるようにする
##############################
# ファイル・フォルダ設定
# SpeedMail12.exeのフルパス エッジe-mail用
sm12 = "\microSD\SpeedMail12\LeMail207.exe"
# SimpleSendMail.exeのフルパス
ssm = "\Program Files\simpleSendMail\simpleSendMail.exe"
# UrlDecode.mscrのフルパス
urldecode = "\Program Files\MortScript\lib\UrlDecode.mscr"
##############################
# url設定# uktv
flg = "SCUKTV"
sflg = "SCUKTVSP"
##############################
# 送信元メールアドレス設定
mail = "メールアドレス"
# 付加するタグ 1 X9、2 レグザ
tag1 = "open パス prog add"
tag2 = "open パス"
# 送信先メールアドレス
rdad = "メールアドレス"
#######################
# 改行専用文字
r = "/"
# 挿入スペース
sp = " "
# 変数囲い込み用
d='"'
fd="D"
##################
###
#該当がなかったらメーラーに渡すようにしたいがまだ
x = Find( ap, flg )
if(x>0)
# 文字列を「 」で分割して配列data[]に格納
j = 1
ForEach data[j] in split( ap , " " , 0 )
j = j+1
EndForEach
#bodyに含まれるフラグと不要部分を消す
ch = Replace( data[4] , "SCUKTV" , "" )
kaisi = data[5]#開始時間
owari = data[6] #終了時間
hiniti = data[7] #日付
ban = data[9]#番組名
bsetu = data[11]#番組説明
#BCCを送信先機種判定に使う
#####1216
bc = data[13]#&bcc= 送信先機種の判別
bc = Replace( bc , "&bcc=" , "" )
#Message ( ap)
#Message ( bc)
Switch ( bc )
Case ( "RD-X9" )
#Message ( bc)
s = Find( ap, sflg )
tag = tag1
if(s>0)
ch = ch
else
ch = fd&ch
EndIf
Case ( "REGZA" )
#Message ( bc)
tag = tag2
EndSwitch
######################
#Sub rdcil
######1216
#足りない年を追加、注、今の年を入れるので年をまたぐ時は無理
nen = FormatTime( "Y", TimeStamp() + 86400 )
#nen=2012#年をまたぐ予約の時に#をはずす暫定対処
#今年中に日にちがない場合、次の年に
syosi=tag & sp & nen & hiniti & sp & kaisi & sp & owari & sp & ch & "^NL^" & ban & "^NL^" & bsetu
#syosi="\a\b\t\n\v\f\r*\xab*\x0ab*\xa*b%20*nbsp;*syosi1\r*\n@\b\t\s\"
#SetClipText ( syosi ) #クリックボードにコピー
address = rdad
txt = syosi
#Call( "dec" )
title = "UKTV*"&bc&":"&ban
txt = Replace( txt , r , "\r" )
#Message ( txt)
If( Question(txt & "^NL^^NL^予約メールを送信します、よろしいですか?" , "YesNo" ))
Call( "mail" )
Else
SetClipText( txt )
#Message( "送信しないで終了します。メッセージはクリップボードにコピーしました。" )
EndIf
Else
Message( "予約メール以外" )
EndIf
Exit
#EndSub
##############################
# utf-8デコードサブルーチン
Sub dec
# 分割用記号「'」を付加
txt1 = Replace( txt1 , "%" , "'%" )
# 半角空白を全角空白に変換
txt1 = Replace( txt1 , "%20" , " " )
# エンコードされた文字列を「'」で分割して配列data[]に格納
j = 1
ForEach data[j] in split( txt1 , "'" , 0 )
# 配列data[j]の先頭が「%」かつ3文字以上あったら
If 3 ">*1
# 配列data[j]の3文字目以降を配列data[j+1]に格納
data[j+1] = SubStr( data[j] , 4 )
# 配列data[j]の先頭から3文字目までを配列data[j]に格納
data[j] = SubStr( data[j] , 1 , 3 )
# 配列カウンタを2進める
j = j + 2
# 上記以外は配列カウンタを1進める
Else
j = j + 1
EndIf
EndForEach
# 配列data内で「%○○」が3連続していたら
For i = 1 to j
If*2
# その部分をurldecode.mscrに投げる
CallScriptFunction( urldecode , txt2 , data[i] & data[i+1] & data[i+2] )
# 返ってきた文字をtxtに追加して参照配列を2進める
txt = txt & txt2
i = i + 2
# それ以外の部分(半角英数等)はそのままtxtに追加
Else
txt = txt & data[i]
EndIf
Next
EndSub
##############################
# メール送信サブルーチン
Sub mail
# 送信判定ループ開始(resの値が1の間ループ)
res = 2
While( res = 2 )
# SimpleSendMailで送信を試みて戻り値を取得
#res = RunWait( ssm , address & " " & title & " " & txt )
#res = RunWait( ssm , address & " " & title & " " & d & txt & d)
#エッジe-mail用
txt = Replace( txt , " " , "%20" )
res = RunWait( sm12 , address & " " & title & " " & txt &" /he32")
# 送信失敗なら自動再送か手動再送か終了(キャンセル)を選択
If( res = 2 )
Choice( "動作選択" , "送信に失敗しました、どうしますか?" , "圏内になったら自動再送する" , "手動で再送する" )
# キャンセルならメール本文をクリップボードに待避して終了
Case( 0 )
SetClipText( txt )
Message( "送信しないで終了します。メール本文はテキストボックスに待避しました。" )
Exit
# 手動で再送する
Case( 2 )
EndChoice
EndIf
EndWhile
# 終了メッセージ
#Message( "送信終了" )
EndSub
Exit
########################
*1: CharAt( data[j] , 1 ) eq "%" ) and ( Length( data[j] ) > 3
*2: CharAt( data[i] , 1 ) eq "%" ) and ( CharAt( data[i+1] , 1 ) eq "%" ) and ( CharAt( data[i+2] , 1 ) eq "%"