Headline-Tickerの取得記事一覧を見るSeaHorseスクリプト

時間を無駄にしてきたので

SleipnirでのRSSといえばHeadline-Readerばかりが話題になりがちですね。
かくいう私も愛用しておりますけど。

ただそれと同じくらいHeadline-Tickerにも普段お世話になっています。


ただ、個人的に問題があって作業しながら横目でチラッと見て、手が空いたときにマウスホイールでスクロールして探すってことがよくあります。
でも、そんな時に限って見つからない1周しても見つからない。
さらに、10数秒前に見かけた記事でも割とあるので困りものです。


というわけで、一覧を出力するSeeaHorseスクリプトを書きました。
インスト後に"about:Headline-Ticker-Feed-List"開いてみてね。


Headline-TickerFeedList.user.js

// ==UserScript==
// @name         Headline-Ticker Feed List
// @author       破楽戸.*
// @include      about:Headline-Ticker-Feed-List
// @type         SleipnirScript
// ==/UserScript==

(function() {
document.body.removeChild(document.body.firstChild);
var d = document.createElement("div");
d.style.width = Math.floor(document.body.clientWidth / 350) * 350 + "px";
d.style.margin = "0 " + (((document.body.clientWidth - Math.floor(document.body.clientWidth / 350) * 350) / 2) - 10) + "px";
document.body.appendChild(d);

var pnir = sleipnir.api;
var bool = true;
var fso = sleipnir.CreateObject("Scripting.FileSystemObject");
var strm = sleipnir.CreateObject("ADODB.Stream");

var prefs = pnir.AppPath+"..\\prefs\\plugins.ini";
if(!fso.FileExists(prefs)) {
	bool = false;
}
strm.type = 2;
strm.charset = "utf-8";
strm.open();
strm.loadFromFile(prefs);
var ini = strm.readText(-1);
strm.close();
var ls = ini.split(/\r\n/);
for(var i = 0; i < ls.length; i++){
	var l = ls[i];
	if(l.match(/^Extension\d*=HeadlineTickerExtension\.fx/) != null) {
		bool = true;
		break;
	}else if(l.match(/^Extension\d*=HeadlineToolbarExtension\.fx/) != null) {
		bool = true;
		break;
	}else {
		bool = false;
	}
}

if(bool) {

	var path = UserFolder + "headlineticker\\temp\\headlineticker.tic";
	if(fso.FileExists(path)){
		strm.type = 2;
		strm.charset = "utf-8";
		strm.open();
		strm.loadFromFile(path);
		var text = strm.readText(-1);
		strm.close();
		
		var lines = text.split(/\r\n/);
		for(var i = 0; i < lines.length; i++){
			var line = lines[i];
			
			var txt = line.split("\t");
			var div = document.createElement("div");
			div.style.border = "3px solid #94a6c0";
			div.style.background = "ffffcc";
			div.style.fontSize = "90%";
			div.style.margin = "15px";
			div.style.padding = "0.5em";
			div.style.width = "320px";
			div.style.height = "240px";
			div.style.float = "left";
			div.style.overflow = "auto";
			
			/*
			txt[0] : 取得時間(TDateTime型)
			txt[1] : サイト
			txt[2] : タイトル
			txt[3] : RSS URI
			txt[4] : ????
			txt[5] : 概要
			*/
			if(txt[2].match(/^(PR:|AD:)/) == null){
				var d_num = txt[0].length != 0 ? numberToDate(parseInt(txt[0])) : "--月--日";
				var t_num = txt[0].length != 0 ? numberToTime(parseFloat(txt[0]) - parseInt(txt[0])) : "--時--分";
				var summary = txt[5];
				if(summary.length==0) {
					summary = "概要はありません(´・ω・`)";
				}
				div.innerHTML = txt[1]+" "+d_num+" "+t_num+"<br /><a href='"+txt[3]+"'>◇"+txt[2]+"◇</a><br /><br />"+summary;
				d.appendChild(div);
			}
		}
		
	}else {
		alert("ファイルが存在しないよ!");
	}
	
}else {
	alert("Headline-Ticker がインストールされてないかオフになっているよ");
}
	
	function numberToDate(n) {
		var num = new Date(new Date("1899/12/30").getTime() + n * 24 * 60 * 60 * 1000);
		return wrapDigits(num.getMonth()+1) + "月" + wrapDigits(num.getDate()) + "日";
	}
	
	function numberToTime(n) {
		var num = n,cnt = -1,m = 1/(24*60);
		while(num >= 0) {
			num -= m;
			cnt++;
		}
		return wrapDigits(parseInt(cnt/60)) + ":" + wrapDigits(parseInt(cnt%60));
	}
	
	function wrapDigits(num) {
		num = String(num);
		return (num.length < 2) ? new Array((2 - num.length) + 1).join("0") + num : num;
	}
	
}());


時間の計算ミスってて1分くらいずれる場合があるんだけど気にしない。
そういや、TDateTime型って"1989/12/30 00:00:00"から始まるのね。
たまに出る謎の日付「12月30日」の理由がやっと分かった。