DMM RSS解釈

PHPを覚えたてのころのDMMのサイトジャンル別RSSを読み込んで自分のアフィリエイトIDを付加してHTMLページに落とすというプログラムを組みました。

今だったら、XML/RSS.php とか SimpleXML とか Smarty とか使ってもっとシンプルに組みますけどw
Cashも使って毎度のリクエストは避けたほうがいいですねー

DMMのRSSはちょっと違うからこんな風に強引に組みました。

<?php

//ヘッダはUTF-8
header(" Content-Type: text/html; charset=UTF-8" );

//RSSのURL
$url = "http://www.dmm.co.jp/monthly/alice/-/list/=/sort=date/rss=create/_jloff=1/";

//自分のアフィリエイトID
$id = "dmmのid";

$i = 0;
$_data = null;

//改行とかそういう表示上の都合で後で使う
$flg = 0;
$content_flg = 0;

//RSSを読み込む
if( $_http = fopen( $url, "r" )){

  while( !feof( $_http ) ){
    $_data = fgets( $_http, 1024 );

    if($flg == 1 ){
      //何もしない
      if( substr_count($_data , "item") >0
        || substr_count($_data , "description") >0
        || substr_count($_data , "dc:date") >0
        || substr_count($_data , "dc:creator") >0
        || substr_count($_data , "package") >0
      ){
      
        //タイトルタグを置き換える
      }else if( substr_count($_data , "title") >0 ){
        $title = "";
        $_data = str_replace("<title>", "", $_data);
        $_data = str_replace("</title>", "", $_data);
        $title = $_data;
       
        //リンクがあれば自分のidを付加する
      }else if( substr_count($_data , "link") >0 ){
        $link = "";
        $_data = str_replace("<link>", "", $_data);
        $_data = str_replace("</link>", "", $_data);
        $link = $_data.$id;
        
      //リンク整形
      echo "<table width=800 class=\"maintable\" >";
      echo "<tr><td colspan=2 align=left valign=middle>";
      echo "<a href=\"$link\" target=\"_blank\"><br><b><font style=\"color : blue;\" style=\"font-size:16px\" >$title</font></b></a>";
      echo "</td></tr>";

      //コメントの中に画像が入っているのでこんな風に出す
      }else if( substr_count($_data , "<content:encoded>") >0 ){
        $content_flg = 1;
        $_data = str_replace("<![CDATA[", "", $_data);

        $imgst = strpos($_data , "<img",0);
        $imgend = strpos($_data , "</a>",0);
        $linkimage = substr($_data, $imgst, $imgend);
        
        //リンク元の画像がない場合はNOW PRINTING画像を出す
        if($linkimage == '') $linkimage = "<img src=\"http://yourvideo.heteml.jp/file/printing.jpg\" border=\"0\">";
        echo "<tr><td class=\"maintd\"><a href=\"$link\" target=\"_blank\">$linkimage</a>";

      //以下データ整形&リンクができればIDを付加してリンクする
      }else if( substr_count($_data , "収録時間") >0 ){
        $content_flg = 1;
        $_data = "</td><td align=left>".$_data;
        $_data = str_replace("\">", "$id\">", $_data);
        echo $_data;

      }else if( substr_count($_data , "ムービープレビュー") >0 ){
        $content_flg = 1;
        $_data = "<a href=\"$link\" target=\"_blank\"><b>もっと見る!</b></a></td></tr><tr><td colspan=2 align=center>".$_data;
        echo $_data;

      }else if( substr_count($_data , "</content:encoded>") >0 ){
        $content_flg = 1;
        $_data = str_replace("]]>", "", $_data);
        $_data = $_data."<br><br></td></tr></table><br>";
        echo $_data;

      }else{
        $_data = str_replace("\">", "$id\">", $_data);
         echo $_data;
      }
    }

    if( substr_count($_data , "/image") >0 ) $flg = 1;
    $i++;
  }

  fclose( $_http );
}
?>

Comments (4)

fuuta : August 31, 2007 9:22 AM

ググって此処に辿り着きました。
探してた感じのプログラムだったんで使用してもいいでしょうか?
Cash機能があるといいのですが……
もう改良するような事はないのでしょうか?

管理人 : September 2, 2007 1:17 AM

どうぞお使いください。
現在はもっと別の方法に改良しており
データはDBに保存するようにしています。
Cash機能についてはPear Cacheモジュールを使えば手早く実装できると思います。

ryo : March 24, 2008 1:12 PM

検索でたどりつきました。先のコメントで使用可能とのことで活用させていただいたのですが、下記エラーが出てしまいます。回避可能でしょうか・・。
Parse error: syntax error, unexpected '@' in (サーバー情報・・)on line 22
突然で申し訳ございませんが、よろしくお願いいたします。

管理人 : March 24, 2008 2:01 PM

こちらをご利用ください
http://drunk.chips.jp/web/2008/03/magpierss_rss_for_php_dmm_rss.html

Comment Form

コメントを表示する前に、管理人の承認が必要になることがあります。その場合は、承認されるまでコメントは表示されませんので、ご了承ください。

スタイル用のHTMLタグが使えます

Trackback

Recent entry

Search

Tag Cloud

Page Top