auto.waitFor();
app.launchApp("大麦");
console.show();
console.setPosition(100,100)
/************更多最新脚本,欢迎进群604964470了解,验证信息填写:在哪里看到本脚本****************/
/***
 牛牛巴士APP:
 1.某麦抢票消息、波泼页码生成、JJ20扫文识字搜答案;
 2.某麦模拟点击脚本已完成;优先购脚本、滑块脚本正在拟测中...
 https://wwxz.lanzouw.com/b0aug8sjc
 密码:9alc
 ***/
//本脚本是通过github大神们的脚本,模仿写出,用来学习使用
//预先说明,滑块问题,需要更换设备和路由器,或者直接用手机网络,到手机网络会慢,自己抉择
//步骤1:在显示倒计时的页面,填好观影人
//步骤2:在此处填好你想看的场次和票档
var ticketInfo = {
    date: "周六",
    price: 680
}
//步骤2.1 0727记录:0秒之后按钮会变"立即订购",继而一瞬间又变回"立即预约",说明APP,在0秒的时候还会再次请求服务器时间,所以此处新添抖动
var zeroToWait = 500;
//步骤3:打开APP,进入有倒计时的页面
//步骤4:点击本脚本上方的"运行"按钮,即会自动跳转到APP
//下面不用管
main(ticketInfo);
function main(ticketInfo) {
    // 从界面上获取开抢时间
    var UIStartTime = id("tv_count_down_remind").findOne();
    // 获取系统本地时间
    var strStartTime = UIStartTime.text();
    print("获取到的开抢时间: " + strStartTime);
    // 通过viewId获取点击坐标
    //todo 如果大麦更新该id,得重新获取jdxd
    var btnBuy = id("trade_project_detail_purchase_status_bar_container_fl").findOne();
    var rectBtnBuy = btnBuy.bounds();
    var clickPosX = rectBtnBuy.centerX();
    var clickPosY = rectBtnBuy.centerY();
    print("获取到的点击坐标: " + clickPosX + ", " + clickPosY);
    // 设置开抢时间
    var year = new Date().getFullYear();
    var month = strStartTime.slice(strStartTime.indexOf("月") - 2, strStartTime.indexOf("月")) - 1;
    var day = strStartTime.slice(strStartTime.indexOf("日") - 2, strStartTime.indexOf("日"));
    var hour = strStartTime.slice(strStartTime.indexOf(":") - 2, strStartTime.indexOf(":"));
    var minute = strStartTime.slice(strStartTime.indexOf(":") + 1, strStartTime.indexOf(":") + 3);
    var second = 0;
    var msecond = 0;
    var startTimestamp = new Date(year, month, day, hour, minute, second, msecond).getTime();
    startTimestamp = startTimestamp - 40; // 减去 40ms 的网络延迟
    var damaiTimestamp;
    var startTime = convertToTime(startTimestamp);
    print("开始时间:\n", startTime);
    print("等待开抢...");
    var i = 0;
     // 循环等待
    while (true) {
        damaiTimestamp = getDamaiTimestamp();
        if (damaiTimestamp >= startTimestamp) {
            print("到点了,自动开始。");
            break;
        }
        var mm = startTimestamp - damaiTimestamp;
        var ss = mm/1000;
        if(ss>300){
            print("剩余:"+(ss)+"秒");
        }else{print("剩余:"+(mm)+"毫秒");}
        i++;
        if(i%200==0){
            print("清屏");
            console.clear();
          //break;
        }
    }
    //2023.07.27  加个抖动,因为在0秒的时候,还会再次请求服务器时间回到APP校准,所以此处等几毫秒吧
    print("加入抖动:" + zeroToWait + "ms");
    sleep(zeroToWait);
    click(clickPosX, clickPosY);
    print("点击立即购买按钮");
    // 选择场次
    textContains(ticketInfo.date).findOne().parent().parent().parent().parent().click();
    print("选择场次ing");
    //选择票档
    textContains(ticketInfo.price).findOne().parent().parent().parent().parent().click();
    print("选择票档ing");
    id("btn_buy").findOne().click();
    print("点击红色确定按钮");
    //print("进入提交订单页面");
    //获取按钮位置
    text("提交订单").findOne().click();
    print("点击提交订单按钮");
    // 提交订单的大麦时间
    var endTime = convertToTime(getDamaiTimestamp());
    console.log("订单提交时间:" + endTime);
}
/**
 * 感谢GitHub大佬提供
 * @param {时间戳} timestamp
 * @returns ISO 8601 格式的北京时间
 */
function convertToTime(timestamp) {
    var date = new Date(Number(timestamp));
    var year = date.getUTCFullYear();
    var month = (date.getUTCMonth() + 1).toString().padStart(2, "0");
    var day = date.getUTCDate().toString().padStart(2, "0");
    var hours = (date.getUTCHours() + 8).toString().padStart(2, "0");
    var minutes = date.getUTCMinutes().toString().padStart(2, "0");
    var seconds = date.getUTCSeconds().toString().padStart(2, "0");
    var milliseconds = date.getUTCMilliseconds().toString().padStart(3, "0");
    var iso8601 = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}.${milliseconds}`;
    return iso8601;
}
/**
 *
 * @returns 大麦服务器时间戳
 */
function getDamaiTimestamp() {
    return JSON.parse(http.get("https://mtop.damai.cn/gw/mtop.common.getTimestamp/", {
        headers: {
            'Host': 'mtop.damai.cn',
            'Content-Type': 'application/json;charset=utf-8',
            'Accept': '*/*',
            'User-Agent': 'floattime/1.1.1 (iPhone; iOS 15.6; Scale/3.00)',
            'Accept-Language': 'zh-Hans-CN;q=1, en-CN;q=0.9',
            'Accept-Encoding': 'gzip, deflate, br',
            'Connection': 'keep-alive'
        }
    }).body.string()).data.t;
}