12306 查询余票

以下代码仅供学习交流用,切勿用作其他用途


/data/favorite_name
见附件
index.js
const DATAS = require('../12306/data/favorite_name');
const request = require('request-promise-native');
const STATIONS = DATAS.split('|');
const split_array = (arr, len) => {
let a_len = arr.length;
let result = [];
for (let i = 0; i < a_len; i += len) {
result.push(arr.slice(i, i + len));
}
return result;
}
const STATIONSMap = split_array(STATIONS, 5).reduce((a, b) => {
a.push({
code: b[0],
name: b[1],
station: b[2],
station_py: b[3],
station_pyj: b[4]
});
return a
}, []);
const getStation = (name, key = 'name') => STATIONSMap.filter(e => e.station == name)[0][key]
// console.log(STATIONS.filter(e => e.station == 'HJL')[0].name)
const options = {
headers: { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36' },
uri: 'https://kyfw.12306.cn/otn/leftTicket/queryZ',
qs: {
'leftTicketDTO.train_date': '2019-01-28',
'leftTicketDTO.from_station': 'SRH',
'leftTicketDTO.to_station': 'DYW',
'purpose_codes': 'ADULT'
},
transform: e => JSON.parse(e).data.result.reduce((a, b) => {
const arr = b.split('|');
a.push({
remark: arr[1], //备注
_id: arr[2], //id
type: arr[3].slice(0, 1), //车次类型
number: arr[3], //车号
station_begin: getStation(arr[4]), //起点站
station_end: getStation(arr[5]), //终点站
station_from: getStation(arr[6]), //出发站
station_to: getStation(arr[7]), //到达站
time_go: arr[8], //出发时间
time_arrival: arr[9], //到达时间
time_take: arr[10], //历时
O: arr[32], //二等座
M: arr[31], //一等座
A9: arr[30], //商务特等座
});
return a
}, [])
};
!(async() => {
try {
const datas = await request(options);
console.log(datas)
} catch (error) {
console.log(error)
}
})()

0 个评论

要回复文章请先登录注册