NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Show48 Local Watched Indicator
// @namespace http://sk3dsu-phantasy.com/
// @version 0.10
// @description Add Watched indicator to show48.com
// @author sk3dsu (Fadli)
// @match *://*.show48.com/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_deleteValue
// ==/UserScript==
function GM_main ($) {
// Video Page itself
if( $('#video-toolbar').length )
{
// Area below the video
if ($(".video-toolbar-inner")[0])
{
var urlPath = window.location.pathname;
urlPath = urlPath.slice(1);
urlPath = urlPath.slice(0, -1);
var theValue = GM_getValue(urlPath, 0);
var newDiv = document.createElement("div");
newDiv.className = "video-toolbar-item";
var spanItem = createPawWatchSpanElement(false);
spanItem.urlPath = urlPath;
spanItem.addEventListener('click', pawClickEventListener, false);
if (theValue)
{
spanItem.style.color = "green";
}
newDiv.appendChild(spanItem);
var parentDiv = document.getElementsByClassName("video-toolbar-inner")[0];
parentDiv.insertBefore(newDiv, parentDiv.childNodes[3]);
}
// Side Bar Latest Video Area
if ($('#advanced_popular_videos-5').length)
{
var videoItems = $('#advanced_popular_videos-5 .item-info');
for (i = 0; i < videoItems.length; i++)
{
var videoItem = videoItems[i];
var itemHref = videoItem.childNodes[1].childNodes[1].childNodes[1];
var urlPath = getUrlPath(itemHref);
var theValue = GM_getValue(urlPath, 0);
var spanItem = createPawWatchSpanElement(false);
if (theValue)
{
spanItem.style.color="green";
}
videoItem.childNodes[1].insertBefore(spanItem, videoItem.childNodes[1].childNodes[2]);
}
}
// Related side-bar in Video Page
if ($('#text-8').length)
{
var liItems = $('#text-8 li');
for (i = 0; i < liItems.length; i++)
{
var itemHref = liItems[i].childNodes[0];
var urlPath = getUrlPath(itemHref);
var theValue = GM_getValue(urlPath, 0);
var spanItem = createPawWatchSpanElement(true);
spanItem.style.fontSize = "100%";
spanItem.style.color = "grey";
spanItem.style.width = "20px";
if (theValue)
{
spanItem.style.color="green";
}
liItems[i].insertBefore(spanItem, liItems[i].childNodes[0]);
}
}
}
// Direct access to video-item
else if ($('.video-item').length)
{
for (i = 0; i < $('.video-item').length; i++)
{
var videoItem = $('.video-item')[i];
var itemHeads = videoItem.getElementsByClassName("item-head");
for (j = 0; j < itemHeads.length; j++)
{
var itemHref = itemHeads[j].childNodes[1].childNodes[0];
// Span Item without click listener
var spanItem = createPawWatchSpanElement(true);
spanItem.style.fontSize = "100%";
spanItem.style.color = "grey";
spanItem.style.width = "20px";
spanItem.urlPath = getUrlPath(itemHref);
var theValue = GM_getValue(spanItem.urlPath, 0);
if (theValue)
{
spanItem.style.color="green";
}
itemHeads[j].childNodes[1].insertBefore(spanItem, itemHeads[j].childNodes[1].childNodes[0]);
}
}
}
// Any Page with video-listing and thumbnail e.g. show, drama
else if ($('.video-listing').length)
{
var itemHeads = $(".item-head");
for (i = 0; i < itemHeads.length; i++)
{
var itemHref = itemHeads[i].childNodes[0].childNodes[0];
var spanItem = createPawWatchSpanElement(true);
spanItem.style.fontSize = "100%";
spanItem.style.color = "grey";
spanItem.style.width = "20px";
spanItem.urlPath = getUrlPath(itemHref);
spanItem.addEventListener('click', pawClickEventListener, false);
var theValue = GM_getValue(spanItem.urlPath, 0);
if (theValue)
{
spanItem.style.color="green";
}
itemHeads[i].childNodes[0].insertBefore(spanItem, itemHeads[i].childNodes[0].childNodes[0]);
}
}
// Pages with table
else if ($('.tablepress').length)
{
var table = $('.tablepress')[0];
var totalCell = table.rows[0].cells.length;
var lastColumn= table.rows[0].cells[totalCell - 1];
// Only interested when header has 'Stream' column
if (lastColumn.innerHTML == "Stream")
{
var tblHead = table.tHead;
var tblBody = table.tBodies[0];
// Add new column to Table Header
var newTh = document.createElement('th');
newTh.className = "column-4 sorting_disabled";
newTh.innerHTML = "Watched";
tblHead.rows[0].appendChild(newTh);
for (var i = 0; i < tblBody.rows.length; i++)
{
var newCell = tblBody.rows[i].insertCell(-1);
var spanItem = createPawWatchSpanElement(true);
spanItem.style.fontSize = "150%";
spanItem.style.color="grey";
lastColumn = tblBody.rows[i].cells[totalCell-1].childNodes[0];
if (typeof lastColumn === 'object')
{
// last column has a link object?
if (lastColumn.tagName == 'A')
{
var itemHref = tblBody.rows[i].cells[totalCell-1].childNodes[0];
spanItem.urlPath = getUrlPath(itemHref);
spanItem.addEventListener('click', pawClickEventListener, false);
var theValue = GM_getValue(spanItem.urlPath, 0);
if (theValue)
{
spanItem.style.color="green";
}
}
}
newCell.appendChild(spanItem);
}
}
}
// Pages with column-inner
else if ($('.column-inner ').length)
{
var columns = $(".column-inner");
for (i = 0; i < columns.length; i++)
{
var itemHref = columns[i].childNodes[0];
var spanItem = createPawWatchSpanElement(true);
spanItem.style.fontSize = "100%";
spanItem.style.color = "grey";
spanItem.style.width = "20px";
spanItem.urlPath = getUrlPath(itemHref);
spanItem.addEventListener('click', pawClickEventListener, false);
var theValue = GM_getValue(spanItem.urlPath, 0);
if (theValue)
{
spanItem.style.color="green";
}
columns[i].insertBefore(spanItem, columns[i].childNodes[0]);
}
}
}
function createPawWatchSpanElement(iconOnly) {
var span = document.createElement("span");
span.id = "pawWatch";
span.className = "fa fa-paw";
span.style.opacity = "0.6";
if (iconOnly)
{
span.style.color = "green";
span.style.fontSize = "200%";
}
else
{
span.style.color = "grey";
span.style.fontSize = "100%";
span.innerHTML = " Watched";
}
return span;
}
function getUrlPath(itemHref) {
var withoutProtocol = itemHref.href.slice(7);
var urlExplode = withoutProtocol.split("/");
var urlPath = urlExplode[1];
return urlPath;
}
function pawClickEventListener(evt) {
var theValue = GM_getValue(evt.target.urlPath, 0);
if (theValue)
{
evt.target.style.color = "grey";
GM_deleteValue(evt.target.urlPath);
}
else
{
evt.target.style.color = "green";
GM_setValue(evt.target.urlPath, 1);
}
}
if (typeof jQuery === "function") {
console.log ("Running with local copy of jQuery!");
GM_main (jQuery);
}
else {
console.log ("fetching jQuery from some 3rd-party server.");
add_jQuery (GM_main, "1.11.2");
}
function add_jQuery (callbackFn, jqVersion) {
var jqVersion = jqVersion || "1.11.2";
var D = document;
var targ = D.getElementsByTagName ('head')[0] || D.body || D.documentElement;
var scriptNode = D.createElement ('script');
scriptNode.src = 'http://ajax.googleapis.com/ajax/libs/jquery/'
+ jqVersion
+ '/jquery.min.js'
;
scriptNode.addEventListener ("load", function () {
var scriptNode = D.createElement ("script");
scriptNode.textContent =
'var gm_jQuery = jQuery.noConflict (true);\n'
+ '(' + callbackFn.toString () + ')(gm_jQuery);'
;
targ.appendChild (scriptNode);
}, false);
targ.appendChild (scriptNode);
}