Putlocker Script

Putlocker tv show controller

Aby zainstalować ten skrypt, wymagana jest instalacje jednego z następujących rozszerzeń: Tampermonkey, Greasemonkey lub Violentmonkey.

You will need to install an extension such as Tampermonkey to install this script.

Aby zainstalować ten skrypt, wymagana jest instalacje jednego z następujących rozszerzeń: Tampermonkey, Violentmonkey.

Aby zainstalować ten skrypt, wymagana będzie instalacja rozszerzenia Tampermonkey lub Userscripts.

You will need to install an extension such as Tampermonkey to install this script.

Aby zainstalować ten skrypt, musisz zainstalować rozszerzenie menedżera skryptów użytkownika.

(Mam już menedżera skryptów użytkownika, pozwól mi to zainstalować!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

Będziesz musiał zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

Będziesz musiał zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

Musisz zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

(Mam już menedżera stylów użytkownika, pozwól mi to zainstalować!)

// ==UserScript==
// @name         Putlocker Script
// @namespace    https://redmoses.me/
// @version      0.2.1
// @description  Putlocker tv show controller
// @author       Red  Moses
// @include      http://putlocker.is/*episode*
// @include      http://putlocker.is/*tvshow*
// @grant        none
// @require      http://code.jquery.com/jquery-latest.js
// ==/UserScript==
/* jshint -W097 */
'use strict';

// button style
$('head').append("<style>.myButton{-moz-box-shadow:0 14px 14px -7px #3e7327;-webkit-box-shadow:0 14px 14px -7px #3e7327;box-shadow:0 14px 14px -7px #3e7327;background:-webkit-gradient(linear,left top,left bottom,color-stop(.05,#77b55a),color-stop(1,#72b352));background:-moz-linear-gradient(top,#77b55a 5%,#72b352 100%);background:-webkit-linear-gradient(top,#77b55a 5%,#72b352 100%);background:-o-linear-gradient(top,#77b55a 5%,#72b352 100%);background:-ms-linear-gradient(top,#77b55a 5%,#72b352 100%);background:linear-gradient(to bottom,#77b55a 5%,#72b352 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#77b55a', endColorstr='#72b352', GradientType=0);background-color:#77b55a;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;border:1px solid #4b8f29;display:inline-block;cursor:pointer;color:#fff;font-family:Arial;font-size:25px;font-weight:700;padding:6px 12px;text-decoration:none;text-shadow:0 1px 23px #5b8a3c}.myButton:hover{background:-webkit-gradient(linear,left top,left bottom,color-stop(.05,#72b352),color-stop(1,#77b55a));background:-moz-linear-gradient(top,#72b352 5%,#77b55a 100%);background:-webkit-linear-gradient(top,#72b352 5%,#77b55a 100%);background:-o-linear-gradient(top,#72b352 5%,#77b55a 100%);background:-ms-linear-gradient(top,#72b352 5%,#77b55a 100%);background:linear-gradient(to bottom,#72b352 5%,#77b55a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#72b352', endColorstr='#77b55a', GradientType=0);background-color:#72b352}.myButton:active{position:relative;top:1px}</style>");

function getTitle(url){
    var re = /watch-.*-tvshow/, m;
    if ((m = re.exec(url)) !== null) {
        if (m.index === re.lastIndex) {
            re.lastIndex++;
        }
    }
    return (m[0].replace("watch-","")).replace("-tvshow","");
}

function updateShow(show){
    var result = $.grep(shows, function(s){ return s.title == show.title; });
    if (result.length > 0){
        for (var i in shows) {
            if (shows[i].title == show.title) {
                shows[i].url = show.url;
                break;
            }
        }
    } else {
        shows.push(show);
    }
    localStorage.TV_SHOWS = JSON.stringify(shows);
}

function getEpisode(url, direction){
    var re = /episode-[0-9]+/, m;

    if ((m = re.exec(url)) !== null) {
        if (m.index === re.lastIndex) {
            re.lastIndex++;
        }
    }
    var episode_num = Number(m[0].replace("episode-","")), new_episode;
    if(direction == 'prev') {
        new_episode = episode_num - 1;
    } else {
        new_episode = episode_num + 1;
    }
    var new_url = url.replace("episode-" + episode_num, "episode-" + new_episode);
    updateShow({title: getTitle(url), url: new_url});
    return new_url;
}

function getLastWatched(url){
    var title = getTitle(url);
    var result = $.grep(shows, function(show){ return show.title == title; });
    if (result.length > 0) {
        return result[0].url;
    } else {
        alert("No data saved for " + title);
        return null;
    }
}

// get saved shows
var shows = [];
if(localStorage.TV_SHOWS) {
    shows = JSON.parse(localStorage.TV_SHOWS);
} else {
    localStorage.TV_SHOWS = JSON.stringify(shows);
}

var episode_page = window.location.href.indexOf("episode") > -1;
if (episode_page){
    updateShow({title: getTitle(window.location.href), url: window.location.href});
    $('body').append('<input type="button" value="Next episode" id="next" class="myButton">');
    $('#next').css("position", "fixed").css("top", 0).css("right", 0);
    $('#next').click(function(){
        window.location.href = getEpisode(window.location.href, 'next');
    });
    $('body').append('<input type="button" value="Previous episode" id="prev" class="myButton">');
    $('#prev').css("position", "fixed").css("top", 0).css("left", 0);
    $('#prev').click(function(){
        window.location.href = getEpisode(window.location.href, 'prev');
    });
} else {
    $('body').append('<div style="text-align:center;"><input type="button" value="Last watched" id="last_episode" class="myButton"></div>');
    $('#last_episode').css("position", "fixed").css("top", 0);
    if(typeof(Storage) == "undefined") 
        $('#last_episode').attr('disabled','disabled');
    $('#last_episode').click(function(){
        var last_watched = getLastWatched(window.location.href);
        if (last_watched)
            window.location.href = last_watched;
    });
}