リピート放送を見逃さないようにするGreasemonkey

追記 2007/10/05

コードを書き直し、Userscripts.orgにアップロードしました。以下の内容は古いです。


同じネタばっかりでアレですが、自分で便利なので書いた。下の画像のように同じ番組を色分けする。(クリックで拡大)

(function() {
    var shows = [
        {
            regex : /HOUSE/,
            color : '#FFEEEE'
        },
        {
            regex : /BONES/,
            color : '#EEFFEE'
        },
        {
            regex : /24 \u30b7\u30fc\u30ba\u30f3/, // 24 シーズン
            color : '#EEEEFF'
        },
        {
            regex : /\u30af\u30a3\u30a2\u30fb\u30a2\u30a4/, // クィア・アイ
            color : '#EEEEEE'
        },
        {
            regex : /\u30de\u30a4\u30cd\u30fc\u30e0\u30fb\u30a4\u30ba\u30fb\u30a2\u30fc\u30eb/,
            // マイネーム・イズ・アール
            color : '#DDF5F5'
        }
    ];

    function highlightTVShow (show) {
        $A(document.links).filter(function (link) {
            return link.innerHTML.match(show.regex);
        }).forEach(function (elem) {
            elem.parentNode.style.backgroundColor = show.color;
        });
    }
    
    shows.forEach(highlightTVShow);
    
    function $A (ite) {
        var results = [];
        for (var i = 0, len = ite.length; i < len; i++) {
            results.push(ite[i]);
        }
        return results;
    }
})();

$APrototype.jsから拝借。現在放送してる番組のところがちょっと不完全だけどまぁいいか。

ついでに d:id:KGA:20061104:1162574028 で書いたやつのXPath

    var baseURL  = 'http://tv.starcat.co.jp';
    var xpathExp = '//strong[@class="tv_now"]';
    var result = document.evaluate(xpathExp, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
    document.location = [
        baseURL, document.location.pathname, '#', result.singleNodeValue.firstChild.id
    ].join('');

XPathにしたのと、リロードするとどんどんURLが長くなっちゃっうのを修正。前版では自分でidつけてたけどその必要もなかった。