Feelings deep inside

のんびりと音楽の話でも。。

HOMEスポンサー広告デジタルTvRock Ver 0.9u以降でのツイート

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

このエントリーをはてなブックマークに追加    --:--:-- | スポンサー広告  | 
□ Comment

 [コメント記入欄はこちら]


□ コメントを投稿する

   

□ Trackback
この記事のトラックバックURL
□ この記事へのトラックバック

TvRockというソフトが先日Ver 0.9uになってtwitterのBASIC認証が廃止されるのでtwitter関連の項目を全て削除しましたということなので、しばらく様子見していました。
今回のバージョンは番組表で少しバグがあるみたいですが回避できるのでそう大きな問題じゃないですね。
ただ、Twitter関連が使えないのはちょっと不便だなと思っていましたが、その代わりに新たなコマンドが追加されたし、どうせバージョンアップしなくてもBASIC認証が使えるのは今月までなので、OAuth認証対応のソフトを使ってこれまでのようにツイートできるようにしてみました。


【11/25 追記】
・ActivePerlからVBScriptへ移行したので導入しやすくなりました。詳しくは別記事で。
・aquappleさんのTwitterのBasic認証廃止後もTvRockからツイートする方法にて下記の(古い)方法やそれ以外の方法についてわかりやすく解説されているのでそちらも参考にして下さい。


TvRockの「設定」から「プロセス」で「コマンドを実行する」にチェックを入れて、

CR:Twitterソフト名.exe 録画予約 [%j %k~%l] %d %g
CS:Twitterソフト名.exe 録画開始 %d [TvRock %g]
CE:Twitterソフト名.exe 録画終了 %d [TvRock %g]
TJ:Twitterソフト名.exe 時間調整 [%j %k~%l] %d [TvRock %g]

とまあざっとこんな感じです。
録画予約と時間調整はVer 0.9uにする前から使っていなかったので試したけどバージョンアップ前に設定を元に戻さなかったのがいけなかったのかいまいちうまくいってないですが、どうせ使わないのでスルーでw
時間調整は本当なら、

番組 %d の開始時間を○分○秒調整 [TvRock V○ %g]

という表記なんですけど、○の部分の変数がないし、時間調整があると開始と終了でツイートが2つあるから、それなら1つにまとめた方がいいかなということでこんな風にしてみました。
今回は高機能なクライアントソフトの必要がなくできるだけ軽いのがいいなと思って探してみたらコマンドプロンプトで動くTweetConsoleというクライアントソフトがあったので使ってみました。
最初にOAuth認証してしまえば普通に使えるんですが、OAuth認証のメリットの1つにどのソフトを使ってツイートしたのか(「webから」とか「APIから」とか「TweetDeckから」など)が設定できるということなので試してみました。
普通に「TvRock」で登録しようとしたらすでに登録済みだったので、ちょっと工夫して表示の上ではパッと見「TvRock」と同じになるようにしてみましたw
パソコンのクライアントソフトは初めて使ってみたんですが、TweetConsoleだと「twtcnsl.exe.config」というファイルに設定項目が平文で書かれていたのでいじったら他のソフトのように振る舞うことができます(^-^;
具体的には下から17行目(ConsumerKey)と14行目(ConsumerSecret)の<value></value>で囲まれた文字列を変更すればいいみたいです。
今回登録したConsumer keyが「EZRZStZjab4jrlYi5RfR8w」で、Consumer secretが「92shi4Gj9vwUumCdTiPT12cGVzTTFF5O2cZcoYkHPI」なのでこれに書き換えたらツイートの時に「TvRockから」となるはずです。
このソフト名は先着順のようなので私だけで使うのはもったいないというかおこがましいので、ここで公開して皆さんに使ってもらえたらと…。
まぁ、TvRockの作者にメールしようかと思ったんですが面倒くさいんで止めました。
というか、最初に「TvRock」で登録した人が公開してくれるのが一番いいし。
TweetConsoleを使った場合のコマンドは、

CR:"C:\TvRock\TweetConsole\twtcnsl.exe" /t 録画予約 [%j %k~%l] %d [TvRock V0.9u %g]
CS:"C:\TvRock\TweetConsole\twtcnsl.exe" /t 録画開始 %d [TvRock V0.9u %g]
CE:"C:\TvRock\TweetConsole\twtcnsl.exe" /t 録画終了 %d [TvRock V0.9u %g]
TJ:"C:\TvRock\TweetConsole\twtcnsl.exe" /t 時間調整 [%j %k~%l] %d [TvRock V0.9u %g]

といった感じになります。
ドロップ情報などのコマンドがないのでこれまでより情報量が少なくなってしまいますね。
バージョンのコマンドもあると書き換えなくてすむのでありがたいんですが…。
ただ、悪いことばかりじゃなくて、新しくコマンド発行してくれたおかげでツイート内容をカスタマイズすることもできるし、個別にコマンドを設定すれば予約毎にツイート内容を変更したりツイートしないようにすることもできるので使い方が広がりますね。
昨夜やっつけで試しただけなのでTweetConsoleを改変して使いましたが、時間ができたらPHPやPerlなんかでやる方法もあるみたいだしそういったのに切り替えたいです。


【6/20 追記】
前みたいな感じでツイートできないかなとTvRockのログを見てたら、もしかしたらログを使えばいいんじゃね?ということでログを置換してみることに。
ただ、コマンドプロンプトだとfindstrで正規表現が使えるのかと思ったら正規表現で置換することはできないようなのでActivePerlをインストールして正規表現を使えるように。
まぁ、WSHでもよかったんでしょうが使ったことないので調べるのが面倒だったし。
Perlも数日触ったことがあるという程度なのでよく分かっていないから正規表現での置換部分以外はこの中で一番慣れているコマンドプロンプトで(^-^;

# 録画開始
CS:find "[%h]番組「%d」 録画開始" tvrock.log | sort /r | perl -pe "s/^.*:[0-9][0-9] (.+?)\]:\[.+?Sig=(.+?), Bitrate=(.+?)Mbps, Drop=(.+?), Scrambling.+? BcTimeDiff=(.+?)sec, TimeAdj=(.+?)sec, CPU.*/録画開始 %d \[Sg\2,Br\3,Dr\4,Td\5,Ta\6,TvRock V\1\ %g]/g;" | find /v ".+?" > Z:\temp\tweet%hs.tmp
CS:"C:\TvRock\TweetConsole\twtcnsl.exe" /txt 1 Z:\temp\tweet%hs.tmp
CS:del Z:\temp\tweet%hs.tmp
# 録画終了
CE:find "[%h]番組「%d」 録画終了" tvrock.log | sort /r | perl -pe "s/^.*:[0-9][0-9] (.+?)\]:\[.+?Sig=(.+?), Bitrate=(.+?)Mbps, Drop=(.+?), Scrambling.+? BcTimeDiff=(.+?)sec, TimeAdj=(.+?)sec, CPU.*/録画終了 %d \[Sg\2,Br\3,Dr\4,Td\5,Ta\6,TvRock V\1\ %g]/g;" | find /v ".+?" > Z:\temp\tweet%he.tmp
CE:"C:\TvRock\TweetConsole\twtcnsl.exe" /txt 1 Z:\temp\tweet%he.tmp
CE:del Z:\temp\tweet%he.tmp

ということで、見ての通りかなりごり押しで汚いです(^-^;
バッチファイルを使ったり、Perl部分はplファイルにした方がログがスッキリして見やすいと思います。
うちの場合、広島と愛媛の両県の放送が入ってまれに同じ番組を同時に録画することがあるので、最初のfindやツイート用の一時ファイルに%hを使ってディバイス名を入れてます。
ログに同じ番組名のものが複数ある場合にPerlを使ったらなぜか置換できてないのが混ざることがあるので、さらにfind /vで除外しました。
うちの環境では%temp%をRAMDISKのZ:\temp\にしているんですが、TvRockからのコマンドを実行した場合、%temp%のうち%tが変数になって使えないから直接パスを指定しました。
TweetConsoleは/txtで指定行をツイートすることができるので便利ですね。


【6/21 追記】
前日のやり方だと、CSやCEのコマンドの順番が必ずしも書かれたとおりにはならなくて、TNを使ってみたのにCEより先に実行されたことがあったのでコマンドを直接書き込む方法は断念。
コマンド(command.txt)には、

# 録画開始
CS:tweet.bat "開始" "%h" "%8" "%9" "%c" "%g" "%5"
# 録画終了
CE:tweet.bat "終了" "%h" "%8" "%9" "%c" "%g" "%5"

と書く。
番組タイトルは%dと%8の二つがありますが%8だと番組表やキーワード検索以外で予約の新規登録(普通はしないと思いますがw)でタイトルを入力すればタイトルが空にならないですね。
もしくは、ファイル名をカスタマイズしてあるのであれば代わりに%4を使うのもいいと思います。
そしてシステム設定で指定したTvRock作業フォルダに「tweet.bat」というファイルを作り、中身は、

@echo off
set subttl="%~4"
set genre="%~5"
if %subttl% == "notweet" goto :EOF
if %genre% == "ジャンル名" goto :EOF
find "[%~2]番組「%~3」 録画%~1" tvrock.log | sort /r | perl -pe "s/^.*:[0-9][0-9] (.+?)\]:\[.+?Sig=(.+?), Bitrate=(.+?)Mbps, Drop=(.+?), Scrambling.+? BcTimeDiff=(.+?)sec, TimeAdj=(.+?)sec, CPU.*/録画%~1 %~3 \[Sg\2,Br\3,Dr\4,Td\5,Ta\6,TvRock V\1\ %~6]/g;" | find /v ".+?" > "%temp%\tweet%~2%~1.tmp"
"C:\TvRock\TweetConsole\twtcnsl.exe" /txt 1 "%temp%\tweet%~2%~1.tmp"
del "%temp%\tweet%~2%~1.tmp"

としてみました。
サブタイトルに「notweet」と指定した場合や、特定のジャンルの録画はツイートしないようにしてみました。
それ以外のサブタイトルや指定しなかった場合には通常通りツイートしますし、この部分をいじれば特定のタイトルやサブタイトルもしくはジャンルなどに応じてツイート内容も変更できそうですね。


【6/28 追記】
Perlで処理すると番組名で一部文字化けするものがあったので処理を変更。
本当は、plファイルに「use encoding 'shift-jis';」を書いておけば解決するんでしょうが、Perlの扱いに慣れていないのでバッチファイル側で処理することに…(^-^;
コマンドの方は前回同様でバッチファイルの「tweet.bat」を以下のように変更。

@echo off
set subttl="%~4"
set genre="%~5"
if %subttl% == "notweet" goto :EOF
if %genre% == "ジャンル名" goto :EOF
set /p =録画%~1 %~3 > "%temp%\tweet%~2%~1.tmp"0<nul
find "[%~2]番組「%~3」 録画%~1" tvrock.log | sort /r | perl -pe "s/^.*:[0-9][0-9] (.+?)\]:\[.+?Sig=(.+?), Bitrate=(.+?)Mbps, Drop=(.+?), Scrambling.+? BcTimeDiff=(.+?)sec, TimeAdj=(.+?)sec, CPU.*/\[Sg\2,Br\3,Dr\4,Td\5,Ta\6,TvRock V\1\ %~6]/g;" | find /v ".+?" >> "%temp%\tweet%~2%~1.tmp"
"C:\TvRock\TweetConsole\twtcnsl.exe" /txt 1 "%temp%\tweet%~2%~1.tmp"
del "%temp%\tweet%~2%~1.tmp"

今度はあらかじめ番組名を書き出した後に録画ステータスを追記する形に。
普通に「echo 番組名 > test.txt」みたいにしたら改行コードが最後に入ってしまって、そのまま追記するから1行目をツイートしても番組名しかツイートされない…という事態になってしまった。
改行コードを取り除く方法はないかネットで調べたら、教えて!gooで使えそうなのがあったので参考にしました。
でも、できるならバッチファイルは卒業して、「」(はしご高)のような文字はTvRock側ですでに文字化けしているので、よくありそうな固有名詞をあらかじめ登録しておいて置換するというようなこともやってみたかったんですけどね…(^-^;


【7/16 追記】
録画開始時にログの参照がログの書き込みに間に合わない?ことがあったので、取りあえず3秒ウェイトを置いて様子を見てみる。
以下のコマンドを7行目へ挿入。

ping localhost -n 3 > nul


【8/5 追記】
Ver 0.9t8ではバージョンの後にタグ(%g)が短いのと長いのと2種類あるんですが、長い方しか変数が用意されていなかったし、短いのはそこまで需要なさそうかなと思ってブログの方は放置していたんですが、試しに自分用に短いのもつけてたら質問があったので公開。
タグの仕様が明らかにされていないので合っているのか分かりませんが、Ver 0.9t8でのツイートを見ていると長い方のタグ(%g)から後ろ4文字削除したもののようですね。
そこでバッチファイルをこんな風にしてみました。

@echo off
set subttl="%~4"
set genre="%~5"
if %subttl% == "notweet" goto :EOF
if %subttl% == "tweet" goto tweet
if %genre% == "ジャンル名" goto :EOF
:tweet
set /p =録画%~1 %~3 >"%temp%\%~2%~1tweet.tmp"0<nul
set tag=%~6
ping localhost -n 3 > nul
find "[%~2]番組「%~3」 録画%~1" tvrock.log | sort /r | perl -pe "s/^.*:[0-9][0-9] (.+?)\]:\[.+?Sig=(.+?), Bitrate=(.+?)Mbps, Drop=(.+?), Scrambling.+? BcTimeDiff=(.+?)sec, TimeAdj=(.+?)sec, CPU.*/\[Sg\2,Br\3,Dr\4,Td\5,Ta\6,TvRock V\1\ %tag:~0,-4% %~6]/g;" | find /v ".+?" >> "%temp%\%~2%~1tweet.tmp"
"C:\TvRock\TweetConsole\twtcnsl.exe" /txt 1 "%temp%\%~2%~1tweet.tmp"
del "%temp%\%~2%~1tweet.tmp"

ハッシュタグにするならタグの前に#をつけた方がいいのかなと思ったり…。
ついでに、6行目のジャンル名で指定したジャンルをツイートしない時でもサブタイトルに「tweet」と入れていれば例外的にツイートするのも付け加えておきました。

このエントリーをはてなブックマークに追加    12:40:52 | デジタル  | Trackback (0)  | Comment (0)  | 
□ Comment

 [コメント記入欄はこちら]


□ コメントを投稿する

   

□ Trackback
この記事のトラックバックURL
□ この記事へのトラックバック
Base template by Sun&Moon.  
Copyright © 2005-2017 Feelings deep inside. All Rights Reserved. Powered by FC2 BLOG.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。