get($url); if (!$res->ok() || empty($res->json('results'))) { Cache::put($key, null, self::CACHE_MISS); return null; } $result = []; foreach ($res->json('results') as $item) { $type = $item['skip_type'] ?? null; $interval = $item['interval'] ?? null; if (!$type || !$interval) continue; $result[$type] = [ 'start' => round((float)($interval['start_time'] ?? $interval['startTime'] ?? 0), 2), 'end' => round((float)($interval['end_time'] ?? $interval['endTime'] ?? 0), 2), ]; } $data = empty($result) ? null : $result; Cache::put($key, $data, $data ? self::CACHE_HIT : self::CACHE_MISS); return $data; } catch (\Throwable) { return null; } } public function searchByTitle(string $title, ?string $titleEn = null, ?string $titleJp = null): ?string { $jikan = new JikanService(); return $jikan->searchMalId($title, $titleEn, $titleJp); } }