2.[代码]Version 1.0(增加自动加载jQuery)
/**
* 该版本在V2.0版本中基本被废弃
* */
var stationDict = {
"广州" : "GZQ",
"吉安" : "VAG",
"北京" : "BJP",
"北京西" : "BXP",
"太原" : "TYV",
"深圳" : "SZQ",
"上海" : "SHH"
};
// 提取余票信息正则:如果当前车次有余票,则预订按钮包含getSlectect...字段
var defaultSplitReg = /getSelected\('(.*?)#(.*?)#(.*?)#(.*?)#(.*?)#(.*?)#(.*?)#(.*?)#(.*?)#(.*?)#(.*?)#(.*?)#(.*?)#(.*?)'/g;
// 查询余票URL模板
var queryUrlTemplate = "https://dynamic.12306.cn/otsweb/order/querySingleAction.do?method=queryLeftTicket&orderRequest.train_date={trainDate}&orderRequest.from_station_telecode={fromStationCode}&orderRequest.to_station_telecode={toStationCode}&orderRequest.train_no=&trainPassType=QB&trainClass=QB%23D%23Z%23T%23K%23QT%23&includeStudent=00&seatTypeAndNum=&orderRequest.start_time_str=00%3A00--24%3A00";
// 提交订单URL
var submitOrderUrl = "https://dynamic.12306.cn/otsweb/order/querySingleAction.do?method=submutOrderRequest";
// 填写订单信息页面URL
var confirmPassengerUrl = "https://dynamic.12306.cn/otsweb/order/confirmPassengerAction.do?method=init";
function checkjQuery(callback) {
if(!(window.jQuery)) {
var js = document.createElement('script');
js.setAttribute('src', 'https://dynamic.12306.cn/otsweb/js/common/jquery-1.4.2.min.js?version=5.47');
js.setAttribute('type', 'text/javascript');
js.onload = js.onreadystatechange = function() {
if (!this.readyState || this.readyState === 'loaded' || this.readyState === 'complete') {
callback();
js.onload = js.onreadystatechange = null;
}
};
document.getElementsByTagName('head')[0].appendChild(js);
}
}
/**
* 查询余票
* @param {String} fromStation 发站
* @param {String} toStation 到站
* @param {String} trainDate 出发日期
*/
function queryTickets(fromStation, toStation, trainDate) {
var fromStationCode = stationDict[fromStation];
var toStationCode = stationDict[toStation];
// 拼装查询URL
var queryUrl = queryUrlTemplate.replace("{trainDate}", trainDate).replace("{fromStationCode}", fromStationCode).replace("{toStationCode}", toStationCode);
// 查询余票
$.get(queryUrl, function(ticketsInfo) {
// console.log(ticketsInfo);
var availableTrains = [];
var matchedArray = defaultSplitReg.exec(ticketsInfo);// 一趟车次的一条余票信息的数组
while (matchedArray != null) {// 当前车次有余票
availableTrains.push(matchedArray); // 加入有效车次的数组里
matchedArray = defaultSplitReg.exec(ticketsInfo);
}
if(availableTrains.length == 0) {
console.log("不好意思," + fromStation + "-" + toStation + "暂时无票!");
}
else {
console.log("有票了,即将自动跳到预订页面!");
sendDesktopNotification("有票了亲!", fromStation + " - " + toStation + "有票了\r\n快来抢票咯~~");
if(window.myInterval)
clearInterval(myInterval);// 清除轮询,以免烦人条车次提交预订
// reserveTicket(availableTrains[0], fromStation, toStation, trainDate);
}
});
}
/**
* 预订车票 ,节省了刷新页面再点击预订按钮的时间
*/
function reserveTicket(trainInfoArray, fromStation, toStation, trainDate) {
console.log("To reserve ticket: " + trainInfoArray.length);
$.post(submitOrderUrl, {
"station_train_code": trainInfoArray[1],
"train_date": trainDate,
"seattype_num:": "",
"from_station_telecode": trainInfoArray[5],
"to_station_telecode": trainInfoArray[6],
"include_student": "00",
"from_station_telecode_name": fromStation,
"to_station_telecode_name": toStation,
"round_train_date": trainDate,// 返程日期
"round_start_time_str": "00:00--24:00",
"single_round_type": 1, // 单程车票
"train_pass_type": "QB",
"train_class_arr": "QB#D#Z#T#K#QT#",
"start_time_str": "00:00--24:00",
"lishi": trainInfoArray[2], // 历时
"train_start_time": trainInfoArray[3], // 发车时间
"trainno4": trainInfoArray[4],
"arrive_time": trainInfoArray[7], // 到站时间
"from_station_name": trainInfoArray[8],
"to_station_name": trainInfoArray[9],
"from_station_no": trainInfoArray[10],
"to_station_no": trainInfoArray[11],
"ypInfoDetail": trainInfoArray[12],
"mmStr": trainInfoArray[13],
"locationCode": trainInfoArray[14]
}, function(data) {
// console.log(data);
// document.write(data);
// $.get("https://dynamic.12306.cn/otsweb/order/confirmPassengerAction.do?method=getpassengerJson", function(data) { console.log(data) });
// location.href = submitOrderUrl;
});
}
// 桌面通知
function sendDesktopNotification(title, msg) {
if (!window.webkitNotifications || (window.webkitNotifications.checkPermission() != 0)) {// 不支持桌面通知或未授权
alert("不好意思,你的浏览器不支持桌面通知或者你未开启!");
return;
// 不支持桌面通知
}
var notificationMsgBox = window.webkitNotifications.createNotification( icon = "http://www.12306.cn/mormhweb/images/favicon.ico", title, msg);
notificationMsgBox.show();
}
checkjQuery(function() { queryTickets("广州", "吉安", "2013-02-08") });// 考虑无座
// 每5秒刷一次票
var myInterval = setInterval(function() {
queryTickets("广州", "吉安", "2013-02-08");
}, 5000);
这是一个使用JavaScript编写的12306自动刷票脚本,Version 1.0,主要功能包括自动加载jQuery,查询余票,以及在找到余票时发送桌面通知并尝试预订。脚本支持多个车站之间的查询,并设置为每5秒检查一次余票。
5026

被折叠的 条评论
为什么被折叠?



