【php】amebloのRSSのフィードから画像を取得する改訂版

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

以前、amebloのRSSフィードから画像を取得する方法を紹介しました。

この方法だと、ローカル環境は動作するのですが、サーバーにアップすると動かなくなっていたので、いくつか修正を加えた改訂版を紹介したいと思います。

PR

※画像の著作権については十分に注意してください。

ダウンロード

以前と同じRSS-PHPよりダウンロードしてください。

使い方

投稿された記事にある一番上の画像(絵文字などを含まない)を表示します。

ダウンロードしたphpフォルダを、RSSを読み込みたいファイルと同じディレクトリに置き、RSSを読み込むために以下を入れてください。

変数の変更

php/RSS.phpを編集します。基本的にはhack hereと書いてある部分だけの編集で大丈夫です。

取得するフィードのURLを指定

取得したいamebloのIDを入力してください。
http://feedblog.ameba.jp/rss/ameblo/(取得したいamebloのID)/rss20.xml

feedの読み込み数

feedの表示数を選択してください。デフォルトでは3になっています。

画像フォルダへのパス

PR

画像フォルダへのパスを入力してください。デフォルトでは./img/となっています。このフォルダの中にno_image.jpgを置くと、記事に画像がない場合に表示される画像となります。別のファイルを表示させたい場合は、RSS.phpの78行目を編集してください。

RSS画像を保存するフォルダへのパス

改定した点

そもそもの問題

サーバーでこのプログラムを動かした場合でも、ローカル環境の場合と同様に画像のURLはHTML上に出力されています。そして、そのURLを直接叩くと画像が表示されます。

ただ、サーバー上にimgタグとして表示しようとした場合だけ、表示されないという問題が発生していました。原因は分かりません。クロスドメインとかそこらへんなんじゃないかなと思います。

解決策

取得する画像を一度サーバー上に保存することで、この問題を解決しています。具体的には、画像の出力が求められた場合、その画像をローカルに保存して表示するという手段をとっています。

一応、サーバーへ負荷を減らすため、画像ファイルがすでに保存されていれば再度ダウンロードをしないようにはしています。

ただ、このままだと頻繁に更新するブログのRSSを取得した場合は大量の画像が保存されることとなり、ハードディスクの負担となるので、一日に一回画像を削除するcronなどをサーバー側に仕込んでおきましょう。

cronの書き方については省略しますが、絶対パスで指定することを強くおすすめします。

PR

この記事が気に入ったら
いいね ! しよう

Twitter で
  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

SNSでもご購読できます。