Liner Note

情報(ユーザー中心デザイン・ユーザビリティ)と技術(ウェブプログラミング・ウェブサービス)についてのメモ書き

あわせて読みたい

使おうっかなーと思ったけど、画像1枚じゃテーマに組み込みづらかったので*1 、文字データに落とそうと言うことで、HTMLやRSSで出力できるような関数を仕掛けてみた。

使い方はこんな感じ。コードには書いていませんが、あと近くじゃなくていいので、どこかに「あわせて読みたい」のコードを貼る必要があります(「あわせて読みたい」に参加するため)

PHPソースコード
<?php
// ケース1: 単純に配列に格納する
$rec = getRecommendSites("http://note.openvista.jp/", "array");
// ケース2: RSSで出力する
getRecommendSites("http://note.openvista.jp/", "rss");
// ケース3: HTMLの順序付きリストで出力する。
getRecommendSites("http://note.openvista.jp/", "html");

で、関数のソースはこんな感じ。

PHPソースコード
<?php
function getRecommendSites($url, $output="array"){
 
    $url = "http://awasete.com/show.phtml?u=".urlencode($url);
    $content =  file_get_contents($url);
    preg_match_all("/(<a href=\"(https?:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)\">)(.*)(<\/a>)/" , $content, $sites);
    $sites = array_splice($sites, 2, 2);
 
    $link = $sites[0][0];
    $title = $sites[1][0];
 
    for($i=0;$i<2;$i++){
        array_shift($sites[$i]);
        array_pop($sites[$i]);
    }
    
    if ($output == "array"){
 
        return $sites;
 
    } elseif ($output == "rss"){
    
        $n = count($sites[0]);
        $str =  '<?xml version="1.0"?>'."\n";
        $str .= '<rss version="2.0">'."\n";
        $str .= "<channel>\n";
        $str .= '<title>'. $title ."</title>\n";
        $str .= '<link>' .$link ."</link>\n";
        $str .= '<description>「'. $title ."」とあわせて読みたいサイト</description>\n";
        $str .= "<language>ja-JP</language>\n";
        $str .= '<pubDate>'.  date("D, d M Y H:i:s")." +0900</pubDate>\n";
        for($i=0;$i<$n;$i++) {
            $str .= "<item>\n";
            $str .= '<title>'. $sites[1][$i] ."</title>\n";
            $str .= '<link>'. $sites[0][$i] ."</link>\n";
            $str .= '<description><![CDATA[<a href="'. $sites[0][$i] .'">'. $sites[1][$i] ."</a>]]></description>\n";
            $str .= "</item>\n";
        } 
        $str .= "</channel>\n";
        $str .= "</rss>\n";
        echo $str;
 
    } elseif ($output == "html"){
    
        $n = count($sites[0]);
        if ($n){
            $str = '<p><a href="'. $url .'">「'. $title ."とあわせて読みたい」</a></p>\n";
            $str .= "<ol>\n";
            for($i=0;$i<5;$i++) {
                $str .= '<li><a href="'. $sites[0][$i] .'">'. $sites[1][$i] ."</a></li>\n";
            } 
            $str .= "</ol>\n";
        } else{
            $str = "<p>あわせて読みたいサイトが見つかりません</p>";
        }
        echo $str;
    }
}
?>

‥で、作ってみたものの実は使う予定はないんですよね ;) というのは実際に「あわせて読みたい」を呼び出したら、あんまりあわせて読むようなサイトじゃないだろって感じのサイトが出てきたからで。

そんなわけなんだけど、捨てるのもアレなので、一応公開だけと言うことで。ライセンスはいつものようにCCです。

あと、あわせて読みたい規約との兼ね合いはどうなのだろう。16条1項にはあわせて読みたいもしくは他者の著作権、商標権等の知的財産権を侵害する行為を禁止するとあって、内容をいわば転載しているわけだから、著作権侵害と取れるかもしれない。ただ傍目には画像の内容を抜き出しているだけで、そうは見えないけどちょっと微妙かもしれない。

まぁ、一番いいのはサイドフィードさんに公式にXMLかJSONかなんかでのプッシュに対応してもらう事なんですが。

  1. 加えてユーザビリティ上、イメージマップを用いるのではなく、一度画像をクリックしてリンク先から飛ぶ仕組みになっているのも、ユーザに混乱を招くので。[戻る]
キーワード:

似たもの記事

読者の皆さんの反応サイト内コメントの更新情報(RSSフィード)

読者のコメント

0

ブックマークコメント

0

他サイトの関連記事

0

読者のコメント

コメントはまだ寄せられていません

はてなブックマークでつけられたコメント

他サイトの関連記事

トラックバックはまだ寄せられていません


トラックバックとは
この記事に言及したサイトをこちらに掲載する仕組みをトラックバックと言います。ここでは、このサイトに頂いたトラックバックを一覧表示しています。
トラックバックしてくださる方へ
この記事への言及がない記事など、トラックバック受信方針に沿っていないものは、読者にお見せしても仕方ないこともあり削除させていただいることをご了承ください。
トラックバックを受け取るためのURI

コメント書き込みフォーム

  • メールアドレスはウェブ上で公開したり、連絡以外で使うことはありません
  • コメントを公開したくないが、作者に連絡を取りたい場合は メールで連絡してください
  • 本文中にHTMLコードは使用できません(URLはそのままお書きください)