読者です 読者をやめる 読者になる 読者になる

続・FOXチャンネルの番組表を見やすくするGreasemonkey

greasemonkey


日付を見なくても今日の列がどこか確認できるようになったので、このアドレスを直接開いてみられるようになった。

まともに動く保証はないので使う場合は自己責任で。

// ==UserScript==
// @name           FOX channel list highlight
// @namespace      http://d.hatena.ne.jp/KGA/
// @description    FOX channel list highlight
// @include        http://www.foxjapan.com/tv/cgi-bin/timetable/timetable2.cgi
// ==/UserScript==

(function() {
  var now = new Date();

  var num = Math.floor((now.getHours() * 60 + now.getMinutes()) / 30 - 7);
  if (num <= 0) num += 48;
  var xpath1 = ['/html/body/table/tbody/tr/td[1]/table/tbody/tr[', num, ']/td'].join('');
  var td = document.evaluate(
    xpath1, document, null,
    XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
  td.style.backgroundColor = '#afff83';
  var day = (now.getDay() == 0) ? 8 : now.getDay() + 1;
  if (now.getHours() < 4) {
    if (day > 2) day--;
    else day = 8;
  }

  var xpath2 = ['/html/body/table/tbody/tr/td[', day, ']/table/tbody/tr'].join('');
  var tds = document.evaluate(
    xpath2, document, null,
    XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
  for (var i = 0; i < tds.snapshotLength; i++) {
    var cell = document.evaluate(
      './/td', tds.snapshotItem(i), null,
      XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
    cell.style.backgroundColor = '#e3f4ff';
  }

  if ((num -= 3) < 0) num = 0;
  window.scroll(0, num * 57);
}());

日付判定とかの部分が激しく汚いし、変数名の付け方が適当すぎる。
20行目をif (day > 1) day--;からif (day > 2) day--;に修正。