public-func

获取提交参数方法

当前为 2023-04-16 提交的版本,查看 最新版本

此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.cn-greasyfork.org/scripts/463963/1176677/public-func.js

  1. // ==UserScript==
  2. // @name public-func
  3. // @version 1.0
  4. // @description 获取提交参数方法
  5. // @license All Rights Reserved
  6. // @grant GM_getResourceText
  7. // ==/UserScript==
  8.  
  9.  
  10. function generate_seat_url(is_calendar, event, price, people_num, data_json) {
  11. var performBases = [];
  12. if (is_calendar) {
  13. var month = event.slice(0, 7);
  14. var calendarPerforms = data_json["calendarPerforms"];
  15.  
  16. for (var i = 0; i < calendarPerforms.length; i++) {
  17. var calendarPerform = calendarPerforms[i];
  18. if (calendarPerform["month"] == month) {
  19. performBases = calendarPerform["performBases"];
  20. }
  21. }
  22. } else {
  23. performBases = data_json["performBases"];
  24.  
  25. }
  26.  
  27. var itemId = "";
  28.  
  29. for (var i = 0; i < performBases.length; i++) {
  30. var performBase = performBases[i];
  31. var performs = performBase["performs"];
  32.  
  33.  
  34. for (var j = 0; j < performs.length; j++) {
  35. var perform = performs[j];
  36. var performId = perform.performId;
  37. var projectId = new URLSearchParams(window.location.href).get('id');
  38. if (perform["performName"] === event) {
  39. itemId = perform["itemId"];
  40. window.itemId = itemId;
  41. var skuList = perform["skuList"];
  42. for (var k = 0; k < skuList.length; k++) {
  43. var skuList_item = skuList[k];
  44. if (skuList_item["skuName"] === price) {
  45. var skuId = skuList_item["skuId"];
  46. return `https://seatsvc.damai.cn/tms/selectSeat?itemId=${itemId}&performId=${performId}&skuId=${skuId}&projectId=${projectId}`
  47.  
  48. }
  49. }
  50.  
  51. }
  52. }
  53.  
  54. }
  55. return null;
  56.  
  57. }
  58.  
  59. function detail_ui() {
  60. var $service = $(".content-right .service");
  61.  
  62. var $control_container = $("<div id='control_container'></div>");
  63.  
  64. var $wx = $(`<div id="wx" class="notice"><p>公众号【时光最惠站】 </p><p>版本: ${version}</p></div>`);
  65.  
  66. var $number_input = $('<div class="input_wrapper" id="number_input_wrapper">请输入人数:<input id="number_input" type="number" value="1" min="1" max="6"></div>');
  67. // var $email_input = $('<div class="input_wrapper" id="email_input_wrapper">email:<input id="email_input" type="email" value="example@hotmail.com"></div>');
  68. // var $name_input = $('<div class="input_wrapper" id="name_input_wrapper">联系人姓名:<input id="name_input" type="text" value="小明"></div>');
  69. // var $duration_input = $('<div class="input_wrapper" id="duration_input_wrapper">刷新间隔(ms):<input id="duration_input" type="text" value="5000"></div>');
  70.  
  71. var $start_btn = $('<button id="start_btn">开始抢票</button>');
  72. var $end_btn = $('<button id="end_btn">停止抢票</button>');
  73. var $notice = $('<div id="notice" class="notice"><h3>使用步骤</h3><p>1.登录,填写购票人信息</p><p>2.选择场次->价格->填写人数</p><p>3.点击‘开始抢票’</p></div>');
  74.  
  75. var $notice2 = $('<div id="notice2" class="notice"><p>已同步网络时间</p><p>若误差过大请刷新页面,更新时间</p></div>');
  76.  
  77. var $countdown = $('<div id="countdown_wrapper"><p id="selected_event">event1</p><p id="selected_price">price2</p><p id="selected_number">1人</p><br><p>倒计时:</p><p id="countdown">00:00:00</p></div>');
  78.  
  79. $control_container.append($style);
  80. $control_container.append($wx);
  81. $control_container.append($number_input);
  82. // $control_container.append($email_input);
  83. // $control_container.append($name_input);
  84. // $control_container.append($duration_input);
  85. $control_container.append($start_btn);
  86. $control_container.append($end_btn);
  87. $control_container.append($notice);
  88. $control_container.append($notice2);
  89. // $control_container.append($countdown);
  90.  
  91. $control_container.insertBefore($service);
  92. $countdown.insertBefore($control_container);
  93.  
  94. $("#start_btn").click(function () {
  95. var event = get_event();
  96. var price = get_price();
  97. var people_num = $("#number_input").val();
  98. var data_json = JSON.parse($("#dataDefault").text());
  99. window.sellStartTime_timestamp = data_json["sellStartTime"];
  100.  
  101. $("#selected_event").text(event);
  102. $("#selected_price").text(price);
  103. $("#selected_number").text(people_num + "人");
  104.  
  105. $("#countdown_wrapper").show();
  106.  
  107. // console.log(data_json)
  108.  
  109. var result = generate_confirm_url(event, price, people_num, data_json);
  110. console.log("result--" + result);
  111. if (result) {
  112. window.order_url = result;
  113. sessionStorage.setItem('order_url', result);
  114.  
  115. console.log("countdown and go to confirm page");
  116. timedUpdate();
  117. } else {
  118. alert("获取场次票价人数失败,请刷新再试");
  119.  
  120. }
  121.  
  122. });
  123.  
  124. $("#end_btn").click(function () {
  125. clearTimeout(window.timer);
  126. $("#countdown_wrapper").hide();
  127. sessionStorage.clear();
  128. });
  129.  
  130. }
  131.  
  132. function phone_detail_ui() {
  133. var $service = $(".banner");
  134. if ($service == null || $service.length == 0) {
  135. $service = $(".auto-banner");
  136. }
  137. if ($service == null || $service.length == 0) {
  138. $service = $("#detail");
  139. }
  140. if ($service == null || $service.length == 0) {
  141. setTimeout(phone_detail_ui, 200);
  142. return;
  143. }
  144.  
  145. var $control_container = $("<div id='control_container'></div>");
  146. var $wx = $(`<div id="wx" class="notice"><p>公众号【时光最惠站】 </p><p>版本: ${version}</p></div>`);
  147. var $eventId = $('<div class="input_wrapper_phone" id="event_input_wrapper">输入票价对应的序号:<input id="event_input" type="text" value="0" ></div>');
  148. var $number_input = $('<div class="input_wrapper_phone" id="number_input_wrapper">选择人数:<input id="number_input" type="number" value="2" min="1" max="4"></div>');
  149. var $start_btn = $('<button id="start_btn">开始抢票</button>');
  150. var $end_btn = $('<button id="end_btn">停止抢票</button>');
  151. var $notice = $('<div id="notice" class="notice"><h3>使用步骤</h3><p>1.提前登录-填写购票人,收货地址</p><p>2.请先点击右下角[即将开抢 预选场次]或[立即购买] 按钮,再按提示输入票价前的序号</p><p>3.点击‘开始抢票’</p></div>');
  152.  
  153. var $notice2 = $('<div id="notice2" class="notice"><p>注:默认勾选2个观演人(可修改)</p></div>');
  154.  
  155. var $countdown = $('<div id="countdown_wrapper"><p id="selected_event">场次</p><p id="selected_price">自动勾选人数</p><p id="selected_number">2人</p><br><p>倒计时:</p><p id="countdown">00:00:00</p></div>');
  156.  
  157. $control_container.append($style);
  158. $control_container.append($wx);
  159. $control_container.append($eventId);
  160. $control_container.append($number_input);
  161. $control_container.append($start_btn);
  162. $control_container.append($end_btn);
  163. $control_container.append($notice);
  164. $control_container.append($notice2);
  165.  
  166. $control_container.insertBefore($service);
  167. $countdown.insertBefore($control_container);
  168.  
  169. $("#start_btn").click(function () {
  170. var eventJson = $("#event_input").val();
  171. if (eventJson == "" || eventJson == null) {
  172. alert("请先输入票价对应的序号");
  173. return;
  174. }
  175.  
  176. var skuIds = sessionStorage.getItem('skuIds');
  177. var itemIds = sessionStorage.getItem('itemIds');
  178. if (skuIds == null || itemIds == null || skuIds.length == 0 || itemIds.length == 0) {
  179. alert("请先点击右下角[即将开抢 预选场次]或[立即购买] 按钮获取票档,再按提示输入票价前的序号");
  180. return;
  181. }
  182. skuIds = skuIds.split(",");
  183. itemIds = itemIds.split(",");
  184. if (skuIds.length <= Number(eventJson)) {
  185. alert("序号错误,无该序号对应场次");
  186. return;
  187. }
  188. var price = skuIds[eventJson];
  189. var eventid = itemIds[eventJson];
  190. //获取场次id+价格id
  191. console.log("item_id:" + eventid);
  192. console.log("price_id:" + price);
  193.  
  194. var people_num = $("#number_input").val();
  195. var result = phone_confirm_url(eventid, price, people_num);
  196. window.phone_order_url = result;
  197. window.phone_people_num = people_num;
  198. sessionStorage.setItem('phone_order_url', result);
  199. sessionStorage.setItem('phone_people_num', people_num);
  200. sessionStorage.setItem('reload_cnt', 0);
  201.  
  202. //已经开抢了,立即购买
  203. var cdate = $('.count-down-date');
  204. var sellStartTime = "";
  205. if (cdate == null || cdate.length == 0) {
  206. sellStartTime = new Date().getTime();//开始时间时间戳
  207. } else {
  208. cdate = cdate.innerText == null ? cdate[0].innerText : cdate.innerText;
  209. var startTime = cdate.replace('月', '-').replace('日', '').replace('开抢', '') + ":00";
  210. startTime = new Date().getFullYear() + "-" + startTime;
  211. if (navigator.userAgent.indexOf("Safari") != -1) {
  212. startTime = startTime.replace(/-/g, '/');
  213. }
  214. sellStartTime = new Date(startTime).getTime();//开始时间时间戳
  215. }
  216. window.sellStartTime_timestamp = sellStartTime;
  217. $("#selected_event").text(startTime);
  218. // $("#selected_price").text(price);
  219. $("#selected_number").text(people_num + "人");
  220.  
  221. $("#countdown_wrapper").show();
  222.  
  223. timedUpdate_phone();
  224. });
  225.  
  226.  
  227. $("#end_btn").click(function () {
  228. clearTimeout(window.timer);
  229. $("#countdown_wrapper").hide();
  230. sessionStorage.clear();
  231. });
  232.  
  233. }
  234.  
  235. function phone_confirm_url(event, price_id, people_num) {
  236. return `https://m.damai.cn/app/dmfe/h5-ultron-buy/index.html?buyParam=${event}_${people_num}_${price_id}&buyNow=true&exParams=%257B%2522channel%2522%253A%2522damai_app%2522%252C%2522damai%2522%253A%25221%2522%252C%2522umpChannel%2522%253A%2522100031004%2522%252C%2522subChannel%2522%253A%2522damai%2540damaih5_h5%2522%252C%2522atomSplit%2522%253A1%257D&spm=a2o71.project.0.i0&sqm=dianying.h5.unknown.value`
  237. }
  238.  
  239.  
  240. function generate_confirm_url(event, price, people_num, data_json) {
  241.  
  242. var performBases = data_json["performBases"];
  243. var itemId = "";
  244.  
  245. for (var i = 0; i < performBases.length; i++) {
  246. // console.log("1");
  247. var performBase = performBases[i];
  248. var performs = performBase["performs"];
  249. for (var j = 0; j < performs.length; j++) {
  250. // console.log("2");
  251. var perform = performs[j];
  252. if (perform["performName"] === event) {
  253. // console.log("3");
  254. itemId = perform["itemId"];
  255. window.itemId = itemId;
  256. var skuList = perform["skuList"];
  257. for (var k = 0; k < skuList.length; k++) {
  258. // console.log("4");
  259. var skuList_item = skuList[k];
  260. if (skuList_item["skuName"] === price) {
  261. // console.log("5");
  262. var skuId = skuList_item["skuId"];
  263. return `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}_${people_num}_${skuId}&buyNow=true&spm=a2oeg.project.projectinfo.dbuy`
  264. // 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%2C%22umidToken%22%3A%22T2gAPtWBhV9tC67Mptnj5AU_d_KX-57DqykfreYNo38zNk2TgBZssV-gxQlN7aEPYnPc6dXI1re5zNemlLZpfS71%22%2C%22ua%22%3A%22134%23pciI2XXwXGEkxcXNZXkwdJ0D3QROwKOlAOzBtZ26EXkEHKc8qKrQAAmvANaH6n1KGaF4vxWgMEiyvJ8h9bbkRf%2FYEV1hBueE%2BJdqKXL3ZtWwTq1qijRmNyd3OOH8qkuJ%2BJd8qcHAZXnw%2Bcy8qqK7GANE1XazXJmg%2FR%2F5Utf35L2Od6%2FG0dbS1b%2B9L5ktB6IWasdFdaIn%2BqpUTLB8ajSqUVD0dOgouDkm78TjZ0CoGokuqXVsf1xdZ9p%2Fut6sLnyD7zJR7vi3xgho3ZvGI37q7cXGmA1IjAYsrBXU2kdbCbTZygJjLhS6%2FKJ7jMrS32iAng488JzvSMYV4D5o9mt%2BYWWddusAWqInij0%2FLKPSEnpK8MgQLbC8xXqcqv9ojtBm2DseaKe6g0CAXgFjW0XXA1aAhvJVTXDVIjariuT47UsZ94G4Vve%2Byr6FmI1RmtHBHwiiTN4YufCiYcr7UMN40vCkITwrXibXJVe5IW%2BkcuFlRVaK5fToG%2BK%2FDDJNLfO7LA4OoXB5BemruIehBXZPAVBHW5VgnKKG6A7MKWG8VHBsknL77EDMTYo%2FVGR5E9KfJtMNhTuRyPEJUXqIyuBs%2BWMeerkEllrcI4tn6j%2FQvxFo%2BMmoAnu4Gz05k2yBrt45eVj3sndkBqzjSOdocl5f%2BtA18aToWalQuZqLb0x31S4Ac6ZTPkhnqSnt%2BGGodrhKgkR1IyvyfYR85d2Yxnht1kSmE7O4YIEt6srmH2We9UqUdhkkeKByPHsj4MvAe2yejlSN1HcH0Mm0K4JjF59IvjH4Aw3UKv7GGnY1EtOcPvgZ8uNf7HfoWX%3D%3D%22%7D&buyParam=624490600818_1_4598946947036&buyNow=true&spm=a2oeg.project.projectinfo.dbuy
  265. }
  266. }
  267.  
  268. }
  269. }
  270.  
  271. }
  272. return null;
  273.  
  274. }