Feedly 購読者数の取得 2015年6月版

  • Posted by: maRk
  • myown | net
  • このエントリーを含むはてなブックマーク

Yahoo Pipes およびYQL経由でAjax による、Feedly の購読者数の取得が出来なくなったため、改修をおこないました。そのメモです。

これまで、以下のページにあるような方法で取得していたのですが、いつからか不明ですが、取得できないようになっていました。

先般、 Yahoo Pipes のほうで、Pipesの終了に向けてのアナウンスがありました。

とりあえず、このまま使っていても進展しないようなので、別の方法で取得するようにしました。

PHPによる取得

PHPの file_get_contents ファイルシステム関数を利用すれば、APIの返すソースを得ることができます。

基本的なものは以下のようなかんじに。

<?php
    $url = "http://example.com/feed/";     // 対象URL
    $json = @file_get_contents("http://cloud.feedly.com/v3/feeds/feed%2F".rawurlencode($url));    // データ取得
    $feedId = json_decode($json, true);    // JSONをデコードし配列へ
    $count = isset($feedId['subscribers']) ? $feedId['subscribers'] : 0;    // isset()で内容を調べ $count へ代入。登録されてないときは 0
    print  $count;

参考:

ウチのとこみたいに増減がほとんどないようなら、キャッシュいれたほうが、あちらのサーバーにはやさしいとおもいます(使ってるページ自体がアスセス少ないとか言わない)。

PEAR の Cache_Lite パッケージを用いた例です。

都合で、コメントに説明をいれています。

<?php
    header("Content-Type: text/html; charset=UTF-8");   // text/plain でもいいような気もするけどとりあえず

    // チェックURL
    $url = "http://example.com/feed/";    // フィードURL

    require_once "Cache/Lite.php";    // Cache_Lite 呼び出し

    // キャッシュオプション

    $cacheOptions = array(
        'cacheDir' => '/var/www/tmp/cache/',  // キャッシュディレクトリを指定。適切なパーミッションをセットしておく
        'lifeTime' => '3600', //  キャッシュ期限  (1時間) 
    );

    // キャッシュID と キャッシュオブジェクト生成
    $id = "feedlysubscribers";
    $Cache_Lite = new Cache_Lite($cacheOptions);

    // データ取得
    if($count = $Cache_Lite->get($id)){  // 
        echo $count;
    } else {

        // キャッシュがないときに、フィード購読者数の取得にいく

        $json = @file_get_contents("http://cloud.feedly.com/v3/feeds/feed%2F". rawurlencode($url));
        $feedId = json_decode($json, true);
        $count = isset($feedId['subscribers']) ? $feedId['subscribers']: 0;

        echo $count;
    //  キャッシュ登録でこの条件が真になるようにする
        $Cache_Lite->save($count, $id);
    }

参考:

これを、 subs_count.php とでもして、サイトのどこかに置きます。

で、取り出す側は jQuery でテキストファイル読み込みなんかを使っていきます。

jQuery本体の呼び出しは済ませてあるものとします。

ファイル呼び出し

表示ページが PHP なときは、include するとかでいいかと。 以下は、jQueryで先ほどのPHPファイルを取り込みます。

テンプレート上の購読者数表示する場所に以下の要素をいれておきます。

<div id="feedly_subscribers"></div>

複数あるようなときは、class属性にしておき、以下の読み込むときのセレクターもそれにあうようにしておきます。

単に読むだけなので、.load() にしてますが、各種処理が必要な場合は .ajax() のほうにします。

<script>
$(document).ready(function (){
  $("#feedly_subscribers").load("//path/to/subs_count.php");
});
</script>

Comments:

コメントをどうぞ。書き込む場所が不明な場合やサイトオーナーへのコンタクトは、GuestBookまでお気軽にどうぞ

blog comments powered by Disqus

Trackbacks:0

TrackBack URL for this entry
https://www.markdiary.com/mt/trackback/58/157
Listed below are links to weblogs that reference

https://www.markdiary.com/archives/2015/06-06194800.php - Feedly 購読者数の取得 2015年6月版 from maRkのMyOwn