【はてなブックマーク】3user、5user目にセルクマするPHPスクリプト

  • 投稿 : 2017-01-27
自己責任でご利用ください。規約等の問い合わせは、直接サービス提供会社にお問い合わせください。
hatebu-3user01.png

3user目、5user目に狙ったかのようにセルクマするブロガーを見かけるのですが、毎回大変だなぁと思っていました。しかしよく考えてみると、手動では毎回というのは厳しいのではないか?ということでPHPなどのスクリプトで自動でブックマークしているのではないか?ということで、PHPでブックマークするスクリプトを作ってみました。

はてなブックマークには、メール投稿という機能が用意されている

hatebu-3user02.jpg

はてなブックマークの設定 → メールから、あなた用のメールアドレスにメールを送信することで、はてなブックマークへの追加が可能です。
たとえば携帯でWebを閲覧中に気になるページを発見してブックマークしておきたい場合、お使いの携帯が「URL(アドレス)をメールで送信」機能があれば、あなた用のメールアドレスにメールを送るだけでブックマークできます。
ブックマークを投稿する - はてなブックマークヘルプ

http://URL/
[タグ]コメント
メールではてなブックマークに追加できる機能をリリースしました - はてなブックマーク日記 - 機能変更、お知らせなど

APIもありますが、メール投稿するのが一番簡単だと思います。PHPでメール送信すればブックマークできてしまうということですね。

はてぶの一覧は、RSS取得が出来ます

http://b.hatena.ne.jp/entrylist?users=2&mode=rss&url=http://www.hatena.ne.jp

http://www.hatena.ne.jpにつけられた、はてぶ数2以上のものは上記のようなURLで取得可能です。

PHPで実装してみましょう

<?php
//----------------------------
// 自身のブログ用に書き換える
//----------------------------
//ブログTOPのURL
define("MY_SITE","http://blog.example.com/");
//はてぶ投稿メール
define("HATEBU_MAIL","書き換え@b.hatena.ne.jp");
//メールの送信元
define("MAIL_FROM","example@gmail.com");
//はてぶ数
define("HATEBU_CT", 2);

//-----------------------------
// ブックマークする
//-----------------------------
function hatena_bookmark($url){
    mb_language("Japanese");
    mb_internal_encoding("UTF-8");

    $to      = HATEBU_MAIL;
    $subject = 'はてなブックマーク';
    $message = $url.'  セルクマ';
    $message = $url;
    $headers = 'From: '.MAIL_FROM . "\r\n";
    mb_send_mail($to, $subject, $message, $headers);
}

//-----------------------------
// MAIN
//-----------------------------
//UAを指定しないと取得できなくなった
//$rss = simplexml_load_file($rss_url);

$rss_url = "http://b.hatena.ne.jp/entrylist?users=2&mode=rss&url=".MY_SITE;

$context = stream_context_create(array('http'=>array('user_agent'=>'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; Tablet PC 2.0; rv:11.0) like Gecko'))); //Edge
$data = file_get_contents($rss_url, false, $context);
$rss = simplexml_load_string($data);

foreach($rss->item as $item){
    $title = $item->title;
    $link = $item->link;
    $count = $item->children( 'hatena' , true )->bookmarkcount ;
    //echo $count."|".$title."|".$link."<br/>";
    //2userならはてぶする
    if($count == HATEBU_CT){
        hatena_bookmark($link);
        //echo $count."|".$title."|".$link."<br/>";
    }

}

「自身のブログ用に書き換える」部分を書き換えてください。
レンタルサーバーのcronなどで、定期的に呼び出せば、たぶんOKです。

define("HATEBU_CT", 4);
5user目にセルクマしたい場合は、上記のように書き換えるとOK。

simplexml_load_fileを使えない理由

はてなブックマークの RSS を Ruby で取得していたのですが、こ… - 人力検索はてな
UAを送信しないと、RSSを取得できなくなったようだ。

補足

2008年
株式会社はてなの回答「単に宣伝ページをブックマークする行為やメモ目的のセルフブックマークは宣伝とは判断しない」 - ラージアイ・イレブン
2011年
はてなブックマークにおいて、セルフブックマークはOKだそうです | ブログ運営のためのブログ運営
2013年

スポンサーリンク