Plagger CustomFeed::YouTube patch

Plagger を trunk から更新して、CustomFeed::YouTube.pm を試してみたら全然うまく動きませんでした。調べてみると、どうも YouTube の HTML が変わっているみたい。

とりあえず YouTube の HTML とにらめっこして CustomFeed::YouTube.pm を修正し、なんとなく動くようになりました。

plagger_youtube.jpg

下に 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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です