// ==UserScript==
// @name SwagTv script+mod
// @namespace swagtv+mod
// @description this script will automatically fetch and go to the next video after the meter goes up. [mod: next category when end, solve another captcha, restore last video, fix some bug from duplicate watch, speed up for next video after meter increase, checking new server date
// @version 0.10
// @include http://video.swagbucks.com/*
// @include http://www.swagbucks.com/?cmd=cp-get-captcha-image*
// @exclude http://video.swagbucks.com/ad*
// @require https://greasyfork.org/scripts/1706-gocr-library/code/GOCR%20Library.js?version=4235
// @grant none
// ==/UserScript==
// Original from https://greasyfork.org/en/scripts/1126-swagtv-script
// --------------------------------------------------------------------
var channel = [];
channel[1] = "http://video.swagbucks.com/channel/comedy-time/58";
channel[2] = "http://video.swagbucks.com/channel/web-originals/184";
channel[3] = "http://video.swagbucks.com/channel/movie-trailers/51";
channel[4] = "http://video.swagbucks.com/channel/moviefone/53";
channel[5] = "http://video.swagbucks.com/channel/hitfix/54";
channel[6] = "http://video.swagbucks.com/channel/hollyscoop/56";
channel[7] = "http://video.swagbucks.com/channel/fanlala/57";
channel[8] = "http://video.swagbucks.com/channel/the-tonight-show/135";
channel[9] = "http://video.swagbucks.com/channel/the-voice/133";
channel[10] = "http://video.swagbucks.com/channel/modamob/78";
channel[11] = "http://video.swagbucks.com/channel/style-etc/79";
channel[12] = "http://video.swagbucks.com/channel/chic-tv-fashion/80";
channel[13] = "http://video.swagbucks.com/channel/chic-tv-beauty/81";
channel[14] = "http://video.swagbucks.com/channel/cambio-style/83";
channel[15] = "http://video.swagbucks.com/channel/aerosmith/61";
channel[16] = "http://video.swagbucks.com/channel/adele/62";
channel[17] = "http://video.swagbucks.com/channel/madonna/65";
channel[18] = "http://video.swagbucks.com/channel/the-rolling-stones/67";
channel[19] = "http://video.swagbucks.com/channel/whitney-houston/68";
channel[20] = "http://video.swagbucks.com/channel/empowher/86";
channel[21] = "http://video.swagbucks.com/channel/the-goto-mom/88";
channel[22] = "http://video.swagbucks.com/channel/insider-medicine/89";
channel[23] = "http://video.swagbucks.com/channel/ivanhoe/90";
channel[24] = "http://video.swagbucks.com/channel/bbq/72";
channel[25] = "http://video.swagbucks.com/channel/italian/74";
channel[26] = "http://video.swagbucks.com/channel/healthy-recipes/75";
channel[27] = "http://video.swagbucks.com/channel/vegan/76";
channel[28] = "http://video.swagbucks.com/channel/soups/120";
channel[29] = "http://video.swagbucks.com/channel/drinks/121";
channel[30] = "http://video.swagbucks.com/channel/salads/122";
channel[31] = "http://video.swagbucks.com/channel/latin/123";
channel[32] = "http://video.swagbucks.com/channel/desserts/124";
channel[33] = "http://video.swagbucks.com/channel/newsy/173";
channel[34] = "http://video.swagbucks.com/channel/ny-daily-news/93";
channel[35] = "http://video.swagbucks.com/channel/wsjlive/94";
channel[36] = "http://video.swagbucks.com/channel/bbc-worldwide/95";
channel[37] = "http://video.swagbucks.com/channel/global-post/96";
channel[38] = "http://video.swagbucks.com/channel/reuters-news/98";
channel[39] = "http://video.swagbucks.com/channel/ny-financial-press/99";
channel[40] = "http://video.swagbucks.com/channel/ktla/183";
channel[41] = "http://video.swagbucks.com/channel/dad-labs/101";
channel[42] = "http://video.swagbucks.com/channel/better-tv/102";
channel[43] = "http://video.swagbucks.com/channel/ask-the-builder/103";
channel[44] = "http://video.swagbucks.com/channel/geobeats/104";
channel[45] = "http://video.swagbucks.com/channel/monkeysee-home/105";
channel[46] = "http://video.swagbucks.com/channel/KVIE/107";
channel[47] = "http://video.swagbucks.com/channel/soma-tv/108";
channel[48] = "http://video.swagbucks.com/channel/earth-report/109";
channel[49] = "http://video.swagbucks.com/channel/vetvid/111";
channel[50] = "http://video.swagbucks.com/channel/trailer-life-tv/112";
channel[51] = "http://video.swagbucks.com/channel/Uzoo/147";
channel[52] = "http://video.swagbucks.com/channel/mashable-reviews/139";
channel[53] = "http://video.swagbucks.com/channel/hdnation/140";
channel[54] = "http://video.swagbucks.com/channel/get-connected-media/141";
channel[55] = "http://video.swagbucks.com/channel/butterscotch/143";
channel[56] = "http://video.swagbucks.com/channel/appvee/144";
channel[57] = "http://video.swagbucks.com/channel/top-ten-reviews/145";
channel[58] = "http://video.swagbucks.com/channel/techradar/137";
channel[59] = "http://video.swagbucks.com/channel/get-to-know-team-swagbucks/115";
channel[60] = "http://video.swagbucks.com/channel/all-about-swagbucks/117";
channel[61] = "http://video.swagbucks.com/channel/man-on-the-street/118";
channel[62] = "http://video.swagbucks.com/channel/office-wars/119";
var now = new Date();
// I'm +7 UTC, use -15 : set yours
now.setHours(now.getHours()-15);
var nowutc = Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate());
if (window.opener != null && window.location.href.indexOf("mumbojumbo") > -1) {
console.log("in");
console.log(window.opener);
window.opener.postMessage("Child Frame Loaded", "*");
var pic = document.getElementsByTagName("img")[0];
var image = getBase64Image(pic);
var ocrString = GOCR(image);
ocrString = ocrString.replace(/\s+/g, '');
console.log(ocrString.toUpperCase());
window.opener.postMessage({magicword: "mumbojumbo", string: ocrString}, "*");
window.setInterval(window.close,1000);
}else if(window.location.href.indexOf("video.swagbucks.com/channel") > -1){
if(getCookie("videodate") < nowutc){
console.log("new date");
setCookie("videodate",nowutc ,365, "/");
setCookie("videoindex",1 ,365, "/");
document.location.href = channel[1];
}else{
// select first video
console.log("select first video");
document.location.href = $(".thumb-link").first().attr('href');
}
}else if(window.location.href == "http://video.swagbucks.com/"){
// start running here
checkLimit();
getCookie("videodate") ? "" : setCookie("videodate",nowutc ,365, "/")
getCookie("videoindex") ? "" : setCookie("videoindex",1 ,365, "/")
if(getCookie("videodate") < nowutc){
// new day start new
console.log("new date");
setCookie("videodate",nowutc ,365, "/");
setCookie("videoindex",1 ,365, "/");
document.location.href = channel[1];
}else{
//resume last video
document.location.href = getCookie("videolast");
}
}else if(window.location.href.indexOf("www.swagbucks.com") > -1){
}else{
if(window.location.href.indexOf("http://video.swagbucks.com/video") > -1){
setCookie("videolast",document.location.href ,365, "/");
}
var iLoops = 0;
var randomNum = 0;
var strPercentStart = null;
var strPercentStart2 = null;
var temp123 = null;
var link = null;
var div = null;
var doc = document.getElementById("feed-ajax-div");
var notes = false;
var dup = false;
var _class = document.getElementsByClassName("thumb-container");
window.setInterval(reloadTimer,2000);
/*for (var i = 0; i < _class.length; i++) {
if (_class[i].className == "thumb-container active") {
var k = i;
break;
}
} */
var k = getK();
$('#item_title').parent().append("<input class='newCategory' type='button' id='newcat' value='New Category'>").bind('click', function() {
selectNewCat();
});/**/
}
function getK(){
for (var i = 0; i < _class.length; i++) {
if (_class[i].className == "thumb-container active") {
var k = i;
break;
}
}
return k
}
function reloadTimer(){
iLoops++;
if (iLoops == 1 || iLoops == 10) {
if(document.getElementById("meterNumber")!= undefined){
strPercentStart = document.getElementById("meterNumber").innerHTML;
strPercentStart2 = document.getElementById("meterNumber").innerHTML;
}
temp123 = getCookie("videoindex");
setCookie("videoindex",+temp123 ,365, "/");
safeBW();
}else{
if(document.getElementById("meterNumber")!= undefined){
strPercentStart2 = document.getElementById("meterNumber").innerHTML;
}
}
if (iLoops%5==0){
if(strPercentStart != strPercentStart2){
if(strPercentStart2 != "99%"){
iLoops = randomNum;
}
}
document.title = iLoops+":"+strPercentStart+":"+strPercentStart2+":"+temp123;
if(document.getElementById("sbvd_capText") && iLoops+10 < randomNum){
iLoops = randomNum-5
}
checkLimit();
}
if (iLoops == 5) {
div = document.getElementById("meterDuplicateVideo");
if (div.style.display == 'none') { // not dup
randomNum = Math.floor(Math.random()*15 + 50);
}else { // dup
dup = true;
if (k == null) {
console.log("In K=3");
//var clickEvent = document.createEvent('MouseEvents');
//clickEvent.initEvent('click', true, true);
//document.getElementsByClassName("feed-ajax-next")[0].dispatchEvent(clickEvent);
if (!document.getElementsByClassName("feed-ajax-next")[0]){
notes = true;
}else{
document.getElementsByClassName("feed-ajax-next")[0].click();
randomNum = 13;
}
k = -1;
}else{
randomNum = 8;
}
if(document.getElementById("tout").getElementsByTagName("h2")[0].innerHTML == "Editor's Pick"){
selectNewCat();
}else if(document.getElementById("tout").getElementsByTagName("h2")[0].innerHTML == "Uzoo"){
selectNewCat();
}
}
if (k == null) {
console.log("In K=3");
if (!document.getElementsByClassName("feed-ajax-next")[0]){
notes = true;
}else{
document.getElementsByClassName("feed-ajax-next")[0].click();
}
k = -1;
}
if(notes && dup){
selectNewCat();
}
};
if (iLoops == randomNum){
if (document.getElementById("sbvd_capText")) {
pic = document.getElementById("sbvdcapimg");
pic.crossOrigin = 'anonymous';
var string = getCaptchaText(pic);
}
else {
if (notes){
selectNewCat();
}else{
link = document.getElementsByClassName("thumb-link")[k+1].href;
window.location.href = link;
}
}
}
if(iLoops > 120){
window.location.href = document.getElementsByClassName("thumb-link")[0].href;
}
if(iLoops > 500){
selectNewCat();
}
};
var childWindow = null;
if (window.opener != null && window.location.href.indexOf("mumbojumbo") > -1) {
console.log("in");
window.opener.postMessage("Child Frame Loaded", "*");
var pic = document.getElementsByTagName("img")[0];
console.log(pic);
ocrString = ""
if (pic){
setTimeout(function(){
var image = getBase64Image(pic);
console.log(image);
var imageData = image[0];
var ocrString = GOCR(imageData);meout
ocrString = ocrString.replace(/\s+/g, '');
console.log(ocrString.toUpperCase());
},1500);
}
window.opener.postMessage({magicword: "mumbojumbo", string: ocrString}, "*");
window.opener=window;
window.close();
top.window.close();
window.setInterval(window.close,1000);
}
window.addEventListener("message", function(e) {
if (e.data.magicword === "mumbojumbo") {
console.log("Message Received");
console.log(e.data);
var ocrString = e.data.string.toUpperCase();
console.log("string");
console.log(ocrString);
console.log("string");
if (childWindow)
childWindow.close();
if (ocrString.indexOf('_') === -1){
if (document.getElementById("sbvd_capText")){
document.getElementById("sbvd_capText").value = ocrString;
document.getElementsByClassName("btnClaim")[0].click();
setTimeout(function() {
if (!document.getElementById("sbvd_capText")){
k=getK();
if (k == null)
k=-1;
link = document.getElementsByClassName("thumb-link")[k+1].href;
//alert("NEXT");
window.location.href = link;
}
else{
//alert("Opened 1");
var pic = document.getElementById("sbvdcapimg");
childWindow = window.open(pic.src+"&magicword=mumbojumbo");
}
}, 1000);
}
}
else{
//alert("Opened 2");
var pic = document.getElementById("sbvdcapimg");
childWindow = window.open(pic.src+"&magicword=mumbojumbo");
}
}
else{
//console.log("Also message received");
//console.log(e.data);
}
}, false);
function checkLimit(){
var limited = document.getElementById("meterOverlimit");
if(limited.style.display == '') { // reach limited
document.title = document.title+" REACHED LIMIT";
document.location.href = "http://www.swagbuck.com/";
}
}
function selectNewCat(){
console.log("Pick a new category");
var videoindex = getCookie("videoindex");
var c = (isNaN(videoindex) ? 0 : +videoindex);
videoindex = c + 1;
if(videoindex+1>channel.length){videoindex = 1}
setCookie("videoindex",videoindex ,365, "/");
setTimeout(function() {
document.location.href = channel[videoindex];
}, 1000);
}
function safeBW(){
if(document.getElementById("video-title")!= undefined){
var video = document.getElementById("video-title");
video.parentNode.removeChild(video);
}
if(document.getElementById("commentsCont")!= undefined){
var comment = document.getElementById("commentsCont");
comment.parentNode.removeChild(comment);
}
if(document.getElementById("sbFooterWrap")!= undefined){
var footer = document.getElementById("sbFooterWrap");
footer.parentNode.removeChild(footer);
}
if(document.getElementById("helpTab")!= undefined){
var helpTab = document.getElementById("helpTab");
helpTab.parentNode.removeChild(helpTab);
}
if(document.getElementById("adContBottom928")!= undefined){
var bottomad = document.getElementById("adContBottom928");
bottomad.parentNode.removeChild(bottomad);
}
}
function getCaptchaText(pic){
var pic = document.getElementById("sbvdcapimg");
childWindow = window.open(pic.src+"&magicword=mumbojumbo");
}
function getBase64Image(img) {
/* // Create an empty canvas element
var pic = document.createElement("img");
pic.src = img;
var canvas = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;
// Copy the image contents to the canvas
var ctx = canvas.getContext("2d");
ctx.drawImage(pic, 0, 0);
var pic2 = document.createElement("img");
pic2.src=canvas.toDataURL("image/png");
console.log(canvas.toDataURL("image/png"));
ctx.drawImage(pic2,0,0);
// Get the data-URL formatted image
// Firefox supports PNG and JPEG. You could check img.src to
// guess the original format, but be aware the using "image/jpg"
// will re-encode the image.
var dataURL = ctx.getImageData(0,0,canvas.width,canvas.height);
return dataURL;//.replace(/^data:image\/(png|jpg);base64,/, "");*/
// Create an empty canvas element
var canvas = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;
// Copy the image contents to the canvas
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0);
// Get the data-URL formatted image
// Firefox supports PNG and JPEG. You could check img.src to
// guess the original format, but be aware the using "image/jpg"
// will re-encode the image.
var dataURL = ctx.getImageData(0,0,canvas.width,canvas.height);
return dataURL;//.replace(/^data:image\/(png|jpg);base64,/, "");
}
function getCookie(c_name)
{
var i,x,y,ARRcookies=document.cookie.split(";");
for (i=0;i<ARRcookies.length;i++)
{
x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
x=x.replace(/^\s+|\s+$/g,"");
if (x==c_name)
{
return unescape(y);
}
}
}
function setCookie( name, value, expires, path )
{
// set time, it's in milliseconds
var today = new Date();
today.setTime( today.getTime() );
/*
if the expires variable is set, make the correct
expires time, the current script below will set
it for x number of days, to make it for hours,
delete * 24, for minutes, delete * 60 * 24
*/
if ( expires )
{
expires = expires * 1000 * 60 * 60 * 24;
}
var expires_date = new Date( today.getTime() + (expires) );
document.cookie = name + "=" +escape( value ) +
( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
( ( path ) ? ";path=" + path : "" );
}
function test(){
var items = document.getElementsByClassName("subnav");
var itemscount = items.length;
for(var i=0;i<itemscount;i++){
console.log(items[i]);
}
}