Plagger を trunk から更新して、CustomFeed::YouTube.pm を試してみたら全然うまく動きませんでした。調べてみると、どうも YouTube の HTML が変わっているみたい。
とりあえず YouTube の HTML とにらめっこして CustomFeed::YouTube.pm を修正し、なんとなく動くようになりました。
下に patch を書いておきます。
@@ -53,7 +53,7 @@ my (@videos, $data, $title_flag, $tag_flag); while (<$fh>) { # get title - m!<div class="title">! + m!<div class="vtitle">! and $title_flag = 1; m!<a href="/watch\?v=([^&]+)&search=[^>]+">(.+)</a>! and do { @@ -63,13 +63,13 @@ $title_flag = 0; } }; - m!<img src="(http://[\w-]*static\d+(.[\w-]+)?\.youtube.com/[^">]+/1.jpg)" class="vimgSm" />! + m!<img src="(http://[\w-]*static\d+(.[\w-]+)?\.youtube.com/[^">]+/1.jpg)" class="vimg90" />! and $data->{image}->{url} = $1; - m!<div class="desc">(.*)</div>! + m!<div class="vdesc">(.*)</div>! and $data->{description} = $1; - m!<td><span class="grayText">Tags:</span></td>! + m!<div class="vtagLabel">Tags:</div>! and $tag_flag = 1; - m!(<td><a href="/results\?search=.*)! + m!(<a href="/results\?search=.*)! and do { if($tag_flag){ $data->{tags} = $1;
yaml は
global: (snip...) plugins: - module: CustomFeed::YouTube config: query: plagger sort: video_date_uploaded page: 3 # - module: Filter::FetchEnclosure # config: # dir: /foo/bar - module: Publish::Gmail config: (snip...)
といった感じで。Filter::FetchEnclosure を使っての flv のフェッチもできました。
【2006/7/17 追記】
既に trunk に反映していただいたとのことですが、遅ればせながら mizzy さんのエントリに trackbackさせていただきました。
4 Comments