/** |
* author: jxq |
*/ |
var stationDict = |
{ |
"广州" : "GZQ" , |
"吉安" : "VAG" , |
"北京" : "BJP" , |
"北京西" : "BXP" , |
"太原" : "TYV" , |
"深圳" : "SZQ" , |
"上海" : "SHH" |
}; |
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" ; |
function queryTickets(fromStation, toStation, trainDate) |
{ |
|
var fromStationCode = stationDict[fromStation]; |
var toStationCode = stationDict[toStation]; |
|
var queryUrl = queryUrlTemplate.replace( "{trainDate}" , trainDate).replace( "{fromStationCode}" , fromStationCode).replace( "{toStationCode}" , toStationCode); |
|
// 查询余票 |
$.get(queryUrl, function (data) |
{ |
// 简单地检查是否有票,如果有票,则data中一定包含文本 btn130_2 |
if (data.indexOf( "btn130_2" ) != -1) |
{ // 有票 |
sendDesktopNotification( "有票了亲!" , fromStation + " - " + toStation + "有票了!\n快来抢票哈~~" ); |
clearInterval(myInterval); // 清除轮询,以免烦人 |
} |
else |
{ |
console.log( "不好意思," + fromStation + "-" + toStation + "暂时无票!" ); |
} |
} |
); |
} |
// 桌面通知 |
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(); |
} |
queryTickets( "北京" , "广州" , "2013-02-07" ); |
// 每5秒刷一次票 |
var myInterval = setInterval( function () |
{ |
queryTickets( "北京" , "广州" , "2013-02-07" ); |
}, 5000); |
/* |
使用方法如下: |
1、修改你的出发地、目的地以及出发时间信息,并且配置对应的城市代码(这个自己抓包看,很简单,Chrome network面板或者Fiddler) |
2、登录并打开订票窗口 |
3、在控制台输入这段脚本代码 |
4、等待好了,每5秒刷一次,没票会在控制台输出信息,有票会弹出桌面通知,具体参考截图 |
缺陷 |
A、不支持筛选硬座、硬卧等信息,但是要支持很简单,看我的代码就知道了 |
B、不支持自动提交订单 |
C、只能帮你检查是否有票,有票了还需要你自己去点下查询按钮,然后订票(主要是因为这个按钮在iframe内部,不方便直接操纵) |
D、你的Chrome浏览器可能会遇到 |
分享自:http://www.oschina.net/code/snippet_111708_17517 |
*/ |
初级设计师
by: 海大软件1102班 发表于:2013-01-22 00:20:26 顶(4) | 踩(2) 回复
牛逼啊!!!能刷到吗?
回复评论