ねこのそらちゃんを病院へ連れてく


母が猫のそらちゃんの首回りや腰回りにぶつぶつができてる事が気になるそうで毎月病院で餌(去勢したので専用の餌)を買うのでついでに診察してもらう事になった。ブツブツを写真に撮りたかったが毛深いので触感でしか分からなかった。

猫専用のゲージに入れて車で向かう

以前はバスで連れて行った事もあるが移動中ずーと泣いてる
バスだとずーと泣いて困るので最近は車で移動

いつもお世話になってるいけだ動物病院

以前は佐世保のララコープ日野店の近くにあったが同じ日野の新興住宅街に移動してきた
診察すると猫栗粒性皮膚炎との診断。
アレルギー性の皮膚炎との事。昔からブツブツはあったのでそんなに驚かなかったが去勢とも関係あるのだろう。とりあえず抗生剤と消炎症薬を頂く。初診と薬代で3180円でした。ここは毎月餌も買ってるが比較的リーズナブルな価格なので助かる

地域柄米軍基地の方も見えられ英語対応も可能みたいでよく外人の方も来る。薬を一週間分貰って様子を見ることにした。後日また報告したい。


ジェントス懐中電灯(DM-031B)を買った



今まで使ってたLED懐中電灯が接触不良でいまいちなのでAmazonで新しい懐中電灯を買った。ジェントス 懐中電灯45ルーメン(DM-031B)ってやつだ。単三一本のを探してた。

ストラップはダイソーの奴です。ストラップの付属はありません

横から。後で記載しますがストラップはペンクリップに引っ掛けてます

穴の電源ボタン。押しやすい

頭のライト部分。照射範囲はかなり広めで近い位置を照らす感じ。
ズーム機能など可動部分はありません

単三一本で10時間ぐらい。一日1時間使用で一週間ぐらいで暗くなる。

ペンクリップは取り外し可能。根元にストラップを引っかきてストラップを使ってライトを首から下げてる

夜室内で使用感を撮影しようとしたが撮影がうまくいかなかった。
汚い襖に照射してみてる。
パワフルな照射感ではないが100均の単4×3つのLEDライトより明るい。ズーム機能があればかなりいいのだが残念ながら無い。
しかし、このジェントスのライトは軽く小さい。口でくわえて作業しても苦にならない。他社のLED単4×3つライトより暗いが小さく軽いため常用するのにいい。ポケットに入れても邪魔にならない。
900円でこのサイズ感はお買い得だ


一眼レフカメラの掃除は大変だ


遅くなりましたがあけましておめでとうございます
2017年もよろしくお願いします
年末年始は風邪で寝込んでたのと微妙に忙しくこの時期になってしまった。去年の年末に佐世保九十九島の夕暮れを撮ろうと石岳展望台に行った模様を記事にした。

車で行くとちょっとした駐車場がある

山道を歩いていくと展望台がある

映画ラストサムライの撮影場所らしい。

人気の撮影場所で何人もカメラ片手に待機してた。島並がいいのだろうか?

場所取りで先客が沢山だったので奥の展望台に行くことにした

奥の展望台で一眼レフカメラで何枚も撮影したのだがセンサーにゴミが沢山あって失敗した

帰って一眼レフカメラを掃除して次の晴れ間に近くの船越展望所で再チャレンジしたがまだゴミが残ってたようだ

普通の景色撮影ならゴミが目立たないが夕焼けは厳しいようだ
掃除を何回もして天気がいい日に再チャレンジしたい


Time.vbsにバグがありました


Time.vbsは録音時間計算のスプリクトです。バッチファイルで時間計算は大変なのでWSHで処理します。
しかし終了時間0時近辺の録音が停止しないバグがあったので調べました。

以前の Time.vbs

' CScript Time.vbs /r:0:01:00
' CScript Time.vbs /d:2016/12/14 /t:00:01:00

Option Explicit
Dim argRecTime
Dim value
dim gRecTime
dim argDay
dim argTime
Dim aNamed
Set aNamed = WScript.Arguments.Named

argRecTime = WScript.Arguments.Named.Item("r")
argDay = WScript.Arguments. Named.Item("d")
argTime = WScript.Arguments. Named.Item("t")

if not (argRecTime = "") Then

  '引数で指定の録音時間を日時属性に変換
  gRecTime = TimeValue(argRecTime)

  '録音終了日時を求める
  Dim gEndDate
  gEndDate = Now() + gRecTime
  WScript.Echo gEndDate
End If

if not (argTime = "") Then

  '引数で指定の録音時間を日時属性に変換
  argRecTime = TimeValue(argTime)
  argDay = DateValue(argDay)

  argRecTime = argDay + argRecTime

  '録音秒数をrtmpdumpの引数形式(秒数)にする
  gRecTime = argRecTime - Now()
  if (gRecTime > 0) Then
    gRecTime = Hour(gRecTime) * 60 * 60 + Minute(gRecTime) * 60 + Second(gRecTime) + 20
    '20秒ほどマージンを設けることで録音終了時の誤差でリトライにいってしまうことを防止する。
  Else
    gRecTime ="EXIT"
  End If
  WScript.Echo gRecTime

End If

このスプリクトだと録音終了日時が0:00:00だと省略されて日付のみ返す事がわかりました。秒に直すと文字列を返さないため永遠に録音されます。

新しい Time.vbs

' CScript Time.vbs /r:0:01:00
' CScript Time.vbs /d:2016/12/14 /t:18:47:44

Option Explicit
Dim argRecTime
Dim value
dim gRecTime
dim argDay
dim argTime
Dim aNamed
Set aNamed = WScript.Arguments.Named

argRecTime = WScript.Arguments.Named.Item("r")
argDay = WScript.Arguments. Named.Item("d")
argTime = WScript.Arguments. Named.Item("t")

if not (argRecTime = "") Then

    '引数で指定の録音時間を日時属性に変換
    gRecTime = TimeValue(argRecTime)

    '録音終了日時を求める
    Dim gEndDate
    gEndDate = Now() + gRecTime
    WScript.Echo gEndDate

End If

if not (argDay = "") Then

    '引数で指定の録音時間を日時属性に変換

    argDay = DateValue(argDay)

    if (argTime = "") Then
        argRecTime = argDay
    Else
        argRecTime = TimeValue(argTime)
        argRecTime = argDay + argRecTime
    End If

    '録音秒数をrtmpdumpの引数形式(秒数)にする
    gRecTime = argRecTime - Now()
    if (gRecTime > 0) Then
        gRecTime = Hour(gRecTime) * 60 * 60 + Minute(gRecTime) * 60 + Second(gRecTime) + 20
        '20秒ほどマージンを設けることで録音終了時の誤差でリトライにいってしまうことを防止する。
    Else
        gRecTime ="EXIT"
    End If
    WScript.Echo gRecTime

End If

そこで0:00:00で空欄の場合、秒計算で時間の引数を計算しないようにしました

 


らじる★らじるをバッチファイルとWSHで録音する


以前の記事でらじる★らじるを録音する方法を記事にした。
-注意-
今回はNHKラジオのらじる★らじるを録音する記事です

その時、github.comのbooskaのらじる★らじるを録音するWSHのスプリクトを利用することで録音することを紹介していた。しかし、booskaさんのソースは公開中止になってしまった。

いろいろ検討した結果、booskaさんのスプリクトを参照してバッチファイルとWSHで作成した。現在動作確認中だがほぼ利用可能な状況になったのでここに紹介することにする

おまけでコミュニティFMのJCBA系列と超A&G!が録音できます。

作成はWindows 10環境で作成しています。動作確認はWindows 7です。

利用にあたって
rtmpdump.exe
https://github.com/K-S-V/Scripts/releases

ffmpeg.exe
http://hp.vector.co.jp/authors/VA020429/ffmpeg/ffmpeg.html
https://ffmpeg.org/

各種実行ファイルを集めて一つのフォルダに置いてください

RajiruRec.bat

@echo off

REM rtmpdumpなどの位置のドライブ
set drive=D:

REM rtmpdumpなどの位置(最後に\を)
set DFDirectory=D:\RajiruRec\

REM 録音ファイルの保存のドライブ
set argdrive=D:

REM 録音ファイルの保存先(最後に\を)
set argDirectory=D:\RajiruRec\rec\

set RTMPDUMP=rtmpdump.exe
set argOut = "out"

%drive%
cd %DFDirectory%

rem 録音ファイルの保存先フォルダチェックと作成
IF NOT EXIST "%argDirectory%" (md %argDirectory%)
IF NOT EXIST "%argDirectory%OLD" (md %argDirectory%OLD)

set ch=%1
if "%1"=="" goto usage
if not "%2"=="" set argSTOPSEC=%2
if "%2"=="" goto usage
if not "%3"=="" set argOut=%3

rem 録音終了日時を求める
for /f "tokens=1,2" %%i in ('CScript Time.vbs /r:%argSTOPSEC%') do (
    SET AUTHTOKEN_D=%%i
    SET AUTHTOKEN_T=%%j
)

REM NHKの連想配列
REM R1東京
if %ch%==R1 (
    set aaNHK_r=rtmpe://netradio-r1-flash.nhk.jp
    set aaNHK_y=NetRadio_R1_flash@63346
    )
REM R2東京
if %ch%==R2 (
    set aaNHK_r=rtmpe://netradio-r2-flash.nhk.jp
    set aaNHK_y=NetRadio_R2_flash@63342
    )
REM FM東京
if %ch%==FM (
    set aaNHK_r=rtmpe://netradio-fm-flash.nhk.jp
    set aaNHK_y=NetRadio_FM_flash@63343
    )
REM R2東京
if %ch%==JOAB (
    set aaNHK_r=rtmpe://netradio-r2-flash.nhk.jp
    set aaNHK_y=NetRadio_R2_flash@63342
    )
REM R1東京
if %ch%==JOAK (
    set aaNHK_r=rtmpe://netradio-r1-flash.nhk.jp
    set aaNHK_y=NetRadio_R1_flash@63346
    )
REM R1仙台
if %ch%==JOHK (
    set aaNHK_r=rtmpe://netradio-hkr1-flash.nhk.jp
    set aaNHK_y=NetRadio_HKR1_flash@108442
    )
REM R1名古屋
if %ch%==JOCK (
    set aaNHK_r=rtmpe://netradio-ckr1-flash.nhk.jp
    set aaNHK_y=NetRadio_CKR1_flash@108234
    )
REM R1大阪
if %ch%==JOBK (
    set aaNHK_r=rtmpe://netradio-bkr1-flash.nhk.jp
    set aaNHK_y=NetRadio_BKR1_flash@108232
    )
REM FM東京
if %ch%==JOAK-FM (
    set aaNHK_r=rtmpe://netradio-fm-flash.nhk.jp
    set aaNHK_y=NetRadio_FM_flash@63343
    )
REM FM仙台
if %ch%==JOHK-FM (
    set aaNHK_r=rtmpe://netradio-hkfm-flash.nhk.jp
    set aaNHK_y=NetRadio_HKFM_flash@108237
    )
REM FM名古屋
if %ch%==JOCK-FM (
    set aaNHK_r=rtmpe://netradio-ckfm-flash.nhk.jp
    set aaNHK_y=NetRadio_CKFM_flash@108235
    )
REM FM大阪
if %ch%==JOBK-FM (
    set aaNHK_r=rtmpe://netradio-bkfm-flash.nhk.jp
    set aaNHK_y=NetRadio_BKFM_flash@108233
    )

REM JCBAの連想配列
REM 参考URL https://radioserver2.jimdo.com/
REM はっぴぃ!FM
if %ch%==JOZZ0BE-FM (
    set aaJCBA=rtmpe://jcbasimul061-live1.sp1.fmslive.stream.ne.jp/jcbasimul061-live1/_definst_/jcbasimul061-live
)
REM FM西東京
if %ch%==JOZZ3AU-FM (
    set aaJCBA=rtmp://jcbasimul003-live1.sp1.fmslive.stream.ne.jp/jcbasimul003-live1/_definst_/jcbasimul003-live
)
REM むさしのFM
if %ch%==JOZZ3AG-FM (
    set aaJCBA=rtmp://jcbasimul032-live1.sp1.fmslive.stream.ne.jp/jcbasimul032-live1/_definst_/jcbasimul032-live
)
REM FMえどがわ
if %ch%== JOZZ3AS-FM (
    set aaJCBA=rtmp://jcbasimul033-live1.sp1.fmslive.stream.ne.jp/jcbasimul033-live1/_definst_/jcbasimul033-live
)
REM 超A&G!の録音パラメータ
if %ch%== AG (
    set aaJCBA=rtmp://fms-base1.mitene.ad.jp/agqr/aandg22
)

set loopck=0

:loop

rem 録音時間を秒に変換
for /f %%i in ('CScript Time.vbs /d:%AUTHTOKEN_D% /t:%AUTHTOKEN_T%') do SET AUTHTOKEN_END=%%i
set STOPSEC=--stop %AUTHTOKEN_END%

if "%loopck%" == "0" set FLV_loop=
if "%loopck%" geq "1" set FLV_loop=(%loopck%)

set yyyymmdd=%date: =0%
set hhmmss=%time: =0%
set YMD=%yyyymmdd:~0,4%%yyyymmdd:~5,2%%yyyymmdd:~8,2%_%hhmmss:~0,2%%hhmmss:~3,2%%hhmmss:~6,2%
set FLV=%YMD%_%ch%_%argOut%

set RADI_PASS=

REM らじる★らじるの録音パラメータ
if not "%aaNHK_r%"=="" (
set RADI=%RTMPDUMP% -flashVer "WIN 15,0,0,152" --rtmp "%aaNHK_r%" --timeout 10 --playpath "%aaNHK_y%" --app ""live"" -W ""http://www3.nhk.or.jp/netradio/files/swf/rtmpe.swf"" --live -o "%argDirectory%%FLV%%FLV_loop%.flv" %STOPSEC%
    set RADI_PASS=1
)
REM JCBAの録音パラメータ
if not "%aaJCBA%"=="" (
    set RADI=%RTMPDUMP% --quiet -flashVer "WIN 15,0,0,152" --rtmp "%aaJCBA%" --timeout 10 --live -o "%argDirectory%%FLV%%FLV_loop%.flv" %STOPSEC%
    set RADI_PASS=1
)

if "%RADI_PASS%"=="" goto usage

echo 録音開始%date%_%time%_"%~3" >> log.txt
echo 「%ch%」の「%argOut%」を録音開始、録音時間は「%argSTOPSEC%」
echo %RADI%
%RADI%
echo 録音停止%date%_%time%_"%~3" >> log.txt

for /f %%i in ('CScript Time.vbs /d:%AUTHTOKEN_D% /t:%AUTHTOKEN_T%') do SET AUTHTOKEN_EXIT=%%i
if "%AUTHTOKEN_EXIT%" == "EXIT" goto loopEXIT
if "%loopck%" geq "20" goto loopEXIT
set /a loopck=loopck+1

REM Sleep[15秒数]
set /a wtime=15*1000
echo WScript.Sleep %wtime% > tmp.vbs
cscript //NoLogo tmp.vbs
del tmp.vbs
set wtime=
REM ***

goto loop

:loopEXIT

%argdrive%
cd %argDirectory%
for %%F in (*.flv) do goto FILE_EXIST
echo エラーファイルが無い%date%_%time%_%argOut% >> %DFDirectory%log.txt
goto end

:FILE_EXIST
echo MP3変換開始%date%_%time%_"%argOut%" >> %DFDirectory%log.txt
REN *"%argOut%"*.flv *.m4a
for %%i in (*"%argOut%"*.m4a) do %DFDirectory%ffmpeg.exe  -y -i "./%%~ni.m4a" -vn -acodec libmp3lame -strict unofficial "./%%~ni.mp3"
move *"%argOut%"*.m4a OLD\ >> %DFDirectory%log.txt
echo MP3変換完了%date%_%time%_"%argOut%" >> %DFDirectory%log.txt
goto end

:usage
echo "RajiruRec.bat JOAK 0:01:00 NHK深夜便"
echo "RajiruRec.bat JOZZ3AU-FM 0:01:00 JCBA_FM西東京"
echo "RajiruRec.bat AG 0:01:00 超A&G!"

:end

D:\RajiruRec\にて実行する設定になっています
途中で回線が切断されても時間計算して再録音し最後にmp3に変換するようになっています。
-起動例-
RajiruRec.bat JOAK 1:00:00 NHK深夜便
RajiruRec.bat JOAK 録音時間1時間 録音番組名(ファイル名に含まれます)
コールサインが引数になってます。
R1東京はJOAK、R2東京はJOAB
JCBA系列のFM西東京はJOZZ3AU-FM
他のエリアは下記のURLを参考にバッチファイルを変更してください
参考URL https://radioserver2.jimdo.com/
超A&G!はAGです

Time.vbs

' CScript Time.vbs /r:0:01:00
' CScript Time.vbs /d:2016/12/14 /t:18:47:44

Option Explicit
Dim argRecTime
Dim value
dim gRecTime
dim argDay
dim argTime
Dim aNamed
Set aNamed = WScript.Arguments.Named

argRecTime = WScript.Arguments.Named.Item("r")
argDay = WScript.Arguments. Named.Item("d")
argTime = WScript.Arguments. Named.Item("t")

if not (argRecTime = "") Then

    '引数で指定の録音時間を日時属性に変換
    gRecTime = TimeValue(argRecTime)

    '録音終了日時を求める
    Dim gEndDate
    gEndDate = Now() + gRecTime
    WScript.Echo gEndDate

End If

if not (argDay = "") Then

    '引数で指定の録音時間を日時属性に変換

    argDay = DateValue(argDay)

    if (argTime = "") Then
        argRecTime = argDay
    Else
        argRecTime = TimeValue(argTime)
        argRecTime = argDay + argRecTime
    End If

    '録音秒数をrtmpdumpの引数形式(秒数)にする
    gRecTime = argRecTime - Now()
    if (gRecTime > 0) Then
        gRecTime = Hour(gRecTime) * 60 * 60 + Minute(gRecTime) * 60 + Second(gRecTime) + 20
        '20秒ほどマージンを設けることで録音終了時の誤差でリトライにいってしまうことを防止する。
    Else
        gRecTime ="EXIT"
    End If
    WScript.Echo gRecTime

End If

録音時間計算のスプリクトです。バッチファイルで時間計算は大変なのでWSHで処理します

2016年12月28日 修正しました

Time.vbsにバグがありました

 

schtasks.bat

goto kome

/sc 種類 	スケジュールの種類を指定する。指定できる種類は次の通り。
種類 	内容
MINUTE 	分単位でスケジュールを指定
HOURLY 	時間単位でスケジュールを指定
DAILY 	日単位でスケジュールを指定
WEEKLY 	週単位でスケジュールを指定
MONTHLY 	月単位でスケジュールを指定
ONCE 	指定した日時に一回限り実行
ONSTART 	システム起動ごとに実行
ONLOGON 	ログオンごとに実行
ONIDLE 	アイドル状態が一定時間続いた場合に実行

/d 日 	曜日または日にちを指定する。 スケジュールの種類が「WEEKLY」、または「MONTHLY」の場合に有効。
曜日は以下のように3文字で表す。
値 	内容
MON 	月曜日
TUE 	火曜日
WED 	水曜日
THU 	木曜日
FRI 	金曜日
SAT 	土曜日
SUN 	日曜日
スケジュールの種類と指定できる値は次の通り。
WEEKLYの場合 MON~SUN、あるいは「*(毎日)」。 省略時は「/d MON」を指定したとみなされる。
MONTHLYの場合 1~31の数字。省略時は「/d 1」 を指定したとみなされる。「/mo」オプションに
FIRST、SECOND、THIRD、FOURTH、LAST が指定されている場合は、必ず「/d」オプションで曜日を指定する。

SCHTASKS /CREATE /TN "NHK今日は一日アニソン三昧" /TR "D:\RajiruRec\RajiruRec.bat JOAK-FM 16:04:00 NHK今日は一日アニソン三昧" /sd 2016/04/30 /st 08:58 /sc once

:kome
SCHTASKS /CREATE /TN "NHK深夜便0005" /TR "D:\RajiruRec\RajiruRec.bat JOAK 0:57:00 NHK深夜便" /SC WEEKLY /d * /ST 00:04

pause

タスクスケジューラを使って予約する為のバッチファイル
(schtasks.batは管理者として実行してください)

以上2つの実行ファイルと2つのバッチファイルと1つのvbsファイルと同じフォルダに置いて(上記の例ではD:\RajiruRec)
schtasks.batに録音したい番組を記入してタスクスケジューラに登録して実行する形になります。
タスクスケジューラにて実行するため後日動作確認する時用に実行フォルダにLOGを残す動きになっています。時々ファイルを削除してください

このスプリクトは試験的なもので要望など、いかなるサポートも行いません。 録音失敗や何らかの、いかなる損害が発生しても、苦情などを一切受け付けません。全て自己責任で利用してください。

関連記事

radiko.jpをバッチファイルとWSHで録音する


radiko.jpをバッチファイルとWSHで録音する


以前の記事でradiko.jpを録音する方法を記事にした。
その時、github.comのbooskaのRadikoを録音するWSHのスプリクトを利用することで録音することを紹介していた。しかし、booskaさんのソースは公開中止になって現在Windows環境で動くスプリクトは他に見当たらなくなってしまった。

いろいろ検討した結果、booskaさんのスプリクトを参照してバッチファイルとWSHで作成した。現在動作確認中だがほぼ利用可能な状況になったのでここに紹介することにする

作成はWindows 10環境で作成しています。動作確認はWindows 7です。

利用にあたって
rtmpdump.exe
https://github.com/K-S-V/Scripts/releases

wget.exe
https://eternallybored.org/misc/wget/

swfextract.exe
http://www.swftools.org/download.html
swfextract.exeはSWFToolsをインストールしたフォルダにあります。

ffmpeg.exe
http://hp.vector.co.jp/authors/VA020429/ffmpeg/ffmpeg.html
https://ffmpeg.org/

各種実行ファイルを集めて一つのフォルダに置いてください

RadikoRec.bat

@echo off

REM rtmpdumpなどの位置のドライブ
set drive=D:

REM rtmpdumpなどの位置(最後に\を)
set DFDirectory=D:\RadikoRec\

REM 録音ファイルの保存のドライブ
set argdrive=D:

REM 録音ファイルの保存先(最後に\を)
set argDirectory=D:\RadikoRec\rec\

set RTMPDUMP=rtmpdump.exe
set AYTHKeyGet=AYTHKeyGet.vbs
set argOut = "out"
set RTMPSERVER=rtmpe://f-radiko.smartstream.ne.jp:1935

%drive%
cd %DFDirectory%

rem 録音ファイルの保存先フォルダチェックと作成
IF NOT EXIST "%argDirectory%" (md %argDirectory%)
IF NOT EXIST "%argDirectory%OLD" (md %argDirectory%OLD)

set ch=%1
if "%1"=="" goto usage
if not "%2"=="" set argSTOPSEC=%2
if "%2"=="" goto usage
if not "%3"=="" set argOut=%3

rem 録音終了日時を求める
for /f "tokens=1,2" %%i in ('CScript Time.vbs /r:%argSTOPSEC%') do (
  SET AUTHTOKEN_D=%%i
  SET AUTHTOKEN_T=%%j
)

set loopck=0

:loop

for /f %%i in ('CScript %AYTHKeyGet% %ch%') do SET AUTHTOKEN=%%i

rem 録音時間を秒に変換
for /f %%i in ('CScript Time.vbs /d:%AUTHTOKEN_D% /t:%AUTHTOKEN_T%') do SET AUTHTOKEN_END=%%i
set STOPSEC=--stop %AUTHTOKEN_END%

if "%loopck%" == "0" set FLV_loop=
if "%loopck%" geq "1" set FLV_loop=(%loopck%)

set yyyymmdd=%date: =0%
set hhmmss=%time: =0%
set YMD=%yyyymmdd:~0,4%%yyyymmdd:~5,2%%yyyymmdd:~8,2%_%hhmmss:~0,2%%hhmmss:~3,2%%hhmmss:~6,2%
set FLV=%YMD%_%ch%_%argOut%
set RADI=%RTMPDUMP% -q -flashVer "WIN 15,0,0,152" -v -r "%RTMPSERVER%" --playpath "simul-stream.stream" --app "%ch%/_definst_" -C S:"" -C S:"" -C S:"" -C S:%AUTHTOKEN% --live --timeout 10 --flv "%argDirectory%%FLV%%FLV_loop%.flv" %STOPSEC%

echo 録音開始%date%_%time%_"%~3" >> log.txt
echo 「%ch%」の「%argOut%」を録音開始、録音時間は「%argSTOPSEC%」
echo %RADI%
%RADI%
echo 録音停止%date%_%time%_"%~3" >> log.txt

for /f %%i in ('CScript Time.vbs /d:%AUTHTOKEN_D% /t:%AUTHTOKEN_T%') do SET AUTHTOKEN_EXIT=%%i
if "%AUTHTOKEN_EXIT%" == "EXIT" goto loopEXIT
if "%loopck%" geq "20" goto loopEXIT
set /a loopck=loopck+1

REM Sleep[15秒数]
set /a wtime=15*1000
echo WScript.Sleep %wtime% > tmp.vbs
cscript //NoLogo tmp.vbs
del tmp.vbs
set wtime=
REM ***

goto loop

:loopEXIT

%argdrive%
cd %argDirectory%
for %%F in (*.flv) do goto FILE_EXIST
echo エラーファイルが無い%date%_%time%_%argOut% >> %DFDirectory%log.txt
goto end

:FILE_EXIST
echo MP3変換開始%date%_%time%_"%argOut%" >> %DFDirectory%log.txt
REN *"%argOut%"*.flv *.m4a
for %%i in (*"%argOut%"*.m4a) do %DFDirectory%ffmpeg.exe  -y -i "./%%~ni.m4a" -vn -acodec libmp3lame -strict unofficial "./%%~ni.mp3"
move *"%argOut%"*.m4a OLD\ >> %DFDirectory%log.txt
echo MP3変換完了%date%_%time%_"%argOut%" >> %DFDirectory%log.txt
goto end

:usage
echo "RadikoRec.bat TBS 1:00:00 菊地成孔の粋な夜電波"
:end

D:\RadikoRec\にて実行する設定になっています
途中で回線が切断されても時間計算して再録音し最後にmp3に変換するようになっています。
-起動例-
radiko.bat TBS 1:00:00 菊地成孔の粋な夜電波
radiko.bat TBS 録音時間1時間 録音番組名(ファイル名に含まれます)

AYTHKeyGet.vbs

Option Explicit

Dim argStation,argDebug,argSilent
argStation = "TBS"	'引数1(i):radiko.jp内の放送局のid
argDebug = "no"		'引数(deb):“yes”なら、動作の途中経過を逐次表示する
argSilent = "yes"	'引数(cilent):"yes"なら、外部コマンドであるwgetやrtmpdumpの実行プロンプトを表示しない

Dim i
Dim strCmd
Dim aUnnamed
Set aUnnamed = WScript.Arguments.Unnamed
If aUnnamed.Count > 0 Then
  For i = 0 To aUnnamed.Count - 1
    Select Case i
      Case 0
        argStation = aUnnamed.Item(i)
    End Select
  Next
End If

'シェル起動オブジェクトを生成
Dim WSHShell,gShellStyle
Set WSHShell = WScript.CreateObject("WScript.Shell")
If argSilent = "yes" Then
  gShellStyle = 7
Else
  gShellStyle = 10
End IF

'ファイルシステム用オブジェクトを生成(ラジコ独自認証でファイルを利用)
Dim WSHFS
Set WSHFS = CreateObject("Scripting.FileSystemObject")

  strCmd = GetRadikoCmd()

WScript.Quit(0)

'Radiko.jpの独自認証を行う
Function GetRadikoCmd()

  Dim playerurl,pSwfPlayer,pKeyFile,RtnCD,auth1_fms,auth2_fms
  'playerurl = "http://radiko.jp/player/swf/player_4.0.0.00.swf"
  playerurl = "http://radiko.jp/apps/js/flash/myplayer-release.swf"

  Dim pTmpName
  pTmpName = WSHFS.GetTempName()
  pSwfPlayer = "player_" & argStation & pTmpName & ".swf"
  pKeyFile = "authkey_" & argStation & pTmpName & ".png"
  auth1_fms = "auth1_fms_" & argStation & pTmpName
  auth2_fms = "auth2_fms_" & argStation & pTmpName

  '認証ステップ1:Radikoのswfプレイヤーをplayer.swfというファイル名でダウンロード
  RtnCD = WSHShell.run("wget.exe -q --timeout=60 --tries=10 -O """ & pSwfPlayer & """ """ & playerurl & """",gShellStyle,True)
  If RtnCD <> 0 Then
    GetRadikoCmd = "error 認証ステップ1:player.swfの取得失敗!"
    Exit Function
  Else
    If argDebug = "yes" Then WScript.Echo "認証ステップ1:player.swfの取得成功"
  End If

  '認証ステップ2:player.swfからauthkey.pngを抜き出す
  RtnCD = WSHShell.run("swfextract.exe" & " -b 12 """ & pSwfPlayer & """ -o """ & pKeyFile & """",gShellStyle,True)
  If RtnCD <> 0 Then
    GetRadikoCmd = "error 認証ステップ2:authkey.pngの抜き出し失敗!"
    Exit Function
  Else
    If argDebug = "yes" Then WScript.Echo "認証ステップ2:authkey.pngの抜き出し成功"
  End If

  '認証ステップ3:auth1_fmsを取得
  RtnCD = WSHShell.run("wget.exe -q --timeout=60 --tries=10" _
      & " --header=""pragma: no-cache""" _
      & " --header=""X-Radiko-App: pc_ts""" _
      & " --header=""X-Radiko-App-Version: 4.0.0""" _
      & " --header=""X-Radiko-User: test-stream""" _
      & " --header=""X-Radiko-Device: pc""" _
      & " --post-data=""\r\n""" _
      & " --no-check-certificate" _
      & " --save-headers https://radiko.jp/v2/api/auth1_fms" _
      & " -O """ & auth1_fms & """",gShellStyle,True)
  If RtnCD <> 0 Then
    GetRadikoCmd = "error 認証ステップ3:auth1_fmsファイルの取得失敗!"
    Exit Function
  Else
    If argDebug = "yes" Then WScript.Echo "認証ステップ3:auth1_fmsファイルの取得成功"
  End If

  '認証ステップ4:auth1_fmsから、authtoken,length,offsetを読み取る
  Dim pFile
  Dim pLine
  Dim pAuthtoken,pLength,pOffset
  Set pFile = WSHFS.OpenTextFile(auth1_fms,1)
  Do While pFile.AtEndOfStream = False
    pLine = pFile.ReadLine
    If InStr(LCase(pLine),"x-radiko-authtoken=") <> 0 Then
      pAuthtoken = mid(pLine,InStr(pLine,"=")+1,len(pLine)-InStr(pLine,"="))
    ElseIf InStr(LCase(pLine),"x-radiko-keylength=") <> 0 Then
      pLength = mid(pLine,InStr(pLine,"=")+1,len(pLine)-InStr(pLine,"="))
    ElseIf InStr(LCase(pLine),"x-radiko-keyoffset=") <> 0 Then
      pOffset = mid(pLine,InStr(pLine,"=")+1,len(pLine)-InStr(pLine,"="))
    End If
  Loop
  pFile.Close

  If argDebug = "yes" Then WScript.Echo "認証ステップ4:x-radiko-authtoken=" & pAuthtoken & " ,x-radiko-keylength=" & pLength & " ,x-radiko-keyoffset=" & pOffset

  '認証ステップ5:authkey.pngのoffsetのlengthの内容から、base64の値であるpartialkeyを求める
  Dim pXmldom,pB64,pStream,partialkey

  Set pXmldom = CreateObject("Microsoft.XMLDOM")
  Set pB64 = pXmldom.CreateElement("work")
  pB64.DataType = "bin.base64"

  Set pStream = CreateObject("ADODB.Stream")
  pStream.Type = 1
  pStream.Open
  pStream.LoadFromFile pKeyFile
  pStream.position = pOffset
  pB64.NodeTypedValue = pStream.Read(pLength)

  partialkey = pB64.Text
  pStream.Close
  Set pStream = Nothing

  If argDebug = "yes" Then WScript.Echo "認証ステップ5:partialkey=" & partialkey

  '認証ステップ6:上記で求めたキーからauthtokenとpartialkeyをradikoに送り認証を成立させる
  Dim key
  RtnCD = WSHShell.run("wget.exe -q --timeout=60 --tries=10" _
      & " --header=""pragma: no-cache""" _
      & " --header=""X-Radiko-App: pc_ts""" _
      & " --header=""X-Radiko-App-Version: 4.0.0""" _
      & " --header=""X-Radiko-User: test-stream""" _
      & " --header=""X-Radiko-Device: pc""" _
      & " --header=""X-Radiko-Authtoken: " & pAuthtoken & """"_
      & " --header=""X-Radiko-Partialkey: " & partialkey & """"_
      & " --post-data=""\r\n""" _
      & " --no-check-certificate" _
      & " https://radiko.jp/v2/api/auth2_fms" _
      & " -O """ & auth2_fms & """",gShellStyle,True)
  If RtnCD <> 0 Then
    GetRadikoCmd = "error 認証ステップ6:authtokenとpartialkeyの失敗!"
    Exit Function
  Else
    If argDebug = "yes" Then WScript.Echo "認証ステップ6:authtokenとpartialkeyの送信成功"
  End If
  'テンポラリファイルを消す
  If argDebug <> "yes" Then
    WSHFS.DeleteFile pSwfPlayer, True
    WSHFS.DeleteFile pKeyFile, True
    WSHFS.DeleteFile auth1_fms, True
    WSHFS.DeleteFile auth2_fms, True
  End If

        WScript.Echo(pAuthtoken)

End Function

radiko.batと同じ場所においてください
この部分はbooskaさんのスプリクトを参考しました

Time.vbs

' CScript Time.vbs /r:0:01:00
' CScript Time.vbs /d:2016/12/14 /t:18:47:44

Option Explicit
Dim argRecTime
Dim value
dim gRecTime
dim argDay
dim argTime
Dim aNamed
Set aNamed = WScript.Arguments.Named

argRecTime = WScript.Arguments.Named.Item("r")
argDay = WScript.Arguments. Named.Item("d")
argTime = WScript.Arguments. Named.Item("t")

if not (argRecTime = "") Then

    '引数で指定の録音時間を日時属性に変換
    gRecTime = TimeValue(argRecTime)

    '録音終了日時を求める
    Dim gEndDate
    gEndDate = Now() + gRecTime
    WScript.Echo gEndDate

End If

if not (argDay = "") Then

    '引数で指定の録音時間を日時属性に変換

    argDay = DateValue(argDay)

    if (argTime = "") Then
        argRecTime = argDay
    Else
        argRecTime = TimeValue(argTime)
        argRecTime = argDay + argRecTime
    End If

    '録音秒数をrtmpdumpの引数形式(秒数)にする
    gRecTime = argRecTime - Now()
    if (gRecTime > 0) Then
        gRecTime = Hour(gRecTime) * 60 * 60 + Minute(gRecTime) * 60 + Second(gRecTime) + 20
        '20秒ほどマージンを設けることで録音終了時の誤差でリトライにいってしまうことを防止する。
    Else
        gRecTime ="EXIT"
    End If
    WScript.Echo gRecTime

End If

録音時間計算のスプリクトです。バッチファイルで時間計算は大変なのでWSHで処理します

2016年12月28日 修正しました

Time.vbsにバグがありました

TBS_schtasks.bat

goto kome

/sc 種類 	スケジュールの種類を指定する。指定できる種類は次の通り。
種類 	内容
MINUTE 	分単位でスケジュールを指定
HOURLY 	時間単位でスケジュールを指定
DAILY 	日単位でスケジュールを指定
WEEKLY 	週単位でスケジュールを指定
MONTHLY 	月単位でスケジュールを指定
ONCE 	指定した日時に一回限り実行
ONSTART 	システム起動ごとに実行
ONLOGON 	ログオンごとに実行
ONIDLE 	アイドル状態が一定時間続いた場合に実行

/d 日 	曜日または日にちを指定する。 スケジュールの種類が「WEEKLY」、または「MONTHLY」の場合に有効。
曜日は以下のように3文字で表す。
値 	内容
MON 	月曜日
TUE 	火曜日
WED 	水曜日
THU 	木曜日
FRI 	金曜日
SAT 	土曜日
SUN 	日曜日
MON,TUE,WED,THU,FRI,SAT,SUN
スケジュールの種類と指定できる値は次の通り。
WEEKLYの場合 MON~SUN、あるいは「*(毎日)」。 省略時は「/d MON」を指定したとみなされる。
MONTHLYの場合 1~31の数字。省略時は「/d 1」 を指定したとみなされる。「/mo」オプションに
FIRST、SECOND、THIRD、FOURTH、LAST が指定されている場合は、必ず「/d」オプションで曜日を指定する。

TBS
QRR
LFR
RN1
RN2
INT
FMT
FMJ
JORF
BAYFM78
NACK5
YFM
HOUSOU-DAIGAKU

:kome

SCHTASKS /CREATE /TN "TBS_菊地成孔の粋な夜電波" /TR "D:\RadikoRec\RadikoRec.bat TBS 1:01:00 菊地成孔の粋な夜電波" /SC WEEKLY /d FRI /ST 23:59

pause

タスクスケジューラを使って予約する為のバッチファイル
(schtasks.batは管理者として実行してください)

以上4つの実行ファイルと2つのバッチファイルと2つのvbsファイルと同じフォルダに置いて(上記の例ではD:\RadikoRec)
TBS_schtasks.batに録音したい番組を記入してタスクスケジューラに登録して実行する形になります。
タスクスケジューラにて実行するため後日動作確認する時用に実行フォルダにLOGを残す動きになっています。時々ファイルを削除してください

このスプリクトは試験的なもので要望など、いかなるサポートも行いません。 録音失敗や何らかの、いかなる損害が発生しても、苦情などを一切受け付けません。全て自己責任で利用してください。

関連記事

らじる★らじるをバッチファイルとWSHで録音する


佐世保弓張岳展望台に登って米軍を眺める


以前に紹介したSSKドックの撮影に再び行った。

佐世保重工業(SSK)の撮影ポイント

さらに米軍の撮影ポイント探しに弓張岳展望台に上ったので記事にしたい。
第3ドックの様子。

前回同様広いドックに自衛隊の船が入ってる

第4ドック。船が建造中だ。前回が9月だからまた新しい船を作ってるのだろうか?

弓張岳展望台に登った。眼下に佐世保市内が広がる

立神港区がよく見える

タンカーや輸送船が停泊してる

ドック型輸送揚陸艦グリーン・ベイじゃないかな?

強襲揚陸艦ボノム・リシャール。佐世保を母港にしてる船で最大級だ

たぶんドック型揚陸艦アシュランド


長崎空港にて旅客機の撮影に行った


久しぶりの晴天に恵まれた11月下旬、長崎空港に足を運び旅客機の撮影を行った。

長崎空港の1F 到着フロアにはランタンが飾ってあった

3F 展望デッキには家族連れや出発を見送る方が

フェンスには撮影用に穴が開いてる

中央部のフェンスは金網ではなくワイヤー方式だ。ここから撮影することにした。

ランウェイ14方面に向かって離陸する

ランウェイ32方面から着陸してる

近くの海上自衛隊の基地で訓練しているSH-60J(たぶん)が建物上空を飛んでいる

滑走路を着陸してるJAL機と今から離陸する為移動しているANA機

こちらも白煙を上げて着陸してる

夕暮れのANA機

固定スポットにタキシングしている

夕陽の中地上スタッフが作業している
長崎空港は海上空港なので撮影ポイントが少ない
望遠レンズがあるなら対岸の大村から撮影するのもありかもしれない
日没が17時前後だったのでその時間は離着陸機が少ない
夏ならもう少しチャンスが多いかも


佐賀県武雄市の御船山楽園のライトアップを撮影してきた


佐賀県武雄市にある御船山楽園の紅葉ライトアップを撮影してきた。
「御船山楽園」の公式ホームページ
http://www.mifuneyamarakuen.jp/

wikiから引用すると
「旧武雄邑主鍋島氏別邸庭園」として国の登録記念物に登録。桜、ツツジ、紅葉の名所。日本の庭園100選に選定。

chakuwikiから引用すると
御船山楽園という大庭園がある。元々は鍋島藩の物だったが現在は地元のちょいと高級なホテルが管理している。
原則として入園には400円を払わねばならないがホテル宿泊客のみタダになるらしい。まあ、400円ケチるためにホテル泊まっては、安宿や公共の宿との宿代の差額考えるとアホらしいのでおすすめはしないが。

との事らしい

18:00頃到着。駐車場はいっぱいで遠くの駐車場に停めて5分ぐらい無料バスに乗ってきた。入場料は600円

入場するとすぐにこの風景が待っている

斜面で撮影したのでちょっと斜めってるかな?暗い中、三脚で水平取るのたいへん

湖面に反射する紅葉が美しい。もっと撮影したかったが雨が降って来たので断念

遊歩道を歩く。ちゃんとライトアップされて明るい

雨が降ってるので茶屋にはカップルでいっぱいだ。


佐世保ペッパーランチに潜入


前回の記事で紹介した佐世保駅前のペッパーランチがOPENしたみたいだ。
早速食べに行ったので記事にしたい。

近くの佐世保5番街の駐車場が一時間無料なので利用し車を止めて駅前に行った。

佐世保えきマチはもうクリスマスの装いだ

佐世保駅前ペッパーランチは19時ごろかなり混みあってた

一人なのでカウンター席ですぐ入れた
メニューを見ると話題のいきなり!ステーキのサーロインステーキが同じ価格で食べれるらしい。CABアンガス牛サーロインステーキ200gを頼む。

注文を済ませるとまず紙を敷く。この紙で油を散るのを防ぐらしい

5分ぐらい待つとアツアツの鉄板がやってきた。ジュウジュウ言ってる

ご飯とサーロインステーキ

自分の好きなタイミングで裏返す。ちょっと焼きすぎたようだ
奥にある甘口か辛口のソースを掛けて食べる。
味は食べごたえがある牛肉だ。脂身が少ないのでヘルシーだ
ソースは甘口が好みかな

完食した。
佐世保地区はファミレスの牛右衛門が競合先だろうか。以前にフォルクスがあったようだが撤退してしまった。私は脂身が多い牛右衛門が好みだがそこはひとに寄りけりだろう。次は看板メニューのペッパーライスを食べてみようかな?