JS调用饭否API

作者:vich 发布于 2008-10-5 12:09 评论(0)人阅读

首先下载饭否JS文件 fanfou.rar 。解压后看到如下fanfou.js文件代码

fanfou = new Object();
fanfou.Timeline = function() {
    this.server = 'http://api.fanfou.com';
    if (typeof fanfou_name == 'undefined') {
        this.name = '';
    } else {
        this.name = fanfou_name;
    }
    if (typeof fanfou_count == 'undefined' || isNaN(fanfou_count)) {
        this.count = 20;
    } else {
        this.count = parseInt(fanfou_count);
    }
    if (this.name == '') {
        this.timeline = 'public';
    } else {
        if (typeof fanfou_timeline != 'undefined' && (fanfou_timeline == 'friends' || fanfou_timeline == 'public')) {
            this.timeline = fanfou_timeline;
        } else {
            this.timeline = 'user';
        }
    }
};
fanfou.Timeline.prototype = {
    getDate: function(str) {
        var arr = str.split(' ');
        var str = arr[1] + ' ' + arr[2] + ', ' + arr[5] + ' ' + arr[3];
        var current_date = new Date();
        var parsed_date = Date.parse(str) - current_date.getTimezoneOffset() * 60 * 1000;
        return new Date(parsed_date);
    },
    fullDate: function(date) {
        return date.getFullYear() + '-' + (date.getMonth() >= 9 ? '' : '0') + (date.getMonth() + 1) + '-' + (date.getDate() > 9 ? '' : '0') + date.getDate() + ' ' + (date.getHours() > 9 ? '' : '0') + date.getHours() + ':' + (date.getMinutes() > 9 ? '' : '0') + date.getMinutes();
    },
    readableDate: function(date) {
        var parsed_date = date.valueOf();
        var current_date = new Date();
        var past_seconds = parseInt((current_date.getTime() - parsed_date) / 1000);
        if (past_seconds < 60) {
            return past_seconds + ' 秒前';
        } else if (past_seconds < 60 * 60) {
            return (parseInt(past_seconds / 60)).toString() + ' 分钟前';
        } else if (past_seconds < 60 * 60 * 24) {
            return '约 ' + (parseInt(past_seconds / 3600)).toString() + ' 小时前';
        } else {
            return this.fullDate(date);
        }
    },
    createName: function(obj) {
        var name = document.createElement('a');
        name.href = obj.url;
        name.title = obj.name;
        name.target = '_blank';
        name.appendChild(document.createTextNode(obj.screen_name));
        return name;
    },
    createText: function(obj) {
        return document.createTextNode(obj.text);
    },
    createStamp: function(obj) {
        var stamp = document.createElement('a');
        var date = this.getDate(obj.created_at);
        stamp.appendChild(document.createTextNode(this.readableDate(date)));
        stamp.href = 'http://fanfou.com/statuses/' + obj.id;
        stamp.className = 'stamp';
        stamp.title = this.fullDate(date);
        stamp.target = '_blank';
        return stamp;
    },
    createMe: function() {
        var stamp = document.createElement('a');
        stamp.appendChild(document.createTextNode(" FanFou"));
        stamp.href = 'http://fanfou.com/vich';/*注释:此处"vich"为饭否帐户名,可更换成你自己的饭否帐户名*/
        stamp.className = 'stamp';
        stamp.target = '_blank';
        return stamp;
    },
    createLink: function() {
        var item = document.createElement('li');
        var link = document.createElement('a');
        link.appendChild(document.createTextNode('更多消息'));
        switch (this.timeline) {
            case 'user':
                link.href = 'http://fanfou.com/' + this.name;
                break;
            case 'friends':
                link.href = 'http://fanfou.com/message/' + this.name;
                break;
            case 'public':
                link.href = 'http://fanfou.com/browse';
        break;
            default:break;
        }
        link.title = '饭否';
        link.target = '_blank';
        item.appendChild(link);
        return item;
    },
    createBrand: function() {
        var brand = document.createElement('p');
        var link = document.createElement('a');
        link.href = 'http://fanfou.com/';
        link.title = '饭否';
        link.target = '_blank';
        var img = document.createElement('img');
        img.src = 'http://static.fanfou.com/img/brand.gif';
        img.alt = '饭否';
        link.appendChild(img);
        brand.appendChild(link);
        return brand;
    },
    statuses: function(obj) {
        if (obj.length == 0) return false;
        switch (this.timeline) {
            case 'user'://你自己的消息
                var container_name = 'fanfou_statuses_user' + obj[0].user.id;
                if (!document.getElementById(container_name)) {
                    document.write('<div id="' + container_name +'" class="fanfou_statuses"></div>');
                }
                var container = document.getElementById(container_name);
                var statuses = document.createElement('ul');
                for (var i=0; i<obj.length; i++){
                    var status = document.createElement('li');
                    status.appendChild(document.createTextNode('微风:'));/*注释:此处“微风:”为发言人的称呼,可更换你自己喜欢的*/
                    status.appendChild(this.createText(obj[i]));
                    status.appendChild(document.createTextNode(' '));
                    status.appendChild(this.createStamp(obj[i]));
                    status.appendChild(document.createTextNode(' via'));/*注释:用于显示底部更多消息链接,删除此行将不显示。*/
                    status.appendChild(this.createMe());//*用于显示底部饭否链接,删除此行将不显示。
                    statuses.appendChild(status);
                }
                break;
            case 'friends'://你和你朋友的消息
                var container_name = 'fanfou_statuses_friends';
                if (!document.getElementById(container_name)) {
                    document.write('<div id="' + container_name +'" class="fanfou_statuses"></div>');
                }
                var container = document.getElementById(container_name);
                var statuses = document.createElement('ul');
                for (var i=0; i<obj.length; i++){
                    var status = document.createElement('li');
                    status.appendChild(this.createName(obj[i]));
                    status.appendChild(document.createTextNode(':'));
                    status.appendChild(this.createText(obj[i].status));
                    status.appendChild(document.createTextNode(' '));
                    status.appendChild(this.createStamp(obj[i].status));
                    statuses.appendChild(status);
                }
                break;
            case 'public': //所有人的消息
                var container_name = 'fanfou_statuses_public';
                if (!document.getElementById(container_name)) {
                    document.write('<div id="' + container_name +'" class="fanfou_statuses"></div>');
                }
                var container = document.getElementById(container_name);
                var statuses = document.createElement('ul');
                for (var i=0; i<obj.length; i++){
                    var status = document.createElement('li');
                    status.appendChild(this.createName(obj[i].user));
                    status.appendChild(document.createTextNode(':'));
                    status.appendChild(this.createText(obj[i]));
                    status.appendChild(document.createTextNode(' '));
                    status.appendChild(this.createStamp(obj[i]));
                    statuses.appendChild(status);
                }
                break;
            default:break;
        }
        container.appendChild(statuses);
    },
    createStatuses: function(sObjName) {
        switch (this.timeline) {
            case 'user':
                document.write('<script type="text/javascript" charset="utf-8" src="' + this.server + '/statuses/user_timeline/' + this.name + '.json?cb=' + sObjName + '.statuses&amp;c=' + this.count + '"></' + 'script>');
                break;
            case 'friends':
                document.write('<script type="text/javascript" charset="utf-8" src="' + this.server + '/statuses/friends_timeline/' + this.name + '.json?cb=' + sObjName + '.statuses&amp;c=' + this.count + '"></' + 'script>');
                break;
            case 'public':
                document.write('<script type="text/javascript" charset="utf-8" src="' + this.server + '/statuses/public_timeline.json?cb=' + sObjName + '.statuses&amp;c=' + this.count + '"></' + 'script>');
                break;
            default:break;
        }
    }
};
ffstatuses = new fanfou.Timeline();
ffstatuses.createStatuses('ffstatuses');
 


在你要显示饭否的地方插入以下代码

<!--饭否输出代码开始-->
<script type="text/javascript">fanfou_name="vich";fanfou_count=1; fanfou_timeline="user";</script><script type="text/javascript" charset="utf-8" src="http://xxx.com/.../fanfou.js(你的JS文件存放路径)"></script>

<!--饭否输出代码结束->

说明:

fanfou_name="vich"  /将vich换成你自己的饭否ID

 

fanfou_count=/用于控制输出饭否消息的条数 ,1为1条。

fanfou_timeline="user" /user代表你自己的消息,此处可换成“ friends ”你和你朋友的消息;“public” 所有人的消息。


此代码可用于在博客或网站上,尤其是应用于网站公告、博客动态上。因为饭否能够支持网页、MSN/GTalk/QQ、手机短信,手机WAP上网等方式随时随地发送消息。

转载请注明:转载自微风博客
相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

我的SNS

相关标签

最新文章

技术摘要

最新评论及回复

热门文章