non vorrei lavorare

ブログ名の通りです。javascript three.js mruby rust OCaml golang julialang blender

ココログに頂いたコメントを簡単にチェックする

今年もあと2ヶ月!

なかなか体調の良くならない息子は両耳とも中耳炎で両耳とも鼓膜切開しました。その後の経過は順調なようで来週こそは保育園に登園出来るかなとホッとしているkjunichiです。

コメント気づかず放置しており。。

7月辺りからのコメントに気づかずに先日まで返信できずにいました。 それではせっかくコメント頂いた皆様に失礼だろうということで、 PhantomJSでコメントをコマンドラインでチェック出来るような JavaScriptを作成しました。 そんなコメントを結果的に放置していた人間が言うのもなんなんですが、 ブログに頂くコメントは本当にモチベーションが上がるありがたいものなんです。

画面遷移の処理が面倒

PhantonJSでの画面遷移なのですが、ググっても私のスキルでは これといったよいページが見つからず、location.hrefを使う あまり応用の利かない方法も駆使しての実装となってます。

var COCOLOG_ID = "your id";
var COCOLOG_PWD = "your password";
var COCOLOG_BLOG_ID = "your blog id"

var page = require('webpage').create();

var url = "https://login.nifty.com/service/logout?s=cocoapp&subs=cocolog";
var counter = 0;
var loginCnt = 0;
page.open(url, function (status) {
	//console.log("page.open status = "+status + ", url = "+page.url);
	//page.render("cocologin_"+(counter++)+".png");
	if(status != "success") {
		//console.log("0:network error "+status);
        phantom.exit(1);
	}
	//console.log("ans = "+page.url.indexOf("https://login.nifty.com/service/logout?s=cocoapp&subs=cocolog"));
	if(page.url.indexOf("https://login.nifty.com/service/logout?s=cocoapp&subs=cocolog") > -1) {
		// ログアウト画面
		//console.log("logout start");
		//page.render("cocologin0.png");
		url="https://login.nifty.com/service/login?s=cocoapp";
		page.evaluate(function() {
			location.href="https://login.nifty.com/service/login?s=cocoapp";
		});
		//console.log("logout end");
		return;
	}
	//console.log("ans2 = "+page.url.indexOf("https://login.nifty.com/service/login?s=cocoapp"));
	if(page.url.indexOf("https://login.nifty.com/service/login?s=cocoapp") == 0) {
		//if(loginCnt > 0) {
			//console.log("start login");
			//page.render("cocologin.png");

			var result = evaluate(page,function (id,pwd) {
				if(document.getElementById("username")==null) {
					return "false";
				}
	    		document.getElementById("username").value = id;
    			document.getElementById("password").value = pwd;
        		document.getElementById("form1").submit();
        		return "success";
    		},COCOLOG_ID,COCOLOG_PWD);
    		//console.log("login : "+result);
    		//page.render("cocologin2.png");    	
			//console.log("end login");

		//}
		//loginCnt++;
		return;
	}
	//console.log("ans 3 = " + page.url.indexOf("http://app.cocolog-nifty.com/t/app/"));

	if(page.url.indexOf("http://app.cocolog-nifty.com/t/app/weblog/post?__mode=list_comments&blog_id=") == 0) {
		//page.render("cocologComment.png");
		var cmtTbl = page.evaluate(function(){
			return document.getElementsByClassName("tableselect")[0].innerHTML;
		});
		console.log(cmtTbl);
		phantom.exit(0);
	}
	if(page.url.indexOf("http://app.cocolog-nifty.com/t/app/") == 0) {
		//console.log("http://app.cocolog-nifty.com/t/app/");
		evaluate(page,function(blog_id) {
			location.href="http://app.cocolog-nifty.com/t/app/weblog/post?__mode=list_comments&blog_id="+blog_id;
		},COCOLOG_BLOG_ID);
		return;
	}

});

/*
 * This function wraps WebPage.evaluate, and offers the possibility to pass
 * parameters into the webpage function. The PhantomJS issue is here:
 * 
 *   http://code.google.com/p/phantomjs/issues/detail?id=132
 * 
 * This is from comment #43.
 */
function evaluate(page, func) {
    var args = [].slice.call(arguments, 2);
    var fn = "function() { return (" + func.toString() + ").apply(this, " + JSON.stringify(args) + ");}";
    return page.evaluate(fn);
}

COCOLOG_BLOG_IDは?

COCOLOG_BLOG_IDは、ちょっと分からないと思うので補足します。 ココログの管理ページでblog_id=nnnnと表示されるnnnnの部分を入れてください。

関連記事