您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
try to take over the world!
// ==UserScript== // @name GetDate EN games // @namespace http://tampermonkey.net/ // @version 0.2 // @description try to take over the world! // @author You // @match http://*.en.cx/GameCalendar.aspx?* // @require https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js // @grant GM_xmlhttpRequest // @grant GM_registerMenuCommand // @grant GM_addStyle // ==/UserScript== (function($) { 'use strict'; GM_addStyle( '.textInfo{background:#fff;position:fixed; left:50%;top:50%; margin-top:-200px; margin-left:-400px; width: 806px;height: 421px;}'+ '.close{ float:right; color:#000;}'+ '.textInfo{color: #54432e;}'+ '.textInfo textarea{width:800px; height:400px;white-space: nowrap;}'+ '.textInfo a{color:#000;}'+ '.textInfo div{ padding:10px 20px;}'+ '.loaded{position:relative;}'+ '.scenario{color:red !important;}'+ '.loaded:before{position: absolute; content:""; left:0; right:0; top:0; bottom:0; background:rgba(29, 29, 29, 0.5)}'+ '.loaded:after{position: absolute; content:"";left:0; right:0; top:0; height: 300px;'+ ' background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHN2ZyB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjAiIHdpZHRoPSI2NHB4IiBoZWlnaHQ9IjY0cHgiIHZpZXdCb3g9IjAgMCAxMjggMTI4IiB4bWw6c3BhY2U9InByZXNlcnZlIj48Zz48cGF0aCBkPSJNNzUuNCAxMjYuNjNhMTEuNDMgMTEuNDMgMCAwIDEtMi4xLTIyLjY1IDQwLjkgNDAuOSAwIDAgMCAzMC41LTMwLjYgMTEuNCAxMS40IDAgMSAxIDIyLjI3IDQuODdoLjAyYTYzLjc3IDYzLjc3IDAgMCAxLTQ3LjggNDguMDV2LS4wMmExMS4zOCAxMS4zOCAwIDAgMS0yLjkzLjM3eiIgZmlsbD0iI2ZmMDAwMCIgZmlsbC1vcGFjaXR5PSIxIi8+PGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIGZyb209IjAgNjQgNjQiIHRvPSIzNjAgNjQgNjQiIGR1cj0iNjAwbXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIj48L2FuaW1hdGVUcmFuc2Zvcm0+PC9nPjwvc3ZnPg==") no-repeat center;'+ '}' ); let arInfo=[]; function GetDate(){ let url='', content=''; let rows =$('.table_light .infoRow '); $('body').addClass('loaded'); $.each(rows, function( index, tr ) { let td=$(tr).find('td'), info={}; let id=td.eq(1).find('span'); info.id=id.eq(1).html()+"_"+id.eq(2).html(); info.date=td.eq(4).html(); let lnk=td.eq(5).find('b a'); info.name=lnk.html() info.lnk=lnk.prop('href'); info.commandNum=td.eq(8).html(); localStorage.setItem("game_"+info.id, JSON.stringify(info)); GM_xmlhttpRequest({ method: 'GET', url: lnk.prop('href'), synchronous: true, onreadystatechange: function(res) { }, onload: function (results) { let url=results.finalUrl; url=url.match(/http:\/\/([\w.]+)/gm)[0]; let content = results.responseText; try { let table_tr=$(content).find('#tdContentCenter .gameInfo > tbody > tr'); // let td_id=table_tr.eq(1).find('table td'); let id1=td_id.eq(3).find('span span').html(); let id2 = td_id.eq(3).find('a').prop('href').match(/=([\d]+)/gm); id2=id2[0].replace( /=/g, "" ); let info =JSON.parse(localStorage.getItem('game_'+id1+"_"+id2)); info.difficulty =table_tr.eq(4).find('a span').html(); info.quality =table_tr.eq(6).find('a').html(); if(table_tr.eq(7).find('span a').html()==='Доступен'){ info.availabilityScript =table_tr.eq(7).find('span a').prop('href'); let url_faik=info.availabilityScript.match(/http:\/\/([\w.]+)/gm)[0]; info.availabilityScript= info.availabilityScript.replace(url_faik,url); }else{ info.availabilityScript =''; } info.restriction = table_tr.eq(10).find('span.white').html(); info.SequencePassing=table_tr.eq(11).find('span.white').html(); info.StartGame=table_tr.eq(12).find('span.white').text().substr(0,19); info.EndTime=table_tr.eq(14).find('span.white').text().substr(0,19); let price=table_tr.eq(15).find('span.padL3'); if(price.length>0){ info.Price=price.eq(0).text()+" "+price.eq(1).text(); }else{ info.Price=0; } localStorage.setItem("game_"+info.id, JSON.stringify(info)); } catch (err) {} }, onerror: function(res) { GM_log("Error!"); }}); }); var intervalID = window.setTimeout(addText, 10000); } const GetScenario = ()=>{ let url='', content=''; let rows =$('.table_light .infoRow '); $('body').addClass('loaded'); $.each(rows, function( index, tr ) { let td=$(tr).find('td'), info={}; let id=td.eq(1).find('span'); info.id=id.eq(1).html()+"_"+id.eq(2).html(); let lnk=td.eq(5).find('b a'); info.name=lnk.html() info.lnk=lnk.prop('href'); localStorage.setItem("game_"+info.id, JSON.stringify(info)); GM_xmlhttpRequest({ method: 'GET', url: lnk.prop('href'), synchronous: true, onreadystatechange: function(res) { }, onload: function (results) { let url=results.finalUrl; url=url.match(/http:\/\/([\w.]+)/gm)[0]; let content = results.responseText; try { let table_tr=$(content).find('#tdContentCenter .gameInfo > tbody > tr'); // let td_id=table_tr.eq(1).find('table td'); let id1=td_id.eq(3).find('span span').html(); let id2 = td_id.eq(3).find('a').prop('href').match(/=([\d]+)/gm); id2=id2[0].replace( /=/g, "" ); let info =JSON.parse(localStorage.getItem('game_'+id1+"_"+id2)); if(table_tr.eq(7).find('span a').html()==='Доступен'){ info.availabilityScript =table_tr.eq(7).find('span a').prop('href'); let url_faik=info.availabilityScript.match(/http:\/\/([\w.]+)/gm)[0]; info.availabilityScript= info.availabilityScript.replace(url_faik,url); }else{ info.availabilityScript =null; } localStorage.setItem("game_"+info.id, JSON.stringify(info)); } catch (err) {} }, onerror: function(res) { GM_log("Error!"); }}); }); var intervalID = window.setTimeout(addText2, 10000); }; const addText2 = ()=>{ let text=""; $.each(localStorage, function( index, item ) { if(index!='length'){ try { let game=JSON.parse(localStorage.getItem(index)); text+=game.id+', <a target="_blank" href="'+game.lnk.toString().trim()+'">'; text+=game.name.toString().trim()+'</a>'; if(game.availabilityScript!=null){ text+=' [<a target="_blank" class="scenario" href="'+game.availabilityScript.toString().trim()+'">Сценарий</a>]'; } text+='<br>'; } catch (err) {//text+=index+" "+err; text+='\n'; } } }); let block='<div class="textInfo"><a class="close" href="#" onclick="$(this).parent().remove();return false;">закрыть</a><div>'+ text+ '</div></div>' $('body').append(block); localStorage.clear(); $('body').removeClass('loaded'); }; function addText(){ let text="id;date;type;name;url;start;end;quality;difficulty;restriction;Price;commandNum;availabilityScript\n"; $.each(localStorage, function( index, item ) { if(index!='length'){ try { let game=JSON.parse(localStorage.getItem(index)); text+=game.id+';'; text+=game.date.toString().trim()+';'; text+=game.SequencePassing.toString().trim()+';'; text+=game.name.toString().trim()+';'; text+=game.lnk.toString().trim()+';'; text+=game.StartGame.toString().trim()+';'; text+=game.EndTime.toString().trim()+';'; text+=game.quality.toString().trim()+';'; text+=game.difficulty.toString().trim()+';'; text+=game.restriction.toString().trim()+';'; text+=game.Price.toString().trim()+';'; text+=game.commandNum.toString().trim()+';'; text+=game.availabilityScript.toString().trim()+';'; text+='\n'; } catch (err) {//text+=index+" "+err; text+='\n'; } } }); let block='<div class="textInfo"><a class="close" href="#" onclick="$(this).parent().remove();return false;">закрыть</a><textarea >'+ text+ '</textarea></div>' $('body').append(block); localStorage.clear(); $('body').removeClass('loaded'); }; GM_registerMenuCommand( 'Get Date', GetDate); GM_registerMenuCommand( 'Get scenario', GetScenario); })($);