2012/06/15

podcastで使い分け

wavecast購入後色々試行錯誤して、家で見るときはブラウザから観たり、iTunesに自動登録された方をiPad/AppleTVで観たり、出先ではiPodTouch(1st)に同期させて観たり、やりたかった事はだいたい出来たかな。

ただ、使いにくい事が1つある!

前記事にも書いたが、リビング用高画質版とモバイル用低画質版の2つを同じようにiTunesへ登録しているためにサムネイルも名前も同じようだから分かりにくい。選ぶときもどっちがどっちやら。

podcast使えないかな? と思い立った。
iTunesムービーは高画質版。podcastを低画質版って使い分ければいいんじゃ?
そうすればiPodTouchの同期設定もpodcastだけにすればいいし。
管理フォルダも別だからメンテもしやすそうだし。
ということで、やってみた。


podcast

については、podcastを制作するを参考に、お勉強。RSSなのね。というかXMLなのね。


プランとしては、podcast用のRSSを出力するスクリプトを用意してiTunesへ登録する。
最近はepgrecで録画するのが多くなって来たので、そっち側に構築。epgrecは、smartyを使っているので、そのまま活用させていただく。

/epgrec/podcast.php
<?php
include_once('config.php');
include_once( INSTALL_PATH . '/DBRecord.class.php' );
include_once( INSTALL_PATH . '/Smarty/Smarty.class.php' );
include_once( INSTALL_PATH . '/Settings.class.php' );

$host = "http://192.168.X.X";

$settings = Settings::factory();
$dbh = @mysql_connect( $settings->db_host, $settings->db_user, $settings->db_pass );

$rvs = DBRecord::createRecords(RESERVE_TBL, "WHERE complete='1' and mode>1");
$records = array();
foreach( $rvs as $r ) {
    $cat = new DBRecord(CATEGORY_TBL, "id", $r->category_id );
    $ch  = new DBRecord(CHANNEL_TBL,  "id", $r->channel_id );
    $arr = array();

    $r->title = str_replace('【デ】','',$r->title);
    $r->title = str_replace('【二】','',$r->title);
    $r->title = str_replace('【字】','',$r->title);

    $arr['title'] = $r->title;
    $arr['author'] = $ch->name;
    $arr['subtitle'] = "";
    $arr['description'] = $r->description;
    $arr['thumb'] = $host.$settings->install_url.$settings->thumbs."/".$r->path.".jpg";
    $arr['url'] = $host.$settings->install_url."/podcast/".$r->path;
    $arr['pubdate'] = $r->starttime;
    $arr['duration'] = strftime("%T",strtotime($r->endtime)-strtotime($r->starttime)-60*60*9);
    $arr['category'] = $cat->name_jp;
    array_push( $records, $arr );
}

$smarty = new Smarty();
$smarty->assign("site_title","録画一覧");
$smarty->assign("site_link",$host.$settings->install_url);
$smarty->assign( "records", $records );
$smarty->display("podcast.xml");
?>

/epgrec/templates/podcast.xml
<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
  <channel>
    <title>{$site_title}</title>
    <language>jp</language>
    <itunes:category text="録画">
      <itunes:category text="TV録画"/>
    </itunes:category>

{foreach from=$records item=rec}
<item>
  <title>{$rec.title}</title>
  <itunes:author>{$rec.author}</itunes:author>
  <itunes:summary>{$rec.description}</itunes:summary>
  <enclosure url="{$rec.url}" type="video/mp4"/>
  <guid>{$rec.pubdate}</guid>
  <pubDate>{$rec.pubdate}</pubDate>
  <itunes:category>{$rec.category}</itunes:category>
  <itunes:duration>{$rec.duration}</itunes:duration>
</item>
{/foreach}

  </channel>
</rss>
を作成。(うまく入らないので、どちらも">","<"を全角にしてます

iTunesのpodcastに、http://192.168.?.?/epgrec/podcast.php で登録して出来上がり。家の中だけでいいので、LAN固定IPで問題なし。iTunesの方から勝手に吸い取ってくれるので自動登録フォルダにコピーするより、結果こっちの方が楽だね。

必要最小限のタグしか使ってない。もっと沢山あるみたいだけど、いらないかな。

今回はまったところは、2つ以上のアイテム(エピソード)が追加できなかったこと。最初の1つしかpodcastに出てこないのだ。エラーとかも出ないし・・悩んだよ。
結局、<guid>タグが必要だった事とその内容に日本語が入れられない事だった。
<pubdata>と同じ公開日(録画日)を入れる事にした。そうしたら出たよ。ふぅ。

Webプログラマじゃないんで知らない事だらけ。実際には色々試行錯誤があったけれど、やってみると簡単で面白い。知ってる人にすれば、この辺は既に古い話なんだろうね。実際ネット上を調べてみても数年前の情報がほとんど。今から追いつけるかなぁ。


追記

こんな事をやっていたらサーバープログラムが面白くなって来た。なんか録画はどうでも良くなって来たので、まあ録画を題材にはするんだけど。

wavecast.tvへログインってやつ。これがちょっといやなので、これも自分でどうにかしようかなと。その際には、もうwavecastシステムではなくなってしまうな。長い道のりになりそうなので、出来たら書くんじゃなくて、考えを整理するためにも、やりながら書こうかな。

0 件のコメント:

コメントを投稿