|
|
@ -167,12 +167,13 @@ func (env *Env) startBooking(job *Booking, username string, password string, cre |
|
|
|
passport := job.Passport |
|
|
|
passportExpiry := job.PassportExpiry.Format("2 Jan 2006") |
|
|
|
contact := job.Contact |
|
|
|
reverse := job.BackToSg |
|
|
|
|
|
|
|
threadCount := 10 |
|
|
|
for i := 0; i < threadCount; i++ { |
|
|
|
time.Sleep(time.Millisecond * 100) |
|
|
|
go func() { |
|
|
|
currPage := getBookingSlots(browser, onwardDate) |
|
|
|
currPage := getBookingSlots(browser, onwardDate, reverse) |
|
|
|
log.Println("Booking page loaded.") |
|
|
|
|
|
|
|
currPage = selectBookingSlot(getBookingSlotCtx, currPage, timeCode) |
|
|
@ -272,7 +273,7 @@ func ktmTrainLogin(browser *rod.Browser, username string, password string) *rod. |
|
|
|
return page |
|
|
|
} |
|
|
|
|
|
|
|
func getBookingSlots(browser *rod.Browser, onwardDate string) *rod.Page { |
|
|
|
func getBookingSlots(browser *rod.Browser, onwardDate string, reverse bool) *rod.Page { |
|
|
|
page := browser.MustPage("https://shuttleonline.ktmb.com.my/Home/Shuttle") |
|
|
|
page.MustWaitLoad() |
|
|
|
|
|
|
@ -295,7 +296,11 @@ func getBookingSlots(browser *rod.Browser, onwardDate string) *rod.Page { |
|
|
|
woodlandsData := page.MustElement("#ToStationData").MustAttribute("value") |
|
|
|
woodlandsID := page.MustElement("#ToStationId").MustAttribute("value") |
|
|
|
|
|
|
|
sensitiveCustomForm(page, *woodlandsData, *jBSentralData, *woodlandsID, *jBSentralID, onwardDate, passengerCountStr, *requestVerificationToken) |
|
|
|
if !reverse { |
|
|
|
sensitiveCustomForm(page, *woodlandsData, *jBSentralData, *woodlandsID, *jBSentralID, onwardDate, passengerCountStr, *requestVerificationToken) |
|
|
|
} else { |
|
|
|
sensitiveCustomForm(page, *jBSentralData, *woodlandsData, *jBSentralID, *woodlandsID, onwardDate, passengerCountStr, *requestVerificationToken) |
|
|
|
} |
|
|
|
page.MustWaitLoad() |
|
|
|
|
|
|
|
return page |
|
|
|