テレビ王国などのiEPGをGoogleカレンダーにまとめて登録する

2016年10月4日火曜日

IT Webサービス テレビ

t f B! P L
前の記事「録画予定のテレビ番組を色で分類する」で書いたように、
Googleカレンダーに気になるテレビ番組を登録しておくと便利です。

しかし、いちいち番組名時刻を手で入力するのはとても手間がかかり、
数十の番組を登録するだけで何十分もの時間がかかってしまいます。

テレビ番組表無料Webサービスの「CHAN-TORU」を使ったり
「Yahoo!テレビ番組表」Chromeの拡張機能を組み合わせて使ったりすれば、
ボタンをクリックするだけで番組をGoogleカレンダーに登録できますが、
「目的の番組の番組詳細画面まで開かないと登録ボタンが表示されない」
「ボタンをクリックしたあとも、GoogleカレンダーのMyカレンダー名を選択したり、OKボタンをクリックしたりといった手間が1件ごとにかかってしまう」
といった難点があり、意外と面倒です。

そもそも「上記の2つのテレビ番組表は
お気に入りの『テレビ王国』と比べると見にくくて使いにくい」
というのが、個人的には最大の難点です。
「テレビ王国」にGoogleカレンダーへの追加機能があればいいのですが
残念ながらありません。

ないなら作ってしまえということで、
「『テレビ王国』から入手した番組のiPEG情報をGoogleカレンダーに読み込める形式に変換するシェルスクリプト
を自作してみました。

▼「iepgc.sh」
#!/bin/bash

tdir="/Users/tamao/Downloads/"    #ダウンロードフォルダーを指定★★★

afdir="${tdir}iepgc/処理済/`date +%Y%m%d-%H%M%S`"

if [ ! -e "${tdir}iepgc" ]; then
 mkdir "${tdir}iepgc"
fi

if [ ! -e "${tdir}iepgc/処理済" ]; then
 mkdir "${tdir}iepgc/処理済"
fi

if [ ! -e $afdir ]; then
 mkdir $afdir
fi


iepgc=${tdir}iepgc/iepg.csv
tfileu8=${tdir}iepgc/iepg-u8.tvpid
tfileu8kai=${tdir}iepgc/iepg-u8kai.tvpid

echo "Subject,Start Date,Start Time,End Date,End Time,Location" > $iepgc


i=0

while [ $i -ne 200 ]
do

if [ $i = 0 ]; then
 tnum=""
else
 tnum=" ($i)"
fi

tfile=${tdir}"iepg"${tnum}".tvpid"

if [ ! -e "$tfile" ]; then
 i=`expr $i + 1`
 continue
fi


iconv -f SJIS -t UTF8 "$tfile" > $tfileu8
cat $tfileu8 | tr -d '\r' > $tfileu8kai    #改行コードを変換

tyear=`cat $tfileu8kai | awk '/year/{ print $2 }'`
tmonth=`cat $tfileu8kai | awk '/month/{ print $2 }'`
tdate=`cat $tfileu8kai | awk '/date/{ print $2 }'`
tstart=`cat $tfileu8kai | awk '/start/{ print $2 }'`
tend=`cat $tfileu8kai | awk '/end/{ print $2 }'`
ttitle=`cat $tfileu8kai | awk '/program-title/{ print $2 }'`
tstation=`cat $tfileu8kai | awk '/station-name/{ print $2 }'`

tstartday="$tmonth/$tdate/$tyear"


# 終了日時の設定(終了時刻が翌日の場合は1日進める)
if [ ${tstart//:/} -gt ${tend//:/} ]; then
 tendday=`date -v${tyear}y -v${tmonth}m -v${tdate}d -v+1d +"%m/%d/%Y"`
else
 tendday=$tstartday
fi

edata="${ttitle/\"/”},$tstartday,$tstart,$tendday,$tend,$tstation"

echo $edata >> $iepgc
echo $edata

mv "$tfile" "${afdir}/"

i=`expr $i + 1`
done

cp "$iepgc" "${afdir}/"

何をするものなの?

『テレビ王国』などのテレビ番組表サイトから入手した1つまたは複数の「iEPGファイル」(テレビ番組の放送時刻等の情報が記録されたファイル)を、Googleカレンダーで読み込める1つの「CSVファイル」(カンマ区切りのファイル)に変換します。



上記のような内容の「iEPGファイル」を、下記のような「CSVファイル」に変換します。




動作環境は?

当方はMac OSXで使用していますが、bashが動く環境であれば、少々の改造で動作すると思います。

使用前の準備

  1. 上記のソースコードをテキストファイルにコピー&ペーストして「iepgc.sh」等のファイル名で保存します(「iepgc.command」という名前にしておけば、ダブルクリックで起動できるようになります)。
  2. 「iepgc.sh」の3行目に書いてあるダウンロードフォルダーを、お使いの環境にあわせて書き換えます。
  3. 「iepgc.sh」をパスの通った場所に設置します。

使い方

  1. 『テレビ王国』の番組表を開き、気になる番組の「iEPG」ボタンを片っ端からクリックして、複数のiEPGファイルをダウンロードします。
  2. ▲オレンジ色の「iE」ボタンをクリックすると、iEPGファイルがダウンロードされる

  3. ターミナルで「sh iepgc.sh」と入力してスクリプトを実行します(または「iepgc.command」をダブルクリックして実行します)。
  4. GoogleカレンダーをWebブラウザーで開き、画面の左にある「他のカレンダー」の文字の右にある「▼」をクリックし、「カレンダーのインポート」を選択します。
  5. ダウンロードフォルダーの「iepgc」フォルダー内にある「iepg.csv」を指定してインポートします。


  6. ▲Googleカレンダーに番組が登録された

その他・注意点

  • iEPGファイルの名前の部分をうまく書き換えれば、『テレビ王国』以外のサイトから入手したiEPGファイルでも利用できるようになると思います。
  • 上記のソースコードでは最大で200個のiEPGファイルを一度に処理する仕様になっていますが、「200」の部分を書き換えればもっと増やせます。
  • 処理が行われたiEPGファイル等は、ダウンロードフォルダー→「iepgc」→「処理済」フォルダー内に自動で移動します。インポート履歴等は、このフォルダー内のファイルを開けば調べられます。
気になる番組のiEPGをたくさんダウンロードしてからこのスクリプトを利用すれば、大量の番組が一瞬でGoogleカレンダーに登録できるのでとても便利です。
ぜひ使ってみてください^^

QooQ