mbilab / ptt-bot

55 stars 12 forks source link

PTT-BOT

Overview

Ptt-bot 是一個開放原始碼的專案,它的目標在於提供開發者在開發批踢踢機器人所需要的底層架構與函式和上層應用程式,解決需要開發時會遇到的各種底層惱人的問題。Ptt-botJavaScript1 編寫,並需要在 node.JS 的環境下運行。Ptt-bot 使用 node.JS 原生的 Net 套件進行 Telnet2 的連線,並利用 iconv-liteString.js 套件分別解決 Big5編碼3 與字串解析的問題。

Ptt-bot is an open source node.js project for crawling data from PTT4.

關鍵字: 批踢踢機器人、自動化、PTT Crawler

How to use it?

當您想要某個功能時,可以藉由base-method組合您想要的機器人。舉一個可以自動爬某版文章內容為例:

/*  與Ptt-sever建立連線  */
myBot.login( id, ps, function(){ //請自行輸入帳號密碼

    /*  登入完後即停留在主功能表 */ 
    console.log('已進入主功能表');

});

/*  進入欲收集的電影版版中 */
myBot.toBoard('movie',function(){

    console.log('已進入movie板,接著收集文章!');

});

/*  從編號54635的文章開始收集 */
_indexForArticle = 54635; //global

/*  往後收集5篇文章    */
for( var _=0;_<5;_++ ){

    /*  先進入文章中  */
    myBot.toArticle(_+_indexForArticle,function(){ 

        console.log('進入'+_indexForArticle+'文章中');

    });

    /*  接著下載文章  */
    myBot.loadArticle(function(){

        /*  從getArticle()取得文章內容 */
        fs.writeFile('./'+'movie'+_indexForArticle+'_withoutANSI.txt', iconv.encode( myBot.escapeANSI( myBot.getArticle() ),'big5' ), function (err) {

            if (err) throw err;
            console.log('movie'+_indexForArticle+' 已經被儲存囉!');
            _indexForArticle++;

        });

    });

}

以上程式碼收錄在mybot.js中,然而以上的功能也已被寫入collectArticleFromBoard()中,只需要輸入版名、起始文章編號、欲收集總數和欲儲存的路徑便可以直接執行。

/*  與Ptt-sever建立連線  */
myBot.login( id, ps, function(){ //請自行輸入帳號密碼

    /*  登入完後即停留在主功能表    */
    console.log('已進入主功能表');

});

/*  直接執行收集文章的功能 */
myBot.collectArticleFromBoard('movie',54600,100,'./');

若您有開發了有趣的功能,請您別吝嗇分享給我們! 讓我們也可以收錄於applied-method中。:)

Development

第一次可以先執行此指令, 以安裝所有套件。 或自行個別安裝(參閱 Require)。

    npm i LiveScript
    ./package.ls
    npm i

Require

string.js

    npm install --save string 

iconv-lite

    npm install iconv-lite 

Base-method

Applied-method

References

Contribute to ptt-bot

我們都希望Ptt-bot這個專案能夠持續的進步! 若有發現臭蟲或問題,請幫我們在Issue留言告知我們詳細情形。 若願意分享您的程式碼,也請歡迎Pull Request。:)