SwagTv script+mod

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

当前为 2015-01-06 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name SwagTv script+mod
  3. // @namespace swagtv+mod
  4. // @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
  5. // @version 0.04
  6. // @include http://video.swagbucks.com/*
  7. // @include http://www.swagbucks.com/?cmd=cp-get-captcha-image*
  8. // @require https://greasyfork.org/scripts/1706-gocr-library/code/GOCR%20Library.js?version=4235
  9. // @grant none
  10. // ==/UserScript==
  11. // Original from https://greasyfork.org/en/scripts/1126-swagtv-script
  12. // --------------------------------------------------------------------
  13.  
  14.  
  15. var channel = [];
  16. channel[1] = "http://video.swagbucks.com/channel/the-voice/133";
  17. channel[2] = "http://video.swagbucks.com/channel/hitfix/54";
  18. channel[3] = "http://video.swagbucks.com/channel/fanlala/57";
  19. channel[4] = "http://video.swagbucks.com/channel/the-tonight-show/135";
  20. channel[5] = "http://video.swagbucks.com/channel/techradar/137";
  21. channel[6] = "http://video.swagbucks.com/channel/mashable-reviews/139";
  22. channel[6] = "http://video.swagbucks.com/channel/reuters-news/98";
  23. channel[8] = "http://video.swagbucks.com/channel/bbc-worldwide/95";
  24. channel[9] = "http://video.swagbucks.com/channel/bbq/72";
  25. channel[10] = "http://video.swagbucks.com/channel/italian/74";
  26. channel[11] = "http://video.swagbucks.com/channel/hollyscoop/56";
  27.  
  28. var now = new Date();
  29. // I'm +7 UTC, use -15 : set yours
  30. now.setHours(now.getHours()-15);
  31. var nowutc = Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate());
  32.  
  33. if (window.opener != null && window.location.href.indexOf("mumbojumbo") > -1) {
  34. console.log("in");
  35. console.log(window.opener);
  36. window.opener.postMessage("Child Frame Loaded", "*");
  37. var pic = document.getElementsByTagName("img")[0];
  38. var image = getBase64Image(pic);
  39. var ocrString = GOCR(image);
  40. console.log(ocrString.toUpperCase());
  41. window.opener.postMessage({magicword: "mumbojumbo", string: ocrString}, "*");
  42. }else if(window.location.href.indexOf("video.swagbucks.com/channel") > -1){
  43. if(getCookie("videodate") < nowutc){
  44. console.log("new date");
  45. setCookie("videodate",nowutc ,365, "/");
  46. setCookie("videoindex",1 ,365, "/");
  47. document.location.href = channel[1];
  48. }else{
  49. // select first video
  50. console.log("select first video");
  51. document.location.href = $(".thumb-link").first().attr('href');
  52. }
  53. }else if(window.location.href.indexOf("video.swagbucks.com/ad") > -1){
  54. }else if(window.location.href == "http://video.swagbucks.com/"){
  55. // start running here
  56. getCookie("videodate") ? "" : setCookie("videodate",nowutc ,365, "/")
  57. getCookie("videoindex") ? "" : setCookie("videoindex",1 ,365, "/")
  58. if(getCookie("videodate") < nowutc){
  59. // new day start new
  60. console.log("new date");
  61. setCookie("videodate",nowutc ,365, "/");
  62. setCookie("videoindex",1 ,365, "/");
  63. document.location.href = channel[1];
  64. }else{
  65. //resume last video
  66. document.location.href = getCookie("videolast");
  67. }
  68. }else{
  69. if(window.location.href.indexOf("http://video.swagbucks.com/video") > -1){
  70. setCookie("videolast",document.location.href ,365, "/");
  71. }
  72. var iLoops = 0;
  73. var randomNum = 0;
  74. var strPercentStart = null;
  75. var strPercentStart2 = null;
  76. var temp123 = null;
  77. var link = null;
  78. var div = null;
  79. var doc = document.getElementById("feed-ajax-div");
  80. var notes = false;
  81. var dup = false;
  82. var _class = document.getElementsByClassName("thumb-container");
  83. window.setInterval(reloadTimer,1000);
  84. /*for (var i = 0; i < _class.length; i++) {
  85. if (_class[i].className == "thumb-container active") {
  86. var k = i;
  87. break;
  88. }
  89.  
  90. } */
  91. var k = getK();
  92. }
  93.  
  94.  
  95.  
  96.  
  97.  
  98. function getK(){
  99. for (var i = 0; i < _class.length; i++) {
  100. if (_class[i].className == "thumb-container active") {
  101. var k = i;
  102. break;
  103. }
  104. }
  105. return k
  106. }
  107.  
  108. function reloadTimer(){
  109. iLoops++;
  110. if (iLoops == 1) {
  111. if(document.getElementById("meterNumber")!= undefined){
  112. strPercentStart = document.getElementById("meterNumber").innerHTML;
  113. strPercentStart2 = document.getElementById("meterNumber").innerHTML;
  114. }
  115. temp123 = getCookie("videoindex");
  116. safeBW();
  117. }else{
  118. if(document.getElementById("meterNumber")!= undefined){
  119. strPercentStart2 = document.getElementById("meterNumber").innerHTML;
  120. }
  121. }
  122. if (iLoops%5==0){
  123. if(strPercentStart != strPercentStart2){
  124. if(strPercentStart2 != "99%"){
  125. iLoops = randomNum;
  126. }
  127. }
  128. document.title = iLoops+":"+strPercentStart+":"+strPercentStart2+":"+temp123;
  129. if(document.getElementById("sbvd_capText") && iLoops+10 < randomNum){
  130. console.log("captha");
  131. iLoops = randomNum-5
  132. }
  133. }
  134. if (iLoops == 5) {
  135. if(document.getElementById("meterNumber")!= undefined){
  136. strPercentStart = document.getElementById("meterNumber").innerHTML;
  137. strPercentStart2 = document.getElementById("meterNumber").innerHTML;
  138. }
  139. safeBW();
  140. div = document.getElementById("meterDuplicateVideo");
  141. if (div.style.display == 'none') { // not dup
  142. randomNum = Math.floor(Math.random()*15 + 50);
  143. }else { // dup
  144. dup = true;
  145. if (k == null) {
  146. console.log("In K=3");
  147. //var clickEvent = document.createEvent('MouseEvents');
  148. //clickEvent.initEvent('click', true, true);
  149. //document.getElementsByClassName("feed-ajax-next")[0].dispatchEvent(clickEvent);
  150. if (!document.getElementsByClassName("feed-ajax-next")[0]){
  151. notes = true;
  152. }else{
  153. document.getElementsByClassName("feed-ajax-next")[0].click();
  154. randomNum = 13;
  155. }
  156. k = -1;
  157. }else{
  158. randomNum = 8;
  159. }
  160. }
  161. if (k == null) {
  162. console.log("In K=3");
  163. if (!document.getElementsByClassName("feed-ajax-next")[0])
  164. notes = true;
  165. else
  166. document.getElementsByClassName("feed-ajax-next")[0].click();
  167. k = -1;
  168. }
  169. };
  170. if (iLoops == randomNum){
  171. if (document.getElementById("sbvd_capText")) {
  172. pic = document.getElementById("sbvdcapimg");
  173. pic.crossOrigin = 'anonymous';
  174. var string = getCaptchaText(pic);
  175. }
  176. else {
  177. if (notes){
  178. console.log("Pick a new category");
  179. var videoindex = getCookie("videoindex");
  180. var c = (isNaN(videoindex) ? 0 : +videoindex);
  181. videoindex = c + 1;
  182. if(videoindex>11){videoindex = 1}
  183. setCookie("videoindex",videoindex ,365, "/");
  184. if(videoindex<12){
  185. document.location.href = channel[videoindex];
  186. //console.log(channel[videoindex]);
  187. }else{
  188. console.log("STOP");
  189. }
  190. }else{
  191. link = document.getElementsByClassName("thumb-link")[k+1].href;
  192. window.location.href = link;
  193. }
  194. }
  195. }
  196. if(iLoops > 100){
  197. window.location.href = document.getElementsByClassName("thumb-link")[0].href;
  198. }
  199. };
  200. var childWindow = null;
  201.  
  202. if (window.opener != null && window.location.href.indexOf("mumbojumbo") > -1) {
  203. console.log("in");
  204. window.opener.postMessage("Child Frame Loaded", "*");
  205. var pic = document.getElementsByTagName("img")[0];
  206. console.log(pic);
  207. ocrString = ""
  208. if (pic){
  209. setTimeout(function(){
  210. var image = getBase64Image(pic);
  211. console.log(image);
  212. var imageData = image[0];
  213. var ocrString = GOCR(imageData);
  214. console.log(ocrString.toUpperCase());
  215. },1000);
  216. }
  217. window.opener.postMessage({magicword: "mumbojumbo", string: ocrString}, "*");
  218. window.opener=window;
  219. window.close();
  220. top.window.close();
  221. }
  222.  
  223. window.addEventListener("message", function(e) {
  224. if (e.data.magicword === "mumbojumbo") {
  225. console.log("Message Received");
  226. console.log(e.data);
  227. var ocrString = e.data.string.toUpperCase();
  228. console.log("string");
  229. console.log(ocrString);
  230. console.log("string");
  231. if (childWindow)
  232. childWindow.close();
  233. if (ocrString.indexOf('_') === -1){
  234. if (document.getElementById("sbvd_capText")){
  235. document.getElementById("sbvd_capText").value = ocrString;
  236. document.getElementsByClassName("btnClaim")[0].click();
  237. setTimeout(function() {
  238. if (!document.getElementById("sbvd_capText")){
  239. k=getK();
  240. if (k == null)
  241. k=-1;
  242. link = document.getElementsByClassName("thumb-link")[k+1].href;
  243. //alert("NEXT");
  244. window.location.href = link;
  245. }
  246. else{
  247. //alert("Opened 1");
  248. var pic = document.getElementById("sbvdcapimg");
  249. childWindow = window.open(pic.src+"&magicword=mumbojumbo");
  250. }
  251. }, 1000);
  252. }
  253. }
  254. else{
  255. //alert("Opened 2");
  256. var pic = document.getElementById("sbvdcapimg");
  257. childWindow = window.open(pic.src+"&magicword=mumbojumbo");
  258. }
  259. }
  260. else{
  261. //console.log("Also message received");
  262. //console.log(e.data);
  263. }
  264. }, false);
  265.  
  266. function safeBW(){
  267. if(document.getElementById("video-title")!= undefined){
  268. var video = document.getElementById("video-title");
  269. video.parentNode.removeChild(video);
  270. }
  271. if(document.getElementById("commentsCont")!= undefined){
  272. var comment = document.getElementById("commentsCont");
  273. comment.parentNode.removeChild(comment);
  274. }
  275. if(document.getElementById("sbFooterWrap")!= undefined){
  276. var footer = document.getElementById("sbFooterWrap");
  277. footer.parentNode.removeChild(footer);
  278. }
  279. if(document.getElementById("helpTab")!= undefined){
  280. var helpTab = document.getElementById("helpTab");
  281. helpTab.parentNode.removeChild(helpTab);
  282. }
  283. if(document.getElementById("adContBottom928")!= undefined){
  284. var bottomad = document.getElementById("adContBottom928");
  285. bottomad.parentNode.removeChild(bottomad);
  286. }
  287. }
  288.  
  289. function getCaptchaText(pic){
  290. var pic = document.getElementById("sbvdcapimg");
  291. childWindow = window.open(pic.src+"&magicword=mumbojumbo");
  292. }
  293.  
  294. function getBase64Image(img) {
  295. /* // Create an empty canvas element
  296. var pic = document.createElement("img");
  297. pic.src = img;
  298. var canvas = document.createElement("canvas");
  299. canvas.width = img.width;
  300. canvas.height = img.height;
  301.  
  302. // Copy the image contents to the canvas
  303. var ctx = canvas.getContext("2d");
  304. ctx.drawImage(pic, 0, 0);
  305. var pic2 = document.createElement("img");
  306. pic2.src=canvas.toDataURL("image/png");
  307. console.log(canvas.toDataURL("image/png"));
  308. ctx.drawImage(pic2,0,0);
  309.  
  310. // Get the data-URL formatted image
  311. // Firefox supports PNG and JPEG. You could check img.src to
  312. // guess the original format, but be aware the using "image/jpg"
  313. // will re-encode the image.
  314. var dataURL = ctx.getImageData(0,0,canvas.width,canvas.height);
  315.  
  316. return dataURL;//.replace(/^data:image\/(png|jpg);base64,/, "");*/
  317. // Create an empty canvas element
  318. var canvas = document.createElement("canvas");
  319. canvas.width = img.width;
  320. canvas.height = img.height;
  321. // Copy the image contents to the canvas
  322. var ctx = canvas.getContext("2d");
  323. ctx.drawImage(img, 0, 0);
  324. // Get the data-URL formatted image
  325. // Firefox supports PNG and JPEG. You could check img.src to
  326. // guess the original format, but be aware the using "image/jpg"
  327. // will re-encode the image.
  328. var dataURL = ctx.getImageData(0,0,canvas.width,canvas.height);
  329. return dataURL;//.replace(/^data:image\/(png|jpg);base64,/, "");
  330. }
  331.  
  332. function getCookie(c_name)
  333. {
  334. var i,x,y,ARRcookies=document.cookie.split(";");
  335. for (i=0;i<ARRcookies.length;i++)
  336. {
  337. x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
  338. y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
  339. x=x.replace(/^\s+|\s+$/g,"");
  340. if (x==c_name)
  341. {
  342. return unescape(y);
  343. }
  344. }
  345. }
  346.  
  347. function setCookie( name, value, expires, path )
  348. {
  349. // set time, it's in milliseconds
  350. var today = new Date();
  351. today.setTime( today.getTime() );
  352. /*
  353. if the expires variable is set, make the correct
  354. expires time, the current script below will set
  355. it for x number of days, to make it for hours,
  356. delete * 24, for minutes, delete * 60 * 24
  357. */
  358. if ( expires )
  359. {
  360. expires = expires * 1000 * 60 * 60 * 24;
  361. }
  362. var expires_date = new Date( today.getTime() + (expires) );
  363. document.cookie = name + "=" +escape( value ) +
  364. ( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
  365. ( ( path ) ? ";path=" + path : "" );
  366. }