animate_tv.yaml

AnimateTVのネットラジオ一覧をRSSに出力&指定の番組をダウンロード

EntryFullText用のyaml

custom_feed_handle: http://www\.animate\.tv/pv/index\.php\?m=r
custom_feed_follow_link: http://(?:www\.animate\.tv|shop\.frontierworks\.jp)/digital/web_radio/detail_.*?
handle: http://(?:www\.animate\.tv|shop\.frontierworks\.jp)/digital/web_radio/detail_.*?
extract: <title>(.+?)</.+?(<img src="img/[^>]+?\.jpg.+?>).+?main_title2.*?>(.+?)</.+?main_txt2.*?>(.+?)</.+?main_txt1.*?>(.+?)</td.+?<a href="(http://[^>]+?\.asx)"
extract_capture: title img number day body link
extract_xpath:
  ximg: //img[@width="240" and @height="180"][1]
extract_after_hook: |
  $data->{title} =~ s/^.*?\-Web.+?\-//;
  $data->{title} =~ s/\s*\-$//;
  $data->{number} =~ s/<\/*.+?>//g;
  $data->{day} =~ s/<\/*.+?>//g;
  $data->{img} = $data->{ximg} if defined $data->{ximg};
  $data->{body} =~ s/<\/*(?:table|tbody|tr|td|div).*?>//g;
  $data->{body} = "<b>".$data->{number}."</b> ".$data->{day}."<br>".$data->{body}."<p>".$data->{img}."</p><p><a href='".$data->{link}."'>[Play]</a></p>";

泥くさいなぁ。yamlをutf8nで保存しても日本語がうまく処理されてないっぽいし。(だからasciiだけにした)
これと、改造したmplayer.pmでフィルターで特定の番組を-dumpstreamするconfig.yamlRSS自体は全番組取得する。

plugins:
  - module: Subscription::Config
    config:
      feed:
        - url: http://www.animate.tv/pv/index.php?m=r

  - module: Filter::EntryFullText

  - module: Filter::FindEnclosures
    rule:
#      - expression: $args->{entry}->title =~ /ネギ/ || $args->{entry}->title =~ /ARIA/i || $args->{entry}->title =~ /おとボク/
# 長いので修正した。
      - expression: $args->{entry}->title =~ /(ネギまほ|おとボク|ARIA)/

  - module: Filter::FetchEnclosure::Mplayer
    config:
      dir: /path/to/dump
      sub_dir_name: pod
      dumpstream: 1
      set_title: title
      encode: cp932
      type: asf

  - module: Publish::Feed
    config:
      dir: /path/to/publish
      format: RSS
      filename: animate.xml

mplayer.pmの改造は、ファイル名と文字コードを指定できるようにしたのと、-dumpstreamをできるようにしただけです。
ネギま*1の、放送ごとの写真がうまく取り込めない。
元ネタは未踏ユースに採択されましたid:hakobe932さんのPlagger+ネトラジ+Podcastから。
mpalyerの-dumpstreamはPlagger はじめた。から。
mplayer.pmはここから取得、リンクしていいのかな?

使用上の注意

木曜・金曜の夜は避けてくださいね。早朝の実行などでサーバーを大事にしましょう。
Filter::FindEnclosuresに適切にフィルターを使わないと、全番組をdumpしようとするので注意。くれぐれもサーバーには優しく
Filterの正規表現を修正したけど、テストしてない。