0.2.8 • Published 9 years ago

cc98-node-api v0.2.8

Weekly downloads
29
License
-
Repository
-
Last release
9 years ago

CC98-node-API

这是一个用来抓取cc98帖子的脚本.

由于cc98只能在浙江大学内网访问,所以此API只能在能访问浙江大学内网的机子上使用.

配置

  • 本API基于 Node.js,运行时需要在Node.js的环境下.
  • 请运行npm install cc98-node-api 来安装.

开始

var _98 = require("cc98-node-api");

var account = {
    user:, /*your user name*/
    password:, /*your password*/
    hash: /*如果能提供它的md5码的话,就写上去.这不是必要的.*/
}   
var cc98 = new _98(account);

cc98.login(function(data){
    console.log(data);
});

测试此API

首先进入 test/ 文件夹,创建一个名为user_config.js的文件,写入一下代码:

module.exports = {
    user:, /*your user name*/
    password:, /*your password*/  
}

然后用node运行此目录下任意一个文件即可得到测试结果。 (注意,有些数据(如读站短的ID)要根据自己的情况在测试源代码里修改。)

函数说明

以下仅摘录部分api,完整的api请参阅下面链接:

cc98.login(callback)

说明:用自己的帐号登录cc98. 如果跳过这一步,以游客身份访问cc98的话,只有部分功能能够工作. 请注意自己的配置设置.

此函数会调用形如 callback(data) 的函数,其中data是一个json变量:

data = {
     status : 0 | 1 //0或1,0表示示登录,1表示已登录.
     spec   : "success" | "password error" | ERROR_CODES
}
注[1]:cc98中,对于不同类型的错误会返回不同的代码,信息如下:

 var LOGIN_SUCCESS = 9898,
      USER_NOT_EXIST = 1001,
      USER_LOCKED = 1002,
      PASSWORD_ERROR = 1003,
      USERNAME_NULL = 101,
      PASSWORD_NULL = 102,
      XMLHTTP_ERROR = 103;

cc98.getBoard(callback)

说明:返回首页上各版的信息.

返回数据:形如 callback(data) 的格式, data 为以下格式的json数据:

{
        timestamp:new Date(),  //收到数据的时间
        board:
        [
                {
                        name:String,            //版名
                        boardid:String,         //版的boardid(用于写URL)
                        boardNumber:String,     //下属的子论坛数量
                        boardManager:String,    //版务
                        todayPosts:String,      //今日发帖量
                        totalPosts:String       //总发贴量
                },
                
                ...
        ]
}

cc98.getChildBoard(boardid,callback)

说明:返回版面列表上各子版的信息.

返回数据:形如 callback(data) 的格式, data 为以下格式的json数据:

{
        timestamp:new Date(),  //收到数据的时间
        board:
        [
                {
                        name:String,            //版名
                        intro:String,
                        boardid:String,         //版的boardid(用于写URL)
                        hasChildBoard:Boolean,  //看看有没有子版
                        boardManager:Array,    //版务
                        todayPosts:Number,      //今日发帖量
                        totalTopics:Number      //总共话题数
                        totalPosts:Number       //总发贴量
                },
                
                ...
        ]
}

cc98.getAllPostList(boardid,min_page,max_page,callback)

说明: 抓取到某个版块中所有的帖子标题信息. 参数: boardid : 版块的ID.这个可以见于每个版块所对应的URL中,或者getBoard()所返回的函数. min_page: 抓取的最小页数.最小为1. max_page: 抓取的最大页数.很不幸,即使不知道这个版块有多少页,这个参数也得填.不过当你真的想把所有页都搞下来的话,写Infinity吧. callback: 是一个函数.形如callback(data)的格式.

其中,data是一段json数据,格式如下:

[
        {totalPages:***,todayPosts:***,boardid:***,totalPosts:***},
        
        {
                timestamp:new Date(),
                pageNumber:***,
                
                list:
                [
                        {
                                topicName:****,
                                topicStatus:****,
                                postId:*****,
                                author:*****,
                                replyNum:****,
                                visitNum:****,
                                lastReply:new Date(),
                                replier:****
                        },

                        ...
                        
                ]
        },

        ...
]

cc98.getPostInfo(boardid,postid,min_page,max_page,callback)

说明 : 把一个帖子里的所有内容给抓下来.

boardid : 版块的ID.这个可以见于每个版块所对应的URL中,或者getBoard()所返回的函数.这是98一个很神经的地方.这个参数必须要要. postid : 这个帖子的ID.在URL中可见(形如 ID=*** 的格式),也可以在getAllPostList()中获得. min_page: 抓取的最小页数.最小为1. max_page: 抓取的最大页数.很不幸,即使不知道这个版块有多少页,这个参数也得填.不过当你真的想把所有页都搞下来的话,写Infinity吧. callback: 是一个函数.形如callback(data)的格式.

其中,data是一段json数据,格式如下:

[
        {totalPosts:***},
        
        {
                timestamp:new Date(),
                pageNumber:***,
                
                list:
                [
                        {
                                postTime:new Date(),
                                author:****,
                                authorFaceURL:****,
                                face:****,
                                subTitle:****,
                                info:****,
                                qmd:***
                        },

                        ...
                        
                ]
        },

        ...
]

附注: 这里稍微说明一下list中各参数的含义:

postTime : 发这个帖子的时间. author : 发这个帖子的user ID. face : 在98中每发一个帖子都会默认选定一个'发帖心情',默认为7.这个数字是从它的图片名字中提出来的.

subTitle : 紧接着face后面的小标题.一般除了首楼上会发这个玩意儿之外别的楼都不会发. info : 帖子的内容.注意是UBB格式. qmd : 签名档

cc98.Top10(callback)

说明:返回98的十大帖子.

返回数据:形如 callback(data) 的格式, data 为以下格式的json数据:

{
        timestamp:new Date(),  //收到数据的时间
        posts:
        [
                {
                            rank:Number,  //排名
                            name:String,  //帖子标题
                            author:String, //作者
                            boardid:"", //帖子所属板块ID
                            postid:"", //帖子ID
                            postTime:Date, //发贴时间
                            focus:"", //关注人数
                            replyPosts:"", //回帖数
                            hit:""  //点击
                },
                
                ...
        ]
}
0.2.8

9 years ago

0.2.6

10 years ago

0.2.2

10 years ago

0.2.0

10 years ago

0.1.6

10 years ago

0.1.4

10 years ago

0.1.2

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago