= 15)) { $connection = ConnectionInfo::orderBy('id', 'desc')->take(1)->first(); $json = file_get_contents("http://{$connection->ip}:{$connection->port}/stats?json=1"); $stats = json_decode($json); $ret = []; if (empty($stats->songtitle)) { return ['status' => false]; } else { $old = file_exists(storage_path('stats.json')) ? json_decode(file_get_contents(storage_path('stats.json'))) : false; $ret['dj'] = empty($stats->dj) ? ($old ? $old->dj : false) : $stats->dj; $ret['raw_dj'] = empty($stats->dj) ? ($old ? $old->raw_dj : false) : $stats->dj; $ret['listeners'] = $stats->currentlisteners; if (!$ret['dj']) { $timetable = Timetable::where('week', Carbon::now()->weekOfYear) ->where('year', Carbon::now()->year) ->where('day', Carbon::now()->format('N') - 1) ->where('hour', Carbon::now()->hour) ->first(); $ret['raw_dj'] = $timetable ? $timetable->user->username : 'Offline'; $ret['dj'] = $ret['raw_dj']; } if ($ret['raw_dj'] !== 'Offline') { $user = User::where('username', $ret['raw_dj'])->first(); if (!$user) { // user doesn't exist (unknown user/slot isn't booked), kick him from the radio. $client = new Client; $client->request('GET', "http://{$connection->ip}:{$connection->port}/admin.cgi?sid=1&mode=kicksrc", [ 'auth' => ['admin', env('SHOUTCAST_ADMIN')] ]); abort(404); } $ret['dj'] = $user->getDisplayName()->toHtml(); $ret['habbo'] = $user->fields->{env('HABBO_FIELD')}; } else { $ret['habbo'] = ''; } if (count(explode(' - ', $stats->songtitle, 2)) == 2) { list($artist, $song) = explode(' - ', $stats->songtitle, 2); $ret['artist'] = $artist; $ret['song'] = $song; /*if ($stats->songtitle !== "{$old->artist} - {$old->song}") { $lastfm = new AuthApi('getsession', [ 'apiKey' => env('LASTFM_API_KEY'), 'secret' => env('LASTFM_SECRET'), 'token' => env('LASTFM_TOKEN') ]); $trackApi = new TrackApi($lastfm); $trackApi->scrobble(['artist' => $artist, 'track' => $song, 'timestamp' => 400]); }*/ } else { $ret['song'] = $stats->songtitle; } file_put_contents(storage_path('stats.json'), json_encode($ret)); } return $ret; } else { return json_decode(file_get_contents(storage_path('stats.json')), true); } } }