});
$app->get('/subtitles/{id:\\d{1,4}}', function ($id) {
    $subtitles = SubtitleCache::getByShip($id);
    if ($subtitles) {
        return $subtitles;
    } else {
        return response()->json(['result' => 'error', 'reason' => 'Subtitles not found']);
    }
});
$app->get('/subtitles/detail', ['middleware' => 'cache', function () {
    $subtitlesRaw = Util::remember('subtitles/distinct', function () {
        return json_decode(Storage::disk('local')->get('subtitles/subtitles_distinct.json'), true);
    });
    $subtitles = $subtitlesRaw['zh'];
    $subtitlesJP = $subtitlesRaw['jp'];
    $ships = json_decode(Util::getShips(), true);
    $results = [];
    foreach ($ships as $ship) {
        $id = $ship['id'];
        if (!array_key_exists($id, $subtitles) && !array_key_exists($id, $subtitlesJP)) {
            continue;
        }
        $result = [];
        for ($voiceId = 1; $voiceId < 54; $voiceId++) {
            if (array_key_exists($id, $subtitles) && array_key_exists($voiceId, $subtitles[$id])) {
                $item = [];
                $item['zh'] = $subtitles[$id][$voiceId];
                if (array_key_exists($id, $subtitlesJP) && array_key_exists($voiceId, $subtitlesJP[$id])) {
                    $item['jp'] = $subtitlesJP[$id][$voiceId];
                }
                $wikid = $ship['wiki_id'];