(($plex['event'] == 'media.scrobble') ? 'single' : 'playing_now'), 'payload' => array(array( 'track_metadata' => array( 'artist_name' => $plex['Metadata']['originalTitle'] ?? $plex['Metadata']['grandparentTitle'], 'track_name' => $plex['Metadata']['title'], 'release_name' => $plex['Metadata']['parentTitle'], 'additional_info' => array( 'media_player' => 'Plex', 'submission_client' => 'https://jfr.im/git/plex-to-listenbrainz.git/', 'submission_client_version' => trim(`git -C $DIR show --summary --pretty=format:%h | head -1`), 'tracknumber' => $plex['Metadata']['index'], ), ), )), ); if ($plex['event'] == 'media.scrobble') { $listenbrainz['payload'][0]['listened_at'] = time(); $listenbrainz['listen_type'] = 'single'; } else { $listenbrainz['listen_type'] = 'playing_now'; } if (!empty($plex['Metadata']['attribution'])) { $listenbrainz['payload'][0]['track_metadata']['additional_info']['music_service'] = implode('.', array_reverse(explode('.', $plex['Metadata']['attribution']))); } if (isset($plex['Metadata']['Guid']) && is_array($plex['Metadata']['Guid']) && count($plex['Metadata']['Guid']) && isset($plex['Metadata']['Guid'][0]['id'])) { if (isset($plex['Metadata']['Guid'][0]['id']) && strpos($plex['Metadata']['Guid'][0]['id'], 'mbid://') === 0) { $listenbrainz['payload'][0]['track_metadata']['additional_info']['track_mbid'] = substr($plex['Metadata']['Guid'][0]['id'], 7); } } $lb_payload = json_encode($listenbrainz); $ch = curl_init('https://api.listenbrainz.org/1/submit-listens'); curl_setopt_array($ch, array( CURLOPT_HTTPHEADER => array( 'Content-Type: application/json', 'Authorization: Token ' . $_GET['token'], ), CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_POSTFIELDS => json_encode($listenbrainz), )); $resp = curl_exec($ch); if ($resp === FALSE) { err("Failed to reach ListenBrainz: curl " . curl_errno($ch) . ": " . curl_error($ch)); exit; } $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($status != 200) { err("Error response from ListenBrainz: HTTP $status: $resp"); exit; } file_put_contents('/home/jrunyon/plexlog', var_export($status, true) . ';' . var_export($resp, true), FILE_APPEND);