ECナビ人気ニュースの

ブックマーク登録者数も表示するようにしてみました

ドキュメント書いてないけど、もし使いたい方がいらっしゃったら使っていただいてかまわないです。むしろ使ってください。

*「ふっかつのじゅもんがちがいます。」 - ロジテックのページに各種ソーシャルブックマークへのリンクがついた件について

ということなので、使ってみました。

↑ この画面の (15) が、ECナビ人気ニュースのブックマーク登録者数です。

char    *getUsersOfECnaviClip( const char *url )
{
    Thread  static char users[32];
    Thread  static char saveURL[MAX_URLLENGTH];
    char    apiURL[MAX_URLLENGTH];
    char    *response;

    if ( users[0] && (strcmp( users, "(?)" ) != 0 ) )
        if ( !strncmp( url, saveURL, MAX_URLLENGTH - 1 ) )
            return ( users );
    strcpy( users, "(?)" );

    /* ECナビ人気ニュースのブックマーク登録者数を取得 */
    response = (char *)malloc( MAX_CONTENT_SIZE );
    if ( !response )
        return ( users );
    memset( response, 0x00, MAX_CONTENT_SIZE );

    sprintf( apiURL, "http://news.ecnavi.jp/api/counter/%s",
             encodeURLforHatena( url ) );
    http_get( apiURL, response );

    if ( *response ) {
        char    *p;
        char    gifURL[MAX_URLLENGTH];

        gifURL[0] = NUL;
        getCurrentLocation( gifURL );
        if ( gifURL[0] ) {
            // gifURL は 登録者数に対応する GIF 画像の URL になる
            //   例: http://news.ecnavi.jp/static/image/api/number/002.gif
            p = strrchr( gifURL, '/' );
            if ( p ) {
                p++;
                while ( *p == '0' )
                    p++;
                if ( (*p >= '1') && (*p <= '9') )
                    sprintf( users, "(%d)", atol(p) );
                else if ( *p == '.' )
                    strcpy( users, "(0)" );

                strncpy( saveURL, url, MAX_URLLENGTH - 1 );
                saveURL[MAX_URLLENGTH - 1] = NUL;
            }
        }
    }

    free( response );

    return ( users );
}

こんな感じのやっつけっぽいコードで実現。

// gifURL は 登録者数に対応する GIF 画像の URL になる
// 例: http://news.ecnavi.jp/static/image/api/number/002.gif

ちなみに、画像は、今のところ 100.gif までしか用意されてないみたい。