request->getJSON(true) ?: $this->request->getPost(); $url = (string) ($payload['url'] ?? ''); $videoId = YoutubeLib::extractId($url); if ($videoId === null) { return response()->setStatusCode(422)->setJSON([ 'ok' => false, 'error' => 'invalid_url', 'message' => 'Invalid YouTube URL. Paste a link like https://www.youtube.com/watch?v=…', ]); } service('analytics')->track('tool_start', ['tool' => 'youtube-url-analyzer']); return response()->setJSON([ 'ok' => true, 'id' => $videoId, 'watch_url' => 'https://www.youtube.com/watch?v=' . $videoId, 'embed_url' => 'https://www.youtube-nocookie.com/embed/' . $videoId, 'thumbnails' => [ ['label' => 'Max resolution', 'url' => "https://i.ytimg.com/vi/{$videoId}/maxresdefault.jpg"], ['label' => 'Standard', 'url' => "https://i.ytimg.com/vi/{$videoId}/sddefault.jpg"], ['label' => 'High quality', 'url' => "https://i.ytimg.com/vi/{$videoId}/hqdefault.jpg"], ['label' => 'Medium', 'url' => "https://i.ytimg.com/vi/{$videoId}/mqdefault.jpg"], ], 'info' => YoutubeLib::fetchInfo($videoId), ]); } }