• 締切済み

RSS取得の際に画像も取得したいのです。

初めて質問させて頂きます。 これがPHPに限った質問なのかどうかもよくわかりませんが、どうかお願い致します。 自サイトに、レンタルブログのRSSを取得して更新を知らせたいと思っています。 大黒屋本舗さんのJAVAスクリプトなどを使ったことはあるのですが、 読み込むデータに画像を取得させることは不可能なのでしょうか? 調べても、キーワードが悪いのかヒットしません。 RSSを取得して、タイトルや日付などにプラスして、画像も表示させることは可能でしょうか?こういうふうにしたいんです。→右下のダイアリーhttp://www.bonobos.jp/ ここは取得するのがPHPなのかJAVAスクリプトなのか全然わかりませんが、index.htmlで表示出来ている、というのがミソです(私的に)phpは携帯との振り分けに使ってしまっているので、トップページをphpにすることは出来ないからです。 どうやってやればいいのでしょう?そういったスクリプトってないですか? 私は既存のスクリプトを多少改造出来る程度でほぼプログラミングはわかりません。 板違いでしたら申し訳ありません。 どうか、宜しくお願いします。m(_ _)m

みんなの回答

回答No.6

はじめまして。簡単に回答させていただきます。 jugemuの場合、フィードに含まれる画像のURLが当該サイトからの相対パスで記述されている為、汎用のリーダーやシンジケーションプログラムでは、画像の取得はほぼ不可能だと思ってもらっていいと思います。 試しにフィードから取得したデータを表示させてみました。 http://demo.mud-skipper.biz/mh/ 上記URLで表示されている通りです。 画像のURLを正しく反映させる為には、カスタマイズすれば全然OKなんですけどね。 修正版 http://demo.mud-skipper.biz/mh1/

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.5

因みになんで皆コードを書いてくれないのかっていうのは そういう約束だっていうのもあるけど 読み込もうとしてるrssが何だか判らないから手が出ないというのもあるよ。 rssって簡単に言うけど http://www.google.co.jp/search?q=rss%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3&hl=ja&lr=lang_ja 形式が一杯ある。 で どこを探せば良いのかって話 ところで、画像って通常htmlでどう表示してるか判る? それはどんなファイルだか、判るよね? それとrss取得処理をしてるやつがそこをいじってる場所を探すって話になるよ

8ko8ko
質問者

お礼

回答ありがとうございます。 そうですね、RSSのバージョンやブログの種類?を書いてませんでした。 説明不足ですみません。 利用しているブログはJUGEMでRSSは1.0です。 JUGEMは画像を取り出すのに向いてませんでしょうか? HTMLはタグ打ちでやってますので、充分にわかります。 JAVAスクリプトもCGIもPHPも、フリーのソフトをデザイン、用途に合わせての改造程度なら出来ます。 でも大黒屋本舗のツールは、テキストのみの状態で現在も使用していますが、 jsRSS3.15というCGIファイルとテンプレートファイルのみなんですが、 テンプレートはデザインの為にいじりましたが CGIファイルのほうは見てみてもどこがどこだかさっぱりです。 imgで検索をかけても存在しません。 descriptionで探すと複数箇所にありますが、そこにどのように画像を解析するのかわかりません・・・。

8ko8ko
質問者

補足

お礼に入りきらなかったのでこちらに。 for('header','footer') { $RSS{$_} =~ s/#Version#/$ver/g; $RSS{$_} =~ s/#SiteTitle#/$title/g; $RSS{$_} =~ s/#SiteLink#/$link/g; $RSS{$_} =~ s/#SiteDescription#/$dsc/g; $RSS{$_} =~ s/#SiteCreator#/$cre/g; $RSS{$_} =~ s/#SiteDate#/$day/g; } for(@ENTRY) { my %entry = (); $_ =~ s|\r\n|\n|g; $_ =~ s|\r|\n|g; $_ =~ s|\n|<br />|g; if ($_ =~ m|(?:<title>(.*?)</title>)|is) { $entry{title} = $1 } if ($_ =~ m|(?:<link>(.+?)</link>)|is) { $entry{link} = $1 } elsif($_ =~ m|(?:<link.*?href="(.+?)".* />.*?)|is) { $entry{link} = $1 } if ($_ =~ m|(?:<description>(.+?)</description>)|is) { $entry{description} = $1 } elsif($_ =~ m|(?:<summary.*?>(.+?)</summary>)|is) { $entry{description} = $1 } elsif($_ =~ m|(?:<content:encoded>(.+?)</content:encoded>)|is){ $entry{description} = $1 } if ($_ =~ m|(?:<.*subject.*?>(.+?)</.*subject>)|is) { $entry{subject} = $1 } if ($_ =~ m|(?:<.*creator.*?>(.+?)</.*creator>)|is) { $entry{creator} = $1 } elsif($_ =~ m|(?:<author>.*<name>(.+?)</name>.*</author>)|is) { $entry{creator} = $1 } if ($_ =~ m|(?:<.*date.*?>(.+?)</.*date>)|is) { $entry{date} = $date = $1 } elsif($_ =~ m|(?:<.*issued.*?>(.+?)</.*issued>)|is) { $entry{date} = $date = $1 } if($entry{date} =~ m!(\d+).(\w+).(\d{4}).(\d+):(\d+):(\d+)!) #Y! { my %MON = ('Jan' => 1,'Feb' => 2,'Mar' => 3,'Apr' => 4,'May' => 5,'Jun' => 6,'Jul' => 7,'Aug' => 8,'Sep' => 9,'Oct' => 10,'Nov' => 11,'Dec' => 12); $entry{date} = sprintf("%04d%02d%02d%02d%02d%02d",$3,$MON{$2},$1,$4,$5,$6); } else { $entry{date} =~ s![+|-]\d\d:\d\d!!; $entry{date} =~ s![-|:|T]!!g; } など他にもありますが他に見た質問でこのツールはCDATA部分を読み込まないため、 画像が表示出来ないのだという記述がありました。 他に、phpなどのツールでRSSを画像ごと取り込める、というツールは全然ないんでしょうか。 ありがとうございました。

  • memphis
  • ベストアンサー率40% (975/2395)
回答No.4

もうちょっと調べてみました。 image要素は、RSSの記事ごとではないので使えません。 記事ごとに画像を表示するには、下記のようになっていないとダメなようです。 ・配信する側は、RSSの説明(description)に画像のアドレスを入れる。 ・受信する側は、説明の部分を解析して画像の所を抜き出します。 配信する側(ブログなど)が最初から対応している所もあれば未対応の所もあります。 受信して表示する側は、画像を表示するためにCGI(もしくはPHP)でRSSの説明部分から画像を抽出し表示するようにすればいいです。

8ko8ko
質問者

お礼

続けて回答、ありがとうございます。 そうか、ブログが対応してるかどうか、という問題もあるんですね。 利用してるブログはJUGEMです。 JUGEMはRSS1.0とATOMらしいですね。 中身がどうなってるのかはわからないです。 RSSを配信するタイプのPHP掲示板を設置しているので、そっちで出来るのかどうか試してみようかと思います。 1回見てみないことには何が何やら・・・。 ありがとうございます。

  • memphis
  • ベストアンサー率40% (975/2395)
回答No.3

>​http://hoge.net/index-pc.php​として表示されることになりますよね? >そうではなく、​http://hoge.net/​として表示させたいため、なんです。 index.php​を振り分けだけに使うなら、そうなりますが 振り分けして、その表示も一緒にするようにすればアドレスは同じにできます。 >RSSを取得して、タイトルや日付などにプラスして、画像も表示させることは可能でしょうか? 取得するRSSに画像URLが入っているなら、それを表示すればいいだけでは? 無い場合でも、固定で表示するのは難しくはないと思います。

8ko8ko
質問者

お礼

回答、ありがとうございます。 それを表示するやり方がわからないのです。 rssの仕様などのページを見てみると、image要素というのは大抵バナーなどに対するものだとありました。 記事の画像を参考url(​http://www.bonobos.jp/​)のように、記事が更新される時にhtmlに記事の画像も表示したいんです。 そういうツールってないんでしょうか。 大黒屋本舗のツールを自分でそういうふうに改造するのは無理だし、教えてgooの方でそういう質問を見かけましたが、解決には至りませんでした。http://oshiete1.goo.ne.jp/qa3118954.html 振り分けに関しては、おっしゃること、わかります。 ですがそういうふうに書くのは私にはできません。 振り分けに関しては聞きたいこととは外れているのでこれ限りにしてください。すみません。

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.2

>という具合です。 いや、そうじゃなくて hoge.net/(index.php) これ 優先順位があって html より php が先になるように設定されてるからこそphpが呼ばれるのは判る? そんでPCだろうと携帯だろうとまず index.php を辿るわけだよね? そこから振り分けて index.html に振ったり mobile/index.html に振ったりしてるわけでしょ? これを index-pc.php だとかに振れば済む話なんじゃない? っていう事を言ってるんだけど・・・ で、画像を取り込むのは画像に関する情報をphp側だかjavascriptで<img>に変換して一緒に出してあげれば良いだけだと思うよ。 http://www.google.co.jp/search?q=rss%20%E4%BB%95%E6%A7%98%20%E7%94%BB%E5%83%8F%E6%83%85%E5%A0%B1&hl=ja&lr=lang_ja これを見なくてもrssで取り出したい画像情報がどこにあるのか判れば問題ないよ。 今使っているRSSを表示するツール(javascriptの?)で該当する出力場所をいじる事になるね。 大黒屋本舗とやらのページに行くと"表示のさせ方によってHTMLタグなどで加工"と書かれているからそういう書き換えで良いんじゃない? 因みに「じゃぁどう書き換えれば良いんだよ」は答えてあげられない。 ここはそういう約束らしいから。

8ko8ko
質問者

お礼

続けて回答、どうもありがとうございます。 >これ 優先順位があって html より php が先になるように設定されてるからこそphpが呼ばれるのは判る? わかります。.htaccessで先にindex.phpを読み込ませてから、振り分けてますから。 >これを index-pc.php だとかに振れば済む話なんじゃない? っていう事を言ってるんだけど・・・ はい、それはそうなのはわかってます。 それだと、サイトの表示アドレスが、 http://hoge.net/index-pc.phpとして表示されることになりますよね? そうではなく、http://hoge.net/として表示させたいため、なんです。 >今使っているRSSを表示するツール(javascriptの?)で該当する出力場所を ありがとうございます。このツールはcgiで作られているようで、 htmlでjavaスクリプトにて呼び出しているようです。 タグで加工、というのはテンプレートがあって、そこで表示のさせ方をやっているんですが、 出力場所、というのはそのcgiのことですよね? 残念ながらどこだかさっぱりわからないんですが、RSSで取り出したい画像に関する情報、というのは RSS(RDF?)のソースを見ればわかるんでしょうか? 教えて頂いたキーワードで少しググって見ます。ありがとうございます。 ちなみに、​参考サイトhttp://www.bonobos.jp/​はなにでやってるかわかりませんでしょうか・・・。

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

>携帯との振り分けに使ってしまっているので、 >トップページをphpにすることは出来ない ??? 振り分けた先をPHPにすればPHPでできるんじゃない?

8ko8ko
質問者

補足

回答有り難うございます。 サイトのアドレスをhttp://hoge.net/の形で表示させる為、index.phpで振り分けをしています。 パソコンの場合はhttp://hoge.net/(index.html) 携帯の場合はhttp://hoge.net/mobile/index.html という具合です。 なのでトップページをindex以外の名前で登録出来ない以上、phpをトップページで使うのは無理ですよね? 申し訳ないですが、RSS取得に関しての回答をお願い致します。m(_ _)m

関連するQ&A

専門家に質問してみよう