Greasy Fork 还支持 简体中文。

Show48 Local Watched Indicator

Add Watched indicator to show48.com

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==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);
}