diff --git a/api/scrobble.php b/api/scrobble.php index 4004b25..b0b9b7c 100644 --- a/api/scrobble.php +++ b/api/scrobble.php @@ -89,7 +89,14 @@ class NavidromeScrobbleHandler extends ApiHandler private function isTrackAlreadyScrobbled(array $track): bool { - $playDate = strtotime($track["playDate"]); + $playDateString = $track["playDate"] ?? null; + + if (!$playDateString) return false; + + $playDate = strtotime($playDateString); + + if ($playDate === false) return false; + $existingListen = $this->fetchFromApi("listens", "listened_at=eq.{$playDate}&limit=1"); return !empty($existingListen); @@ -186,17 +193,24 @@ class NavidromeScrobbleHandler extends ApiHandler private function insertListen(array $track, string $albumKey): void { - $playDate = strtotime($track["playDate"]); + $payload = [ + "artist_name" => $track["artist"], + "album_name" => $track["album"], + "track_name" => $track["title"], + "album_key" => $albumKey + ]; - $this->makeRequest("POST", "listens", [ - "json" => [ - "artist_name" => $track["artist"], - "album_name" => $track["album"], - "track_name" => $track["title"], - "listened_at" => $playDate, - "album_key" => $albumKey - ] - ]); + if (!empty($track["playDate"])) { + $playDate = strtotime($track["playDate"]); + if ($playDate !== false) $payload["listened_at"] = $playDate; + } + + if (!isset($payload["listened_at"])) { + error_log("Skipping track due to missing or invalid listened_at: " . json_encode($track)); + return; + } + + $this->makeRequest("POST", "listens", ["json" => $payload]); } private function generateAlbumKey(string $artistName, string $albumName): string diff --git a/package-lock.json b/package-lock.json index 294f5d1..89eb327 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "coryd.dev", - "version": "8.3.2", + "version": "8.3.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "coryd.dev", - "version": "8.3.2", + "version": "8.3.3", "license": "MIT", "dependencies": { "minisearch": "^7.1.2", diff --git a/package.json b/package.json index 006c3f5..01da00e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "coryd.dev", - "version": "8.3.2", + "version": "8.3.3", "description": "The source for my personal site. Built using 11ty (and other tools).", "type": "module", "engines": {