1
0
forked from x/icebergs

add 12306

This commit is contained in:
shaoying 2020-01-06 13:24:22 +08:00
parent bfd7477b4e
commit 087169acd1
2 changed files with 56 additions and 17 deletions

View File

@ -539,6 +539,8 @@ var Index = &ice.Context{Name: "web", Help: "网页模块",
m.Log(ice.LOG_EXPORT, "json: %s", kit.Format(data)) m.Log(ice.LOG_EXPORT, "json: %s", kit.Format(data))
} }
arg = arg[:0] arg = arg[:0]
} else {
body = bytes.NewBuffer([]byte{})
} }
// 构造请求 // 构造请求
@ -570,6 +572,18 @@ var Index = &ice.Context{Name: "web", Help: "网页模块",
// 发送请求 // 发送请求
res, e := web.Client.Do(req) res, e := web.Client.Do(req)
if m.Warn(e != nil, "%s", e) {
m.Set("result")
return
}
// 验证结果
if m.Cost("%s %s: %s", res.Status, res.Header.Get("Content-Length"), res.Header.Get("Content-Type")); m.Warn(res.StatusCode != http.StatusOK, "%s", res.Status) {
if cache != "" {
m.Set("result")
}
return
}
// 缓存参数 // 缓存参数
for _, v := range res.Cookies() { for _, v := range res.Cookies() {
@ -577,19 +591,6 @@ var Index = &ice.Context{Name: "web", Help: "网页模块",
m.Info("%s: %s", v.Name, v.Value) m.Info("%s: %s", v.Name, v.Value)
} }
// 验证结果
if m.Cost("%s %s: %s", res.Status, res.Header.Get("Content-Length"), res.Header.Get("Content-Type")); m.Warn(e != nil, "%s", e) {
if cache != "" {
m.Set("result")
}
return
} else if m.Warn(res.StatusCode != http.StatusOK, "%s", res.Status) {
if cache != "" {
m.Set("result")
}
return
}
switch cache { switch cache {
case "cache": case "cache":
// 缓存结果 // 缓存结果
@ -599,12 +600,13 @@ var Index = &ice.Context{Name: "web", Help: "网页模块",
// 解析结果 // 解析结果
var data interface{} var data interface{}
m.Assert(json.NewDecoder(res.Body).Decode(&data)) m.Assert(json.NewDecoder(res.Body).Decode(&data))
m.Info("res: %s", kit.Formats(data))
kit.Fetch(data, func(key string, value interface{}) { kit.Fetch(data, func(key string, value interface{}) {
switch value := value.(type) { switch value := value.(type) {
case []interface{}: case []interface{}:
m.Append(key, value) m.Push(key, value)
default: default:
m.Append(key, kit.Format(value)) m.Push(key, kit.Format(value))
} }
}) })
} }

View File

@ -1,21 +1,28 @@
package mall package mall
import ( import (
"github.com/shylinux/toolkits"
"github.com/shylinux/icebergs" "github.com/shylinux/icebergs"
_ "github.com/shylinux/icebergs/base" _ "github.com/shylinux/icebergs/base"
"github.com/shylinux/icebergs/base/web" "github.com/shylinux/icebergs/base/web"
"github.com/shylinux/toolkits"
"fmt"
"os" "os"
"path" "path"
"strings" "strings"
"time"
) )
var Index = &ice.Context{Name: "mall", Help: "团队模块", var Index = &ice.Context{Name: "mall", Help: "团队模块",
Caches: map[string]*ice.Cache{}, Caches: map[string]*ice.Cache{},
Configs: map[string]*ice.Config{}, Configs: map[string]*ice.Config{},
Commands: map[string]*ice.Command{ Commands: map[string]*ice.Command{
ice.ICE_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Cmd(ice.WEB_SPIDE, "add", "12306", "https://kyfw.12306.cn")
}},
ice.ICE_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
}},
"_miss": {Name: "miss", Help: "任务", Meta: map[string]interface{}{ "_miss": {Name: "miss", Help: "任务", Meta: map[string]interface{}{
"exports": []interface{}{"you", "name"}, "exports": []interface{}{"you", "name"},
"detail": []interface{}{"启动", "停止"}, "detail": []interface{}{"启动", "停止"},
@ -125,6 +132,36 @@ var Index = &ice.Context{Name: "mall", Help: "团队模块",
kit.Select("0", arg, 0), kit.Select("10", arg, 1), kit.Select("", arg, 2), kit.Select("", arg, 3), kit.Select("0", arg, 0), kit.Select("10", arg, 1), kit.Select("", arg, 2), kit.Select("", arg, 3),
kit.Select("id status begin_time close_time name text", arg, 4)) kit.Select("id status begin_time close_time name text", arg, 4))
}}, }},
"12306": &ice.Command{Name: "12306", Help: "12306", Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
date := time.Now().Add(time.Hour * 24).Format("2006-01-02")
if len(arg) > 0 {
date, arg = arg[0], arg[1:]
}
to := "QFK"
if len(arg) > 0 {
to, arg = arg[0], arg[1:]
}
from := "BJP"
if len(arg) > 0 {
from, arg = arg[0], arg[1:]
}
m.Echo("%s->%s %s\n", from, to, date)
m.Cmd(ice.WEB_SPIDE, "12306", "GET", fmt.Sprintf("/otn/leftTicket/init?linktypeid=dc&fs=北京,BJP&ts=曲阜,QFK&date=%s&flag=N,N,Y", date))
m.Cmd(ice.WEB_SPIDE, "12306", "GET", fmt.Sprintf("/otn/leftTicket/queryZ?leftTicketDTO.train_date=%s&leftTicketDTO.from_station=%s&leftTicketDTO.to_station=%s&purpose_codes=ADULT", date, from, to)).Table(func(index int, value map[string]string, head []string) {
kit.Fetch(kit.Value(kit.UnMarshal(value["data"]), "result"), func(index int, value string) {
fields := strings.Split(value, "|")
m.Info("once %d len(%d) %v", index, len(fields), fields)
m.Push("车次--", fields[3])
m.Push("出发----", fields[8])
m.Push("到站----", fields[9])
m.Push("时长----", fields[10])
m.Push("二等座", fields[30])
m.Push("一等座", fields[31])
})
})
return
}},
}, },
} }