Skip to content

Instantly share code, notes, and snippets.

@kga
Created March 4, 2009 19:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kga/73960 to your computer and use it in GitHub Desktop.
Save kga/73960 to your computer and use it in GitHub Desktop.
// ==UserScript==
// @name STARCAT Channel Guide Prettifier
// @include http://tv.starcat.co.jp/channel/weekly/*/*
// ==/UserScript==
var colors = ['#DDFFEE', '#DDFFEE', '#FFFFDD', '#DDF5F5', '#EEEEFF', '#FFEEEE'];
var shows = ['NUMBERS' /* 'HOUSE', 'BONES', 'NCIS', 'NIP/TUCK', 'ブラックファイル' */];
GM_addStyle(colors.map(function (c, i) '.color' + i + ' { background-color: ' + c + '; }').join('\n'));
shows.forEach(function (show, i) {
$X('//td/a[contains(text(), "' + show + '")]', document.getElementById('body'), true).forEach(function (a)
a.parentNode.setAttribute('class', 'color' + i)
);
});
var now = $X('//strong[@class="tv_now"]');
scrollToElement(now);
now.parentNode.style.backgroundColor = '#CCFFCC';
$X('//th[@rowspan="1" or @rowspan="2" or @rowspan="3"]', document.getElementById('body'), true).forEach(function (th) {
th.innerHTML = th.innerHTML.replace(/(\d+)時/, function (a, b) b % 24 + '時');
});
// from Prototype.js
function scrollToElement (element) {
var pos = cumulativeOffset(element);
window.scrollTo(pos.left, pos.top);
}
function cumulativeOffset (element) {
var valueT = 0, valueL = 0, margin = 50;
do {
valueT += element.offsetTop || 0;
valueL += element.offsetLeft || 0;
element = element.offsetParent;
} while (element);
return { left: valueL, top: valueT - margin };
}
// from ShareOnTumblr - http://userscripts.org/scripts/show/9695
// originate at cho45 - http://lowreal.net/
function $X(exp, context, multi) {
if(typeof(unsafeWindow)!='undefined'){
Node = unsafeWindow.Node;
}
if (!context) context = document;
var resolver = function (prefix) {
var o = document.createNSResolver(context)(prefix);
return o ? o : (document.contentType == "text/html") ? "" : "http://www.w3.org/1999/xhtml";
}
var exp = document.createExpression(exp, resolver);
var value = function(node){
if(!node)
return;
switch (node.nodeType) {
case Node.ELEMENT_NODE:
return node;
case Node.ATTRIBUTE_NODE:
case Node.TEXT_NODE:
return node.textContent;
}
}
var result = exp.evaluate(context, XPathResult.ANY_TYPE, null);
switch (result.resultType) {
case XPathResult.STRING_TYPE : return result.stringValue;
case XPathResult.NUMBER_TYPE : return result.numberValue;
case XPathResult.BOOLEAN_TYPE: return result.booleanValue;
case XPathResult.UNORDERED_NODE_ITERATOR_TYPE: {
if(!multi)
return value(result.iterateNext());
result = exp.evaluate(context, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
var ret = [];
for (var i = 0, len = result.snapshotLength; i < len ; i++) {
ret.push(value(result.snapshotItem(i)));
}
return ret;
}
}
return null;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment