偶尔家人会有预约医生的需要,比如四川华西,于是...
没有技术含量,稍微用点时间。程序员的人生就是用代码改变生活点滴。
要实现声光电也是可以的。实现了在家里服务器中语音提醒,以及在企业微信号中提示信息
package main
import (
"bytes"
"fmt"
"io/ioutil"
"net/http"
"os"
"os/exec"
"strconv"
"time"
"github.com/tidwall/gjson"
)
func main() {
fmt.Println("获取数据中...")
doctorID := "5618"
if len(os.Args) > 1 {
doctorID = os.Args[1]
}
resp, _ := http.Get(fmt.Sprintf("http://www.cd120.com/doctorScheduleRecond.jspx?doctorCode=%s", doctorID))
//resp, _ := http.Get("http://www.cd120.com/doctorScheduleRecond.jspx?doctorCode=0544")
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println("数据分析中...")
doctorName := gjson.Get(string(body), "data.vo.doctorName")
value := gjson.Get(string(body), "data.vo.scheduleStrList")
fmt.Println(doctorName, "-----------------------------")
for i := 0; i < 10; i++ {
v := value.Get(strconv.Itoa(i))
if v.String() != "" {
amType := v.Get("amType").String()
pmType := v.Get("pmType").String()
serviceDate := v.Get("serviceDate").String()
weekDays := v.Get("weekDays").String()
fmt.Println(fmt.Sprintf("%s %s \t上午:%-7s \t下午:%-7s", serviceDate, weekDays, amType, pmType))
if amType == "可预约" {
info := fmt.Sprintf("%s医生%s上午可预约了", doctorName, serviceDate)
Shell("qywx " + info) //企业微信发信息
for m := 0; m < 3; m++ { //让它多提示几遍
Shell("say " + info) //语音提示
time.Sleep(1 * time.Second)
}
}
if pmType == "可预约" {
info := fmt.Sprintf("%s医生%s下午可预约了", doctorName, serviceDate)
Shell("qywx " + info)
for m := 0; m < 3; m++ {
Shell("say " + info)
time.Sleep(1 * time.Second)
}
}
}
}
}
// 运行命令
func Shell(cmdStr string) string {
cmd := exec.Command("/bin/bash", "-c", cmdStr)
var out bytes.Buffer
cmd.Stdout = &out
cmd.Run()
ret := out.String()
return ret
}