header_02.jpg

「ブログ関係」の記事

ブログ関係 ::未来検索Livedoorからトランペット関連記事を集めてみた

前回、Yahoo!掲示板から「トランペット」関連の話題をピックアップ下のに続いて、次は「未来検索Livedoor」で同様の奴をやってみました。また下のほうにあるので、よろしければどうぞ。RSSの取得元は未来検索livedoorです。

ちなみに未来検索livedoorヘルプページによると、未来検索とは

未来検索 livedoorとはアラート(お知らせ)機能つきのBlog検索エンジンです。
未来検索livedoorの検索対象は日本国内のすべてのBlogです。
もちろん使用しているツールの種類やpingを送信しているかどうかも問いません。

です。つまりは横断Blog検索エンジンですね。

要領は前の

ようやっとiTunesMusicStoreのRSSを弄ってみた。【トランペットブログ"Horagay"】 http://www.horagay.com/archives/000200.html

Yahoo!掲示板からトランペットを検索【トランペットブログ"Horagay"】 http://www.horagay.com/archives/000202.html

と全く同じでしたが…
未だにエンコード周りが分からずいきあたりばったりで文字化けを直したり、ファイルハンドラにDATAを使わないとエラーが出るのがなぜか未だに分からんかったりと、散々ですヾ('A`)ノ
そしてcron上手くいってない予感…。

またソースのっけておきます…

#!/usr/bin/perl -I ./lib

#未来検索LivedoorのRSSを取得して、JS形式で表示する。

#cronでまわす。


#burazil_parse.pl

#[IN] : http://rss.sf.livedoor.com/search?q=%a5%c8%a5%e9%a5%f3%a5%da%a5%c3%a5%c8&sf=update_date&start=0


use strict ;

use Encode ;

use LWP::Simple ;

use XML::RSS ;

use HTML::Template ;

use encoding 'euc-jp' , STDOUT => 'UTF-8' ;


#ローカルにRSSをミラーする

my $url ="http://rss.sf.livedoor.com/search?q=%a5%c8%a5%e9%a5%f3%a5%da%a5%c3%a5%c8&sf=score&start=0" ;

my $local_path = "miraikensaku.rss" ;

mirror($url , $local_path) or die "I can't get data from $url\n" ;


#それをParseする。

my $rss = new XML::RSS ;

eval{

$rss -> parsefile( $local_path ) ;

};

warn "Error when parsing : $rss" ;


my @item_list ;

foreach ( @{$rss -> items} ){

my $title = $_ -> {title} ;

my $link = $_ -> {link} ;

my $description = $_ -> {description} ;



push @item_list , { title => $title , link => $link , description => $description
} ;

}


#テンプレートに。


my $template = HTML::Template -> new( filehandle => \*DATA ) ;

$template ->param( items => \@item_list ) ;

my $output = $template -> output() ;


open ( JS , ">mirai.js");

my @line = split/\n/ , $output ;

for ( @line ){

s/\x27/'/g ;

#Encode::encode("utf-8" , $_ );

print JS "document.writeln('$_') ; \n" ;

}

close JS ;

exit(0);


#テンプレート

__DATA__

<div id="miraikensaku_list">

<dl>

<TMPL_LOOP name=items>

<dt>■<a href="<TMPL_VAR name=link escape=HTML>" target="_blank"><TMPL_VAR
name=title escape=HTML></a></dt>

<dd><TMPL_VAR name=description escape=HTML></dd></TMPL_LOOP></dl>

</div>


早く進歩せんと…

Posted by horagay at 17:43 | Comments (0) | TrackBack |  【直リンク用URL

ブログ関係 ::Yahoo!掲示板からトランペットを検索

Yahoo!掲示板で「トランペット」を検索した結果を表示するPerlスクリプトを書きました。
下のほうにさりげなくありますので、よろしければどうぞ。
”■Yahoo掲示板から「トランペット」を含む書き込みをピックアップ!”って奴です。

具体的には
Yahoo!掲示板・検索オプション
http://messages.yahoo.co.jp/soptions.html

から…

  1. 「エンターテイメント」カテゴリからトランペットを検索した結果のデータをLWP::Simpleで取得。
  2. それから、正規表現でタイトルとリンク先と概要をハッシュに詰め込んで、HTML::Templateで整形。
  3. ついでにXML::RSSでrssも作ってみる。(けど、それを改めてXML::RSSでパースとすると、ちゃんとしたフォーマットじゃないって言われてエラーになる...むぅ... onz)
  4. んで、概要内のタグを消去しつつ、document.writelnで書き出す形のJavaScriptを生成。
という、BlogHackを繋ぎ合わせただけのお粗末なものです…これでさえ何回つまづいたことか('A`)
 #書籍BlogHackはこちら
 #Amazon.co.jp: 本: Blog Hacks ―プロが教えるテクニック&ツール100選

RSSを0.91じゃなくて0.9で宣言していて、ずっとdescriptionが出力されないことに頭を悩ませたり…いやはや先は長いです。いつの日かBlog Hackerになれるかなー。


ソースを載せておきます。ツッコミ大歓迎です(´・ω・`)ノ
でも、このまま使うのは危険な気がしますので、参考にすることはお勧めしません。なんないと思うけど。


#!/usr/bin/perl -I ./lib

#Yahoo!掲示板のパースをして、RSSに変換する。

#そして、JS形式で出力。


use strict ;
use LWP::Simple ;
use XML::RSS ;
use Encode ;
use encoding 'euc-jp' , STDOUT => 'UTF-8' ; #正直文字コード周りがワケワカメ

use HTML::Template ;


#まずは掲示板のデータをLWP::SimpleでGET
my $url = "http://search.mb.yahoo.co.jp/search?p=%a5%c8%a5%e9%a5%f3%a5%da%a5%c3%a5%c8&M=&R=yahoo%2Fentertainment" ;
my $rowdata = LWP::Simple::get( $url ) ;
$rowdata = decode('EUC-JP' , $rowdata) ;
#print $rowdata ;


#XMLを作っていく。
my $rss = XML::RSS -> new (
version => 0.91 ,
encode_output => 0 ,
);


$rss -> channel(

title => 'Yahoo!BBS search for trumpet RSS' ,
link => 'http://search.mb.yahoo.co.jp/' ,
description => 'Yahoo!掲示板の「トランペット」での検索結果のRSS' ,
language => 'ja' ,
);


#rssに、マッチされたものを入れていく。
my $regex = q{<UL><LI>\n<a href="(.+?)">(.+?)</a><br>(.+?)<BR>.+?</LI></UL>}
;


my @save_hash ;
while( $rowdata =~ m/$regex/gs){


$rss -> add_item(
link => $1 ,
title => $2 ,
description => $3 ,
);

push @save_hash , { link => $1 , title => $2 , description => $3 } ;

}


#ひとまず、RSSを出力。
open (RSS , ">yahoobbs.rss") ;
print RSS $rss -> as_string() ;
close RSS ;


#続いて、控えておいたデータでJavaScriptを出力


foreach ( @{@save_hash} ){
$_ -> {description} =~ s/<.*?>//g ;
}


#続いて、JSを出力するのでとりあえずHTML::Template
my $template = HTML::Template -> new( filehandle => \*DATA ) ;
$template -> param(item => \@save_hash ) ;
my @lines = split /\n/ , $template -> output() ;


open (JS , ">yahoo_bbs.js") ;
for (@lines){
s/\x27/&#x27;/g ; #シングルクォテーションをエスケープ。10進数表記では上手くいかないのは何故…

Encode::encode("utf-8" , $_ );
print JS "document.writeln('$_') ; \n" ;
}

close JS ;
exit(0);


__DATA__
<div class="yahoo_bbs">
<dl>

<TMPL_LOOP name = item >
<dt><a href="<TMPL_VAR name = link escape = HTML >"><TMPL_VAR
name = title escape = HTML ></a></dt>
<dd><TMPL_VAR name = description escape = HTML ></dd></TMPL_LOOP></dl>
</div>



Posted by horagay at 18:45 | Comments (0) | TrackBack |  【直リンク用URL

ブログ関係 ::ようやっとiTunesMusicStoreのRSSを弄ってみた。

何とかiTunes Music StoreのRSSを利用して、Blues, Classical, Jazz、Latinの中でのトップ10アルバムを表示してみました。右下のほうにちょこんとありますので、よろしければ。
 #[加工元のIMSのRSS生成サイト]iTunes Music Store RSS Generator

しかしまだ、名前と概説しかのっけられてません…とりあえず、アルバム紹介へのリンクを貼りたいのですが、RSSに含まれてるデータは、iTunes Music Storeへのリンクなので、載せたとしてもいきなりiTunesが起動されるか、インストールすらされていなければどうなるかもわかりません代物で(^_^;

何はともあれ…

MSN MusicはRSSを吐くらしいのエントリーで、oscarblogさんにiTunesのRSSについてコメントをもらって、よっしゃいっちょやってみようと思ってから、軽く1月半以上…

仕事で使えた方が今後いいだろうということで、「Amazon.co.jp: 本: Blog Hacks ―プロが教えるテクニック&ツール100選」を買って見たものの、どうやら簡単に出来るものではなく、きちんと(?)PerlやらXMLやらやっておかないと無理な予感。

しょうがないので一念発起して、オライリーの『初めてのPerl』やら『プログラミングPerl』やら買い込んで、仕事の合間にカリカリやってきました…いやはや3日開けると忘れてる忘れてる…学生のころはもっと覚えも集中力もあったような…と思いつつ何とかBlogHackのドアを叩けるようになりました(-_-;

何か面白いことが出来るように精進せねば…何か要望などありましたらどうぞコメントくださいませ。そして、oscarblogさん改めてありがたうございました。

後はcrontabとシェルスクリプトがちゃんと動いてるかどうかだ…


ソースを載せておきます。ツッコミ大歓迎です(´・ω・`)ノ
でも、このまま使うのは危険な気がしますので、参考にすることはお勧めしません。なんないと思うけど。


#!/usr/bin/perl -I ./lib

#iTunesのRSSを取り込んでJavaScriptで出力するPerlScript
#定期的にこのscriptをcronで回して更新。


#itunes_parse.pl
#
#<IN> $feedRss : FeedするRSS。http://phobos.apple.com/WebObjects/MZSearch.woa/wo/9.1から生成
#<OUT> itunes_rss.jsファイル。


use strict
use XML::RSS
use LWP::Simple
use HTML::Template
use Encode ;


#対象RSSをLWPでGET。


my $target_rss = "http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStore.woa/wpa/
MRSS/topalbums/sf=143441/genre=9060000/limit=10/rss.xml"
my $local_path = "itunes.rss"
my $res = LWP::Simple::mirror ($target_rss => $local_path) or die "Cant
locate RSS ..." ;


#GETしたRSSをXML::RSSモジュールでParse。


my $rss = new XML::RSS
$rss -> parsefile($local_path) ;


#各要素を取り出していく


my $channel = $rss->channel
my $items = $rss->items ;


my @item_list
foreach (@$items){
my $title = $_ -> {title}
my $description = $_ -> {description}
push @item_list , { title => $title , description => $description }
}


 


#HTML::Templateで、出力していく
my $template = HTML::Template -> new( filehandle => \*DATA );


#paramaterの設定
$template -> param (
maintitle => $rss -> {channel} -> {description} ,
items => \@item_list ,
) ;


#binmodeでSTDOUTのエンコーディング指定
#binmode STDOUT , ":encoding('utf-8')" ;


#Javascriptで出力する際に、クオテーションが問題になるらしいので
#エスケープしておく。エスケープ、エンコーディング周りはよくワカランです…


my @lines = split /\n/ , $template->output()
open (JS , ">itunes_rss.js")
for( @lines ){
s/\x27/&#x27;/g
print JS "document.writeln('$_') ; \n "
}
close JS
exit(0);


#ここからテンプレート
__DATA__
<div id="itunes_list">
<h3><TMPL_VAR name=maintitle escape=HTML></h3>
<dl>
<TMPL_LOOP name=items>
<dt><TMPL_VAR name=title escape=HTML></dt>
<dd><TMPL_VAR name=description escape=HTML></dd></TMPL_LOOP></dl>
</div>


Posted by horagay at 22:37 | Comments (0) | TrackBack |  【直リンク用URL
大きいバナー
バナーは大小お好きな方を御自由にどうぞ
小さいバナー
御意見は管理人まで。このページは当然リンクフリーです。
当サイトで紹介する情報等は、自己責任においてご利用下さい。 当サイトの利用によって生じたあらゆる損害に対して、管理者は一切の責任を負いません。
Copyright (C) 2003 Gonez Factory. All Rights Reserved.
ad_bouon_03.jpg 自宅で思いっきり楽器を演奏したい!
「オーダーメイドの防音室」環境スペース