您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
try to take over the world!
// ==UserScript== // @name Damai - Stage 1 // @namespace http://tampermonkey.net/ // @version 0.3.2 - Bham Init // @description try to take over the world! // @author Mr.FireAwayH // @match https://detail.damai.cn/item.htm* // @run-at document-end // @grant none // ==/UserScript== (function() { 'use strict'; var dates = []; var itemId = 0; var performId = 0; var skuId = 0; var clock = function(){ var clockHTML = "<div id='timedate' style='right: 0px;top: 10%; font: small-caps bold 60px/150% \"Segoe UI\", Frutiger, \"Frutiger Linotype\", \"Dejavu Sans\", \"Helvetica Neue\", Arial, sans-serif;width: 600px;color:#fff;z-index: 99999999999;position: fixed;background: red;'><a id='h'>12</a> : <a id='m'>00</a>: <a id='s'>00</a>: <a id='mi'>000</a> </div>"; var clockDiv = document.createElement("div"); document.body.appendChild(clockDiv); clockDiv.outerHTML = clockHTML; Number.prototype.pad = function(n) { for (var r = this.toString(); r.length < n; r = 0 + r); return r; }; var updateClock = function() { var now = new Date(); var milli = now.getMilliseconds(), sec = now.getSeconds(), min = now.getMinutes(), hou = now.getHours(), mo = now.getMonth(), dy = now.getDate(), yr = now.getFullYear(); var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; var tags = ["h", "m", "s", "mi"], corr = [hou.pad(2), min.pad(2), sec.pad(2), milli]; for (var i = 0; i < tags.length; i++) document.getElementById(tags[i]).firstChild.nodeValue = corr[i]; } var initClock = function() { updateClock(); window.setInterval(updateClock, 1); } initClock(); } var autoClick = function(){ var autoClickHandler = function(){ var h = window.hour.value; var m = window.min.value; var s = window.sec.value; var time = new Date(); try{ time.setHours(h); time.setMinutes(m); time.setSeconds(s); var diff = time - Date.now(); if(diff < 0){ alert("请输入未来的时/分/秒"); }else{ setTimeout(function(){ var subFrames = document.querySelectorAll(".subframe"); subFrames.forEach(f => { var subEnter = f.contentWindow.hidden; if(subEnter){ subEnter.click(); subEnter.innerText = "如果没有窗口弹出 请设置允许弹出窗口(地址栏右侧,五角星左边)"; subEnter.style.display = "block"; } }); }, diff); window.autosubmit.innerText = "设置成功"; } }catch(e){ alert("请输入正确的时/分/秒"); } } var autoHTML = "<div id='autoClick' style='width: 150px;font-size: 15px;line-height: 20px;position: absolute;top: 0px;right: 0;'> <p>时<input id='hour' type='text' style='width: 90%'></p> <p>分<input id='min' type='text' style='width: 90%'></p> <p>秒<input id='sec' type='text' style='width: 90%'></p> <p><button id='autosubmit' style='width: 100%; cursor: pointer;'>设置自动提交</button></p> </div>"; var autoDiv = document.createElement("div"); window.timedate.appendChild(autoDiv); autoDiv.outerHTML = autoHTML; window.autosubmit.onclick = autoClickHandler; } var priceHandler = function(e){ skuId = e.target.value; var node = document.querySelector(".perform__order__box"); if(window.enter){ node.removeChild(window.enter); node.removeChild(window.hidden); } if(skuId > -1){ var selectSeat = document.querySelector(".service").innerText.indexOf("不支持选座") === -1; var enterButtonHTML = ""; var link = ""; if(selectSeat){ link = `https://seatsvc.damai.cn/tms/selectSeat?itemId=${itemId}&performId=${performId}&skuId=${skuId}&projectId=${itemId}&spm=a2oeg.project.projectinfo.dbuy`; enterButtonHTML = `<a id='enter' href='${link}' target='_blank'>点这里</a><button id='hidden' onclick='window.open("${link}")' style='display:none'></button>`; }else{ var num = 1; var numDom = document.querySelector(".cafe-c-input-number-input-wrap input"); if(numDom){ num = numDom.value; } link = `https://buy.damai.cn/orderConfirm?exParams=%7B%22damai%22%3A%221%22%2C%22channel%22%3A%22damai_app%22%2C%22umpChannel%22%3A%2210002%22%2C%22atomSplit%22%3A%221%22%2C%22serviceVersion%22%3A%221.8.5%22%7D&buyParam=${itemId}_${num}_${skuId}&buyNow=true&spm=a2oeg.project.projectinfo.dbuy`; enterButtonHTML = `<a id='enter' href='${link}' target='_blank'>点这里</a><button id='hidden' onclick='window.open("${link}")' style='display:none'></button>`; } var enterButton = document.createElement("a"); node.appendChild(enterButton); enterButton.outerHTML = enterButtonHTML; }else{ node.removeChild(window.enter); node.removeChild(window.hidden); } } var dateHandler = function(e){ var value = e.target.value; var node = document.querySelector(".perform__order__box"); if(window.prices){ node.removeChild(window.prices); } if(window.enter){ node.removeChild(window.enter); node.removeChild(window.hidden); } if(value > -1){ var priceSelectHTML = "<select id='prices'><option value='-1'>请选择票价</option>"; var perform = dates[value]; itemId = perform.itemId; performId = perform.performId; perform.skuList.forEach(n => { priceSelectHTML += `<option value="${n.skuId}">${n.skuName}</option>`; }); priceSelectHTML += "</select>"; var priceSelect = document.createElement("select"); node.appendChild(priceSelect); priceSelect.outerHTML = priceSelectHTML; window.prices.onchange = priceHandler; }else{ node.removeChild(window.prices); } } var multiMode = function(){ var num = Number(prompt("输入同时抢票数量(请输入阿拉伯数字)")); if(!Number.isNaN(num)){ var link = `${location.href}&multi=${num}`; location.href = link; }else{ multiMode(); } } var setup = function(){ document.body.removeChild(window.hint); var data = JSON.parse(window.dataDefault.innerText).performBases; dates = data.map(s => s.performs.flat()).flat(); if(location.search.indexOf("multi") === -1){ var multiHTML = "<a style='background: red; color: white; cursor: pointer' id='multi'>多开模式 暂仅建议不可选座类使用</a></br>"; var dateSelectHTML = `${multiHTML}<select id='performs'><option value='-1'>请选择日期</option>`; dates.map(s => s.performName).forEach((n, i) => { dateSelectHTML += `<option value="${i}">${n}</option>`; }); dateSelectHTML += "</select>"; var dateSelect = document.createElement("select"); document.querySelector(".perform__order__box").appendChild(dateSelect); dateSelect.outerHTML = dateSelectHTML; window.performs.onchange = dateHandler; window.multi.onclick = multiMode; if(location.search.indexOf("sub") === -1){ clock(); autoClick(); }else{ window.multi.parentNode.removeChild(window.multi); var css = document.createElement("style"); document.body.appendChild(css); css.outerHTML = "<style> .search-header, .cover, .dm-header-wrap{display: none !important; } .cont{padding-left: 0px !important;}</style>"; } }else{ var link = location.href; var arr = link.split("multi="); var newLink = arr[0]; var num = arr[1].split("&")[0]; var container = document.createElement("div"); document.body.appendChild(container); container.setAttribute("style", "position: absolute; height: 100%; background: wheat; top: 0; width: 100%;"); var width = (95 / num) + "%"; var style = `width: ${width}; height: 100%; border: 5px solid red;`; for(var i = 0; i < num; i++){ var sub = document.createElement("iframe"); sub.className = "subframe"; sub.src = `${newLink}&sub=${i + 1}`; container.appendChild(sub); sub.setAttribute("style", style); } clock(); autoClick(); } } var init = function(){ var css = document.createElement("style"); document.body.appendChild(css); css.outerHTML = "<style> .sidebar{display: none !important;} </style>"; var a = document.createElement("div"); document.body.appendChild(a); a.outerHTML = "<div id='hint' style='position: absolute;width: 30%;background: red;top: 40%;text-align: center;left: 40%;color: white;font-size: 40px;'>抢票辅助工作中</div>"; setTimeout(setup, 5000); } window.onload = init; })();