$room_id, 'raffle_id' => $pk['id'], 'raffle_name' => $pk['title'], 'wait' => time() + mt_rand(5, 25) ]; Statistics::addPushList($data['raffle_name']); array_push(self::$wait_list, $data); } return true; } /** * @use 创建抽奖任务 * @param array $raffles * @return array */ protected static function createLottery(array $raffles): array { $url = 'https://api.live.bilibili.com/xlive/lottery-interface/v1/pk/join'; $tasks = []; $results = []; $user_info = User::parseCookies(); foreach ($raffles as $raffle) { $payload = [ 'id' => $raffle['raffle_id'], 'roomid' => $raffle['room_id'], 'csrf_token' => $user_info['token'], "csrf" => $user_info['token'], ]; array_push($tasks, [ 'payload' => Sign::common($payload), 'source' => [ 'room_id' => $raffle['room_id'], 'raffle_id' => $raffle['raffle_id'], 'raffle_name' => $raffle['raffle_name'] ] ]); } $results = Curl::async('app', $url, $tasks); // print_r($results); return $results; } /** * @use 解析抽奖信息 * @param array $results * @return mixed|void */ protected static function parseLottery(array $results) { foreach ($results as $result) { $data = $result['source']; $content = $result['content']; $de_raw = json_decode($content, true); /* * {'code': 0, 'message': '0', 'ttl': 1, 'data': {'id': 343560, 'gift_type': 0, 'award_id': '1', 'award_text': '辣条X1', 'award_image': 'https://i0.hdslb.com/bfs/live/da6656add2b14a93ed9eb55de55d0fd19f0fc7f6.png', 'award_num': 0, 'title': '大乱斗获胜抽奖'}} * {'code': -1, 'message': '抽奖已结束', 'ttl': 1} * {'code': -2, 'message': '您已参加过抽奖', 'ttl': 1} * {"code":-403,"data":null,"message":"访问被拒绝","msg":"访问被拒绝"} */ if (isset($de_raw['code']) && $de_raw['code'] == 0) { Statistics::addSuccessList($data['raffle_name']); $award_text = $de_raw['data']['award_text']; Log::notice("房间 {$data['room_id']} 编号 {$data['raffle_id']} {$data['raffle_name']}: {$award_text}"); // 收益 Statistics::addProfitList($data['raffle_name'] . '-' . explode('X', $award_text)[0], $de_raw['data']['award_num']); } elseif (isset($de_raw['msg']) && $de_raw['code'] == -403 && $de_raw['msg'] == '访问被拒绝') { Log::debug("房间 {$data['room_id']} 编号 {$data['raffle_id']} {$data['raffle_name']}: {$de_raw['message']}"); self::pauseLock(); } else { Log::notice("房间 {$data['room_id']} 编号 {$data['raffle_id']} {$data['raffle_name']}: {$de_raw['message']}"); } } } }