Greasy Fork is available in English.
this is an include script meant for internal testing
此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.greasyfork.org/scripts/8972/136093/primewire%20fix.js
// ==UserScript== // @name primewire fix // @namespace primewire fix // @description this is an include script meant for internal testing // @author drhouse // @include https://www.primewire.ag/* // @version 1.0.2 // @run-at document-end // ==/UserScript== (function ($) { var lobject = $('.logged_username a').get() if (!lobject) { $('.warning_message').append($('<div>').css({ color: 'red' }).setText("You must be logged in for this userscript to work").get()) return } var queryString = (function (s) { var q = s.split('?')[1] var qs = {} if (q) { q.split('&').forEach(function (o) { var t = o.split('='); qs[unescape(t[0])] = unescape(t[1]) }) } return qs })(document.URL) var groups = __getValue('groups'); // $('.header_search').swap($('.nav_tabs')) var uname = lobject.innerHTML; var DEBUG = false; var __groups = ['fav','towatch','watched']; if (!('watched' in groups) ) { set_up(); } function set_up() { $('<div>').attr('id','blanket').css({ 'position':'absolute', 'backgroundColor':'#666', 'opacity':'0.5', 'left':'0px', 'top':'0px', 'width':'100%', 'height':'100%' }).appendTo(document.body) $('<div>').attr('id','fs_info_box').css({ 'backgroundColor':'white', 'width':'600px', 'border':'1px solid black', 'borderRadius': '20px', 'margin':'auto', 'height':'400px', 'position':'absolute', 'top':'25%', 'left':'25%', 'padding':'5px', 'fontSize':'14px' }).setText('1channel.ch Fix needs to set up. We need to get the list of Watched To Watch and Favorite groups so when browsing you can see which are in what group.') .append($('<ul>').css({'padding':'50px'}) .append($('<li>').attr('id','fav').setText('Favorites').append($('<b>')).append($('<progress>'))) .append($('<li>').attr('id','watched').setText('Watched').append($('<b>')).append($('<progress>'))) .append($('<li>').attr('id','towatch').setText('To Watch').append($('<b>')).append($('<progress>'))) ) .appendTo(document.body) $('#fs_info_box ul li').css({'opacity':'1'}) $('#fs_info_box progress').attr('value','0').attr('max','100').css({'display':'block'}); var _groups = ['fav','watched','towatch']; $(document.body).css({ 'overflowY':'hidden' }) get_page(); function get_page(page,n) { var page = page||_groups.shift() if (page) { groups[page] = groups[page]||[] var n = n||1 var o = $('#'+page) _get('/profile.php?user='+uname+'&'+page+'=&page='+n,function(r) { var s = r.responseText; var tot = s.match(/\(( [1-9]\d* )\)<\/strong>/i) && RegExp.$1; if (tot) { var l_page = s.match(/&page=(\d+)"> >>/) && RegExp.$1 var done = !l_page o.children('b',1).clear().setText(tot + " total items page: "+n+'/'+(l_page||n)); var reg = /class="index_item"> <a href="\/(?:tv|watch)-(\d+)/g,t while ((t = reg.exec(s)) !== null) { // console.log("Group: '%s' Item: '%s'",page,t[1]) groups[page].push(t[1]); } o.children('progress',1).attr('max',l_page||n).attr('value',n) if (done) { get_page() } else { get_page(page,++n) } } else { console.log(s) o.children('b',1).clear().setText(' No Items'); o.children('progress',1).attr('value',100); get_page() } }); } else { $('#fs_info_box').append($('<h1>').setText('DONE')); __setValue('groups',groups); setTimeout(function() { $('#fs_info_box,#blanket').fadeOut(1,function() { this.remove() $(document.body).css({'overflow-y':'auto'}); }); },1000) } } } GM_addStyle('x-btn-icon { \ width: 11px;\ height: 13px;\ }\ .x-btn:active,.options_menu + .x-btn { \ border-color: #999 !important;\ background: #DDD !important;\ background-image: -moz-linear-gradient(top,#cccccc,#ffffff) !important;\ background-image: -webkit-gradient(linear,left top,left bottom,from(#cccccc),to(#ffffff)) !important;\ filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#cccccc,endColorStr=#ffffff) !important;\ opacity:1 !important\ }\ .x-btn:hover { \ border-color: #999;\ background: #F3F3F3;\ background-image: -moz-linear-gradient(top,#ffffff,#ebebeb);\ background-image: -webkit-gradient(linear,left top,left bottom,from(#ffffff),to(#ebebeb));\ filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#ffffff,endColorStr=#ebebeb);\ outline: 0;\ -moz-box-shadow: 0 0 3px #999;\ -webkit-box-shadow: 0 0 3px #999;\ box-shadow: 0 0 3px #999;\ }\ .x-btn,.options_menu {\ padding: 0 .5em;\ height: 2.0833em;\ border: 1px solid #CCC;\ color: black;\ background: #F6F6F6;\ background-image: -moz-linear-gradient(top,#ffffff,#efefef);\ background-image: -webkit-gradient(linear,left top,left bottom,from(#ffffff),to(#efefef));\ filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#ffffff,endColorStr=#efefef);\ -moz-border-radius: 3px;\ -webkit-border-radius: 3px;\ border-radius: 3px;\ white-space: nowrap;\ vertical-align: middle;\ cursor: pointer;\ overflow: visible;\ opacity:0;\ }\ .episode_prev_next button {\ padding:0 .5em;\ -moz-border-radius: 3px;\ -webkit-border-radius: 3px;\ border-radius: 3px;\ }\ .index_item:hover .x-btn,.featured_movie_item:hover .x-btn,.item_similar:hover .x-btn {\ opacity:1 !important;\ }\ .index_item {\ max-height:305px;\ min-height:305px;\ }\ .index_item img { \ display:block !important;\ width:150px;\ min-height:222px\ }\ .index_container { \ \ }\ .options_menu { \ position: absolute;\ height: auto !important;\ width: auto !important;\ opacity:1 !important;\ top: 2.2em;\ list-style:none;\ width:100px;\ }\ \ .options_menu li:not(.label) { \ font-size: 12px;\ padding-left:5px;\ \ }\ .options_menu li:not(.label):hover {\ background-color: #EFFFEF;\ color:black;\ }\ .options_menu li {\ min-width:100px;\ }\ .options_menu li.label { \ font-size: 12px;\ color: white;\ padding:0px;\ background-color: #3c3c3c;\ height:10px\ line-height:20px;\ font-weight:bold;\ border:1px solid black;\ }\ .loader {\ opacity: .5;\ position:absolute;\ top:0;\ left:5;\ background-color:#EFEFEF;\ }\ .hide {\ display:none !important;\ }\ .comments_box_vote { position: relative; }\ #autoc {\ position:absolute;\ padding:3px;\ border:2px solid black;\ padding:5px;\ background-color: #fff; \ border: 2px solid #666;\ border-top:none;\ -webkit-border-radius: 0px 30px 30px; \ -moz-border-radius: 0px 30px 30px; \ border-radius: 0px 30px 30px; \ -webkit-box-shadow: 2px 15px 15px #888; \ -moz-box-shadow: 2px 15px 15px #888; \ box-shadow: 2px 15px 15px #888;\ width: 320px;\ z-index:200;\ display:none;\ }\ #autoc li {\ \ list-style: none;\ background-color: white;\ border: 1px solid #EEE;\ color: black;\ padding:2px;\ }\ #autoc li:first-child {\ border-top-right-radius: 30px;\ }\ \ #search_term:focus ~ ul {\ display: block !important;\ }\ #autoc:hover {\ display: block !important;\ }\ #autoc li:last-child {\ border-bottom-right-radius: 30px;\ border-bottom-left-radius: 30px;\ }\ #autoc li:hover,#autoc li.current {\ background-color:#E8F0F4;\ }\ '); var waiting_image = "data:image/gif;base64,R0lGODlhgACAAKIEAP///93d3bu7u5mZmf///wAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFBQAEACwAAAAAgACAAAAD/0i63P4wykmrvTjrzbv/oAaMQGieaEaSaeu66/rOdBezda5P97j/wEWvFCzmhsbkDKlsEgLQwIfZGVgHTk006qFurtfsZbu19argsJhC5nK8mbR6LWm7Reev3Eqf2O8YcBZ7c30Qf1J4N3p7hmx/ijEahFiOfpAqeRiUlo92mYubhJ2enxeCEpSVpHWYFqgRnKyXrhSwD6qzpWSnmhSyurRtr76po8G7ZRW3DcDIraY8xRDOzxGIiRLMCrnWyYAQ2wTV3oeI0qGx5OUP5+g4xo10AvQCIe7a8OryH2Af9fVA4AuxLk6aDgATfqgF4hgafhkSSuzAsB9EgwUpSNzIYf9YCjkcVBXCsJHjBmUt/DESibDkRHbURI7U4NIkTG4yZ3Ko+bJcTp0eeCr09pOPC6EAkRVdNQNpQFJLfzil1ylqkKmOijZBmlXmGp5dMyapGfbivJ6GzDpKChXozbdw48qdS7eu3bt48+rdy7cv36XdfAJ2yGBw4GeGqyU+LIQIARmQI0uadmGxM8uEGysYMpmIDxaRH2JWiXM0aQY+HnsGzXpzCXG/TJ+WfVqzatdnUn9+HTokbaMLfodbvaj3btWtU29G7bgZbVymI0jmjXy67uLNszd3Ptqv9+/gw4sfT768+fPo06unUTutWzpqxcTPwli+WCMs3d//kbPsfvb/P/lXXw5WCTjgCwVakiCCWgWz4AkP6hKhBxNK2GBDF95U4SAB0pUhRvlN8h6FI+4TIoj/QdcehitW0N9K88UGEoQxTnCiKDXKeB###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###REAoQAcnJhBXBqioqSlT6qqG6WmTK+rsa1NtaGsuEu6o7yXubojsrTEIsa+yMm9SL8osp3PzM2cStDRykfZ2tfUtS/bRd3ewtzV5pLo4eLjQuUp70Hx8t9E9eqO5Oku5/ztdkxi90qPg3x2EMpR6IahGo###xp8AGtigwQAIfkEBQUABAAsHwBOAFcAMAAAA/9Iutz+MMo36pg4682J/V0ojs1nXmSqSqe5vrDXunEdzq2ta3i+/5DeCUh0CGnF5BGULC4tTeUTFQVONYAs4CfoCkZPjFar83rBx8l4XDObSUL1Ott2d1U4yZwcs5/xSBB7dBMBhgEYfncrTBGDW4WHhomKUY+QEZKSE4qLRY8YmoeUfkmXoaKInJ2fgxmpqqulQKCvqRqsP7WooriVO7u8mhu5NacasMTFMMHCm8qzzM2RvdDRK9PUwxzLKdnaz9y/Kt8SyR3dIuXmtyHpHMcd5+jvWK4i8/TXHff47SLjQvQLkU+fG29rUhQ06IkEG4X/Rryp4mwUxSgLL/7IqFETB8eONT6ChCFy5ItqJomES6kgAQAh+QQFBQAEACwKAE4AVwAwAAAD/0i63A4QuEmrvTi3yLX/4MeNUmieITmibEuppCu3sDrfYG3jPKbHveDktxIaF8TOcZmMLI9NyBPanFKJp4A2IBx4B5lkdqvtfb8+HYpMxp3Pl1qLvXW/vWkli16/3dFxTi58ZRcChwIYf3hWBIRchoiHiotWj5AVkpIXi4xLjxiaiJR/T5ehoomcnZ+EGamqq6VGoK+pGqxCtaiiuJVBu7yaHrk4pxqwxMUzwcKbyrPMzZG90NGDrh/JH8t72dq3IN1jfCHb3L/e5ebh4ukmxyDn6O8g08jt7tf26ybz+m/W9GNXzUQ9fm1Q/APoSWAhhfkMAmpEbRhFKwsvCsmosRIHx444PoKcIXKkjIImjTzjkQAAIfkEBQUABAAsAgA8AEIAQgAAA/VIBNz+8KlJq72Yxs1d/uDVjVxogmQqnaylvkArT7A63/V47/m2/8CgcEgsGo/IpHLJbDqf0Kh0Sj0FroGqDMvVmrjgrDcTBo8v5fCZki6vCW33Oq4+0832O/at3+f7fICBdzsChgJGeoWHhkV0P4yMRG1BkYeOeECWl5hXQ5uNIAOjA1KgiKKko1CnqBmqqk+nIbCkTq20taVNs7m1vKAnurtLvb6wTMbHsUq4wrrFwSzDzcrLtknW16tI2tvERt6pv0fi48jh5h/U6Zs77EXSN/BE8jP09ZFA+PmhP/xvJgAMSGBgQINvEK5ReIZhQ3QEMTBLAAAh+QQFBQAEACwCAB8AMABXAAAD50i6DA4syklre87qTbHn4OaNYSmNqKmiqVqyrcvBsazRpH3jmC7yD98OCBF2iEXjBKmsAJsWHDQKmw571l8my+16v+CweEwum8+hgHrNbrvbtrd8znbR73MVfg838f8BeoB7doN0cYZvaIuMjY6PkJGSk2gClgJml5pjmp2YYJ6dX6GeXaShWaeoVqqlU62ir7CXqbOWrLafsrNctjIDwAMWvC7BwRWtNsbGFKc+y8fNsTrQ0dK3QtXAYtrCYd3eYN3c49/a5NVj5eLn5u3s6e7x8NDo9fbL+Mzy9/T5+tvUzdN3Zp+GBAAh+QQJBQAEACwCAAoAMABXAAAD60i63P4LSACrvW1OzLvSmidW4DaeTGmip7qyokvBrUuP8o3beifPPUwuKBwSLcYjiaeEJJuOJzQinRKq0581yoQEvoEelgAG67Dl9K3LSLth7IV7zipV5nRUyILPT/t+UIBvf4NlW4aHVolmhYyIj5CDW3KAlJV4l22EmptfnaChoqOkpaanqKk6Aqytrq+wrzCxtLWuKLa5tSe6vbIjvsECvMK9uMW2s8ixqs3Oz9DR0tPUzwPXA6PY26Db3tmX396U4t9W5eJQ6OlN6+ZK7uPw8djq9Nft9+Dz9FP3W/0ArtOELtQ7UdysJAAAOw%3D%3D" var host = window.location.host; var show_menu = false function kill_menu(n) { setTimeout(function () { if (show_menu) return show_menu = false $('.options_menu').remove() }, 10); } $('body').listen('click', kill_menu); $('.search_container').css({ 'position': 'relative' }).append($('<ul>').listen('click', function (e) { $(e.currentTarget).clear() }).attr('id', 'autoc')); $('#search_term').listen(['keyup', 'focus'], function (e) { if ([40, 38].indexOf(e.keyCode) > -1) return clearTimeout(_alist_t); if (this.value.trim().length > 2) _alist_t = setTimeout(Alist, 50); if (this.value.trim() === "") $('#autoc').clear(); }).listen('keydown', function (e) { switch (e.keyCode) { case 40: $('#autoc li.current').removeClass('current').nextSibling(1).addClass('current') $('#search_term').get().value = $($('#autoc li.current').get() || $('#autoc li:first-child').get()).addClass('current').get().textContent break; case 38: $('#autoc li.current').removeClass('current').previousSibling(1).addClass('current') $('#search_term').get().value = $($('#autoc li.current,#autoc li:last-child').get()).addClass('current').get().textContent break; } }).listen('click', function () { }).listen('keydown', function (e) { clearTimeout(_alist_t); }); var _alist, _alist_t, _alist_o = {}; function Alist() { try { _alist.abort() } catch (err) {} var value = $('#search_term').addClass('ac_loading').get().value.trim(); if (_alist_o[value.toLowerCase()]) return Ac(_alist_o[value.toLowerCase()]); $('#search_term').addClass('ac_loading') _alist = new XMLHttpRequest(); _alist.open('GET', '/_get_active_movies.php?all&limit=10&q=' + encodeURIComponent(value), true); _alist.onreadystatechange = function (e) { if (_alist.readyState === 4) { if (_alist.status === 200) { $('#search_term').removeClass('ac_loading') Ac((_alist_o[value.toLowerCase()] = _alist.responseText.trim().split(/\n/))) } } } _alist.send() } function Ac(l) { var ac = $('#autoc').clear() l.forEach(function (o) { ac.append($('<li>').setText(o).listen('click', function (e) { e.preventDefault() $('#search_term').get().value = this.textContent; })) }); } function XmlhttpRequest(obj) { if (obj.url.indexOf("http://") === 0 && obj.url.indexOf('http://'+host) === -1) { GM_xmlhttpRequest(obj) } else { var xhr = new XMLHttpRequest(); xhr.open(obj.method, obj.url, true); xhr.onreadystatechange = function (e) { if (xhr.readyState === 4) { obj.onload(xhr) } } xhr.send(obj.data||null) } } function _get(url, cb, postData, headers) { XmlhttpRequest({ method: postData ? 'POST' : 'GET', url: url, data: postData, headers: headers || null, onload: function (r) { cb(r); } }); } function do_watched(what, action, id, page) { var url = "/addto" + (page || "watched") + ".php?whattodo=" + what + "&action=" + action + "&id=" + id; do_action.call(this, url) } function do_action(url, cb) { if (!$(this).children('.loader').length) { $(this).append($('<div>').attr('class', 'loader hide').append($('<img>').attr('src', waiting_image).get()).get()) } $($(this).children('.loader')[0]).show() _get(url, function (r) { var ok = get_ok(r.responseText); if (ok) { var m = url.split('?') var t = m[0].match(/addto(.*?)s?\.php/i) && RegExp.$1,q={} m[1].split("&").forEach(function(i) { var v = i.split('='); q[v[0]] = v[1]; }) var g = q['action'] || t; console.log(url,g,q); if (q['whattodo'] == 'delete') { groups[g].splice(groups[g].indexOf(q['id']),1); } else if(q['whattodo'] == 'add') { if (g === 'watched' && (m = groups['towatch'].indexOf(q['id'])) > -1) { groups['towatch'].splice(m,1); } groups[g].indexOf(groups[g]) === -1 && groups[g].push(q['id']) } __setValue('groups',groups); } $($(this).children('.loader')[0]).hide() $(this).append($('<div>').css({ 'backgroundColor': ok?'#EFFFEF':'red', "width": "100%", "position": "absolute", "top": "40%", "left": "0px" }).setText(ok || "An Error Occurred").get()) if (cb) cb(ok) }.bind(this), null, { "Referer": document.URL }); } function _menu(obj) { $('.options_menu').remove() var ul = $('<ul>').attr('class', 'options_menu') for (var i in obj) { if (/^wait/.test(i)) { var li = $('<li>').attr('class', 'wait').setText(i) ul.append(li) obj[i].call(null, li) } else { ul.append($('<li>').setText(i).attr('class', obj[i] ? '' : 'label').listen('click', typeof obj[i] == 'function' && obj[i]).get()) } } return ul; } function build_menu(id) { // .bind(a) // look for playlists return _menu({ "add To:": null, "To Watch": function () { do_watched.call(this, 'add', 'towatch', id) }.bind(this), "Watched": function () { do_watched.call(this, 'add', 'watched', id) }.bind(this), "Favorite": function () { do_watched.call(this, 'add', '', id, 'favs') }.bind(this), "wait1": function (xli) { if ('tv' in queryString || queryString['search_section'] == "2") { xli.addClass('label').clear().setText('Go To:') xli.insertAfter($('<li>').setText('Last Episode').listen('click', function (e) { show_menu = true $(e.target).clear().setText("Getting Last Page") _get("/watch-" + id, function (r) { var s = r.responseText, t = /href="(.*?)"/g if ((lI = s.lastIndexOf('tv_episode_item"> <a href="')) > -1) { t.lastIndex = lI var m = t.exec(s) window.location.assign("http://" + host + m[1]) } else alert('No Episodes Found') && kill_menu() }.bind(this)) }.bind(this)).get()) } else { xli.remove() } }.bind(this), "Playlists": null, "wait2": function (xli) { xli.clear() xli.setText("waiting for playlists") var ul = xli.get().parentNode; var li = xli.get() _get('/playlists/' + uname, function (r) { var t = r.responseText; var reg = /"\/playlists\.php\?id=(\d+?)">([^<]+)<\/a>/g, m var has = false; while ((m = reg.exec(t)) !== null) { has = true var pid = m[1]; var pname = m[2]; ul.insertBefore($('<li>').setText(pname).listen('click', function () { do_action.call(ul.parentNode, 'http://' + host + '/playlists.php?user=' + uname + '&edit=' + pid + '&plistitemid=' + id + '&whattodo=add_existing') }).get(), li) } if (!has) { ul.insertBefore($('<li>').setText('No Playlists').get(), li) } xli.clear() }); /* _get('http://' + host + '/playlists.php?create', function (r) { var s = r.responseText; var n = s.match(/<input name="play_title".*?value"(.*?)"/) xli.clear().setText((n && n[1]) || "Create New Playlist").listen('click', function (e) { if (n) { do_action.call(ul.parentNode, 'http://www.1channel.ch/playlists.php?plistitemid=' + id + '&whattodo=add') } else { show_menu = true e.stopPropagation() $(this).clear().append($('<input>').attr('placeholder', 'Type PlaylistName').listen('keypress', function (e) { if (e.keyCode == 13) { //do_action.call(ul.parentNode, 'http://' + host + '/playlists.php?user=' + uname + '&edit=' + pid + '&plistitemid=' + id + '&whattodo=add_existing') _get('http://' + host + '/playlists.php?create', function (r) { if (r.responseText.match(/<input name="play_title".*?value"(.*?)"/)) { $(this).clear().setText(RegExp.$1); do_action.call(ul.parentNode, 'http://www.1channel.ch/playlists.php?plistitemid=' + id + '&whattodo=add', function () { show_menu = false kill_menu(); }) } else { alert('no'); } }.bind(this), "play_title=" + encodeURIComponent(this.value) + "&type=1&play_submit=Search"); } })) } }) }); */ }.bind(this) }); } function __getValue(key) { var s = GM_getValue(key); return (s && JSON.parse(s)) || {} } function __setValue(key, value) { setTimeout(function() { GM_setValue(key, JSON.stringify(value)); },0); } function get_ok(txt) { return txt.match(/<div class='ok_message'>(.*?)<\/div>/i) && RegExp.$1 } __groups.forEach(function(o) { if (o === 'fav') return var lists = groups[o].map(function(oo) { return 'a[href*="-'+oo+'-"] img'; }); var rib = (o === 'towatch' && 'to_watch') || o $(lists.join(',')).i(function(o) { var tt = $(o) var im = tt.attr('src') if (im.indexOf('/images/ribbon') === -1) { tt.attr('height',tt.get().offsetHeight); tt.attr('src','/images/ribbon_'+rib+'.png').css({'background':'url('+im+')'}) } }); }); $('a[href*="commentvote="]').listen('click', function (e) { e.preventDefault(); do_action.call(this.parentNode.parentNode, this.href); }); $('.favs_deleted a').listen('click', function (e) { e.preventDefault() do_action.call($(this).parent(1).parent(), this.href, function (ok, txt) { if (ok) { var t = $(this).parent(1).parent(1) var opts = { prop: 'opacity', from: 1, to: 0, time: .1, delta: function (p) { return 1 - Math.sin(Math.acos(p)) } } t.animate(opts).__registerListener('animationEnd', function () { this.remove() }) } else { alert("Could Not Complete Action"); } }.bind(this)) }); $('.index_item,.featured_movie_item,.item_similar a').i(function (o) { $(o).css({ 'position': 'relative' }).append($('<button>').attr('class', 'x-btn').setText("+").css({ "position": "absolute", "left": "0px", "top": "0px", "textSize": "2em" }).listen('click', function (e) { show_menu = true if (this.parentNode.tagName.toLowerCase() == 'a') { e.preventDefault() } var id = (this.parentNode.href || this.parentNode.querySelector('a').href).match(/(?:tv|watch)-(\d+)/)[1]; this.parentNode.insertBefore(build_menu.call(o, id).get(), this) }).get()); }); $('.index_item + .clearer').remove(); $('.pagination').css({ 'clear': 'both' }) if (document.URL.match(/\/tv-(\d+).*?\/season-(\d+)-episode-(\d+)/i)) { var id = RegExp.$1, s = [Number(RegExp.$2), Number(RegExp.$3)].join("x"); var tv = __getValue('watched'); $('.episode_prev_next').append($('<button>').setText('Watched').listen('click', function () { var tv = __getValue('watched'); if (!tv[id]) { tv[id] = {} } tv[id][s] = !tv[id][s]; __setValue('watched', tv); this.style.backgroundColor = (tv[id] && tv[id][s]) ? "#EFFFEF" : "#FFF" }).css({ backgroundColor: (tv[id] && tv[id][s]) ? "#EFFFEF" : "#FFF" }).get()) } else if ($('.movie_navigation a').get() && $('.movie_navigation a').get().href.match(/\/tv-(\d+)/i)) { var id = RegExp.$1 var tv = __getValue("watched"); $('a[href*="/season-"]').i(function (o) { if (o.href.match(/\/tv-.*?\/season-(\d+)-episode-(\d+)/i)) { var s = [Number(RegExp.$1), Number(RegExp.$2)].join("x") if (tv[id][s]) { o.parentNode.style.backgroundColor = "#EFFFEF !important" } } }); } })((function () { var __matches = (function () { var dE = document.documentElement return dE && dE.nodeType && (dE.matchesSelector || dE.webkitMatchesSelector || (dE.mozMatchesSelector && function (sel) { return this.mozMatchesSelector(sel) })) })(); var fs = function (m, el) { return new fs.fn(m,el) } fs.fn = function(m,el) { m = m || ''; this.obj = [] if (typeof (m) == 'object' && m.nodeType) { this.obj.push(m) } else if (m.match(/^<([^>]+)>$/)) { this.obj.push(document.createElement(RegExp.$1)) } else { this.obj = Array.prototype.slice.call(m == '' ? [] : (el || document).querySelectorAll(m) || [], 0) } return this } fs.Extend = function (o) { for (var i in o) { fs.fn.prototype[i] = o[i]; } } fs.isArray = function (o) { return typeof o === 'object' && o instanceof Array } fs.animate = function (opts) { var start = new Date var id = setInterval(function () { var timePassed = new Date - start var progress = timePassed / opts.duration if (progress > 1) progress = 1 var delta = opts.delta(progress) opts.step(delta) if (progress == 1) { clearInterval(id) if (opts.onEnd) { opts.onEnd() } } }, opts.delay || 10) } fs.Animate = { linear: function (p) { return p }, circ: function (progress) { return 1 - Math.sin(Math.acos(progress)) } } fs.isObject = function (o) { return typeof o.__isFSObject === 'function' && o.__isFSObject(); } fs.fn.prototype = { toString: function() { return this.obj.toString() }, matches: function (sel) { if (__matches) return __matches.apply(this.get(), [sel]) }, __isFSObject: function () { return this instanceof fs.fn }, append: function (e) { e = fs.isObject(e) ? e.get() : e; this.get().appendChild(e); return this }, insertBefore: function (e) { this.parent().insertBefore(fs.isObject(e) ? e.get() : e, this.get()); }, insertAfter: function (e) { this.parent().insertBefore(fs.isObject(e) ? e.get() : e, this.get().nextSibling) }, loaded: function (cb) { this.listen('DOMContentLoaded', cb); }, clear: function () { this.i(function (o) { while (o.firstChild) { o.removeChild(o.firstChild) } }); return this }, get: function () { return this.obj[0]; }, appendTo: function (e) { if (typeof e === 'string') { e = $(e).get() } else if (fs.isObject(e)) { e = e.get() } e.appendChild(this.get()); }, children: function (sel,n) { var sel = sel || '*', cn = this.get().childNodes, length = cn.length, m = [] for (var i = 0; i < length; i++) { if (cn[i].nodeType === 1 && fs(cn[i]).matches(sel)) m.push(cn[i]) } if (n) { var x = fs('');x.obj = m;return x } return m; }, listen: function (e, cb, cBool) { if (!fs.isArray(e)) { e = [e] } this.i(function (o) { e.forEach(function (ee) { o.addEventListener(ee, function (e) { cb.call(e.target || e.srcElement, e) }, cBool || false) }) }); return this }, i: function (cb) { for (var i = 0; i < this.obj.length; i++) { cb(this.obj[i]); } return this; }, nextSibling: function (f) { var ns = this.get(); while (ns && (ns = ns.nextSibling) && ns.nodeType != 1) {} return f ? fs(ns) : ns }, previousSibling: function (f) { var ps = this.get(); while (ps && (ps = ps.previousSibling) && ps.nodeType != 1) {} return f ? fs(ps) : ps }, parent: function (n) { var p = this.get().parentNode return n ? fs(p) : p }, parents: function (until) { var m = fs(''); m.obj = [] var o = this.get(); var p while ((o = o.parentNode) && ((until && !fs(o).matches(until)) || !until)) m.obj.push(o); return m; }, attr: function (a, s) { if (s == null) { return this.get().getAttribute(a) } else { this.i(function (o) { o.setAttribute(a, s) }); } return this; }, setText: function (t) { this.i(function (o) { o.appendChild(document.createTextNode(t)); }); return this }, toggle: function (cn, bool) { this.i(function (o) { if (typeof (bool) === "boolean") { if (bool) o.classList.add(cn) else { o.classList.remove(cn) } } else { o.classList.toggle(cn || "hide") } }); return this }, addClass: function (cn) { this.i(function (o) { o.classList.add(cn) }); return this }, removeClass: function (cn) { this.i(function (o) { o.classList.remove(cn) }); return this }, __listener: {}, __registerListener: function (evt, cb) { this.__listener[evt] = this.__listener[evt] || []; this.__listener[evt].push(cb); }, __fireListener: function (evt, cb) { if (this.__listener[evt]) { this.__listener[evt].forEach(function (o) { o.call(this) }, this); } }, animate: function (aopts) { var a = aopts.to - aopts.from; fs.animate({ delay: 10, duration: (aopts.duration || 1) * 1000, // 1 sec by default delta: aopts.delta || fs.Animate.linear, step: function (delta) { var p = aopts.from + (a * delta) + (aopts.unit || ''); var o = new Object(); o[aopts.prop] = p; this.css(o) }.bind(this), onEnd: function () { this.__fireListener('animationEnd'); }.bind(this) }); return this }, fadeOut: function (time, cb) { if (cb) { this.__registerListener('animationEnd', cb) } this.animate({ prop: 'opacity', duration: time, from: 1, to: 0 }); }, remove: function () { this.i(function (o) { o.parentNode.removeChild(o); }); }, hide: function () { this.addClass('hide'); }, show: function () { this.removeClass('hide'); }, is: function (sel) { this.obj = this.obj.filter(function (o) { return fs(o).matches(sel); }); return this }, computed: function (attr) { return document.defaultView.getComputedStyle(this.get(), null).getPropertyValue(attr); }, __getWH: function (s) { var c = parseFloat(this.computed('width')); var opts = ['margin-left', 'margin-right', 'border-left-width', 'border-right-width']; for (var i = 0, length = opts.length; i < length; ++i) { c -= parseFloat(this.computed(opts[i])); } return c; }, width: function (n) { if (n != null) { this.css({ width: parseFloat(n) + "px !important" }); } else { return this.__getWH('w'); } }, swap: function (el) { var o = (el instanceof HTMLElement ? $(el) : el) var c = o.clone() var p = this.clone(); o.replace(p); this.replace(c) return this }, replace: function (el) { var o = (fs.isObject(el) ? el.get() : el) this.parent().replaceChild(o, this.get()) }, clone: function () { return this.get() && this.get().cloneNode(true) }, css: function (s) { this.i(function (o) { for (var i in s) { try { o.style[i] = s[i] } catch (err) {} } }); return this }, count: function () { return this.obj.length; } } return fs })());