2008/07/07

Link de 録 plus 予約一覧が壊れた?

image
ワシが追加したスクリプトに無理があるのか、予約録画を管理するデータベースが壊れたみたい(汗
一番下にある予約がいつの間にか追加され、削除することもできない状態に。その状態でも予約録画は動いていたのでほったらかしにしていたが、今度は録画が停止しなくなってしまった。下から2つめがそれで、録画停止ボタンを押しても、データベースを再構築しても、この2つは残ってしまう。

さすがに不安になったので、予約リストをクリアすべく/etc/melco以下を調べてみた。
で、見つけたのが、/etc/melco/scheduler/配下にあるpcast_ResDatabase?.db。
録画機器ごとに予約情報をデータベース管理しているみたい。できれば正常な予約リストは保持しておきたかったので、バイナリエディタで修正できるものならと、中身を見てみたけど調べるだけでも時間かかりそう(汗
なので、ファイルを消す(正確にはファイル名変更)ことで、初期状態として認識しないものか試してみた。かなり強引(汗

# /etc/init.d/pcast.sh stop

で停止させ

# mv pcast_ResDatabase0.db ~pcast_ResDatabase0.db
# mv pcast_ResDatabase1.db ~pcast_ResDatabase1.db

怪しいのは二つ。

#/etc/init.d/pcast.sh start

再起動。結果は上々。予約一覧がクリアされた状態で立ち上がった(喜

最後にログファイルを元に以前の予約一覧を復活させる。

0003|ブロードキャスター|0|2|4|0|0|0|2008/07/05/22/00|2008/07/05/23/24|6|2|0|/mnt/disk1/share/video/竅サ盍L竅若イ(窶㏍イB窶鴻アス竅爵0705.mpg|1215262800

ログといってもDbAcRap GetMergeListBottomの実行で得られる情報を1行に整形しただけ。文字化けしているのはEUCでファイルを読んでいるから。ちなみにファイル名はUTF8で記述しているみたい。
半角スペースを区切り文字に使っている番組表を見かけたことがあったので、|を使うようにしてみた。
で、こういった情報が記述されたファイルを元に予約録画に突っ込むスクリプト。

#!/bin/bash
#録画予約に追加
  DbAcRap=/usr/local/PCast/DbAcRap
  list='/mnt/disk1/share/LDRPlus/~MergeListTop.txt'
  bkIFS="$IFS"
  IFS=$'|'
  nkf -Ew $list | while read Index TittleName Status ResType Formet Reserve1 Reserve2 Reserve3 Start End TvChannel TvAudioMode DeviceId FileName DataKey
  do
    $DbAcRap 'add{'$ResType'}{'$Formet'}{'$Start'}{'$End'}{'$TvChannel'}{'$TvAudioMode'}{'$Reserve1'}{'$Reserve2'}{'$Reserve3'}{'$DeviceId'}{'`nkf -We <<< $TittleName`'}'
  done
  IFS="$bkIFS"

今回ばかりはlogファイルとっておいて良かったと痛感。いや、それ以上に復活できたことを喜ぼう(喜
まあ、本当に大丈夫かは今後の運用を見てみないことにはわからないわけだけど…

今更だけど、この情報と同じことして発生した不具合は責任取りませんのであしからず(謝

1 件のコメント:

tateurinavi さんのコメント...

フレッツテレビのデジアナ変換を利用して、玄箱でLink de 録を運用しています。
突然、予約録画ができなくなってしまい困っていましたが、こちらの情報の通りに行ったら復旧しました!
有難うございました。