public static function getDiff($ver = '', $lang = 'zh-cn') { if (!$ver) { return ['error' => 'Version not found']; } $latest = self::getLatest(); if ($latest == $ver) { return []; } $key = $lang . $ver . '-' . $latest; return self::remember($key, function () use($ver, $latest, $lang) { $diff = []; $latestSubtitles = SubtitleCache::get('latest', $lang); $targetSubtitles = SubtitleCache::get($ver, $lang); foreach ($latestSubtitles as $shipId => $voices) { if ($shipId == 'version' || !$shipId) { continue; } if (array_key_exists($shipId, $targetSubtitles)) { foreach ($voices as $voiceId => $text) { if (!array_key_exists($voiceId, $targetSubtitles[$shipId]) || $targetSubtitles[$shipId][$voiceId] != $text) { if (!array_key_exists($shipId, $diff)) { $diff[$shipId] = []; } $diff[$shipId][$voiceId] = $text; } } } else { $diff[$shipId] = $voices; } } $diff['version'] = $latest; return $diff; }); }
} return response()->json($diff); }); $app->get('/subtitles/jp/diff/{version:\\d{8}[\\dA-Z]{0,2}}', function ($version) { if (Cache::has('maintenance') and Cache::get("maintenance") == 'true') { return response()->json([]); } try { $diff = SubtitleCache::getDiff($version, 'jp'); } catch (FileNotFoundException $e) { return response()->json(['result' => 'error', 'reason' => 'Version not found']); } return response()->json($diff); }); $app->get('/subtitles/jp', function () { $subtitles = SubtitleCache::get('latest', 'jp'); if ($subtitles) { return $subtitles; } else { return response()->json(['result' => 'error', 'reason' => 'Subtitles not found']); } }); $app->get('/subtitles/jp/{id:\\d{1,4}}', function ($id) { $subtitles = SubtitleCache::getByShip($id, 'jp'); if ($subtitles) { return $subtitles; } else { return response()->json(['result' => 'error', 'reason' => 'Subtitles not found']); } }); $app->get('/subtitles/{id:\\d{1,4}}', function ($id) {