$TCMODS_CLOCKRAD_RETRY = 3; } else { --$TCMODS_CLOCKRAD_RETRY; // decrement } // shutdown requested if ($_tcmods_conf['clock_radio_shutdown'] == "Yes") { sysCmd('poweroff'); } } } // TC (Tim Curtis) 2015-05-30: update playback history log if ($_tcmods_conf['play_history_enabled'] == "Yes" && ($mpd = openMpdSocket(MPD_HOST, 6600))) { $resp = execMpdCommand($mpd, 'currentsong'); closeMpdSocket($mpd); $currentsong = _parseMpdCurrentSong($resp); // TC (Tim Curtis) 2015-07-31: updated logic // Logic modeled after player_lib.js getPlaylist(); // RADIO STATION if (isset($currentsong['Name']) || substr($currentsong['file'], 0, 4) == "http" && !isset($currentsong['Artist'])) { if (!isset($currentsong['Title'])) { $title = "Streaming source"; } else { $title = $currentsong['Title']; $searchStr = str_replace('-', ' ', $title); $searchStr = str_replace('&', ' ', $searchStr); $searchStr = preg_replace('!\\s+!', '+', $searchStr); } $artist = "<i class=\"icon-microphone\"></i>"; $result = ConfigDB::read('cfg_radio', $currentsong['file']); if (0 == count($result)) {
} Session::open(); // Fetch MPD status $status = _parseStatusResponse(mpdStatus($mpd)); // Register player state in session $_SESSION['state'] = $status['state']; Session::close(); // Check and compare GUI state with Backend state // MPD idle timeout loop, mpdMonitorState() waits until something changes in MPD then returns status if ($_GET['state'] == $status['state']) { $status = mpdMonitorState($mpd); } // make sure song ist defined $song = isset($status['song']) ? $status['song'] : ''; $status['x_status'] = $status; $status['x_currentsong'] = _parseMpdCurrentSong(execMpdCommand($mpd, 'currentsong')); $status['x_playlistinfo'] = _parseFileListResponse(execMpdCommand($mpd, "playlistinfo " . $song)); // get track info for currently playing track $queue = mpdQueueTrackInfo($mpd, $song); if (isset($queue[0])) { $track = $queue[0]; // TODO check moving this to mpdEnrichItem $status['fileext'] = pathinfo($track['file'], PATHINFO_EXTENSION); // TODO use standard names instead of current xyz $status['currentartist'] = isset($track['Artist']) ? $track['Artist'] : ''; $status['currentsong'] = isset($track['Title']) ? $track['Title'] : ''; $status['currentalbum'] = isset($track['Album']) ? $track['Album'] : ''; // experimental mpdEnrichItemInfo($track); $status = array_merge($status, $track); }
if ($_hwparams['status'] == 'active') { $audioinfo_hwparams_format = $_hwparams['channels'] . ", "; $audioinfo_hwparams_format .= $_hwparams['format'] . " bit, "; $audioinfo_hwparams_format .= $_hwparams['rate'] . " kHz"; $audioinfo_hwparams_calcrate = $_hwparams['calcrate'] . " mbps"; } else { $audioinfo_hwparams_format = ''; $audioinfo_hwparams_calcrate = '0 bps'; } // INPUT INFO: mpd currentsong and status cmds if (!$mpd) { $audioinfo_mpdstatus = 'Error Connecting to MPD daemon'; } else { // mpd currentsong $res = execMpdCommand($mpd, 'currentsong'); $_mpdcurrentsong = _parseMpdCurrentSong($res); $audioinfo_mpdcurrentsong_file = $_mpdcurrentsong['file']; // mpd status $_mpdstatus = _parseStatusResponse(mpdStatus($mpd)); if ($_hwparams['status'] == 'active') { // source format $audioinfo_mpdstatus_format = $_mpdstatus['audio_channels'] . ", "; // TC (Tim Curtis) 2015-07-31: format when "dsd" (for dsf files) $audioinfo_mpdstatus_format .= $_mpdstatus['audio_sample_depth']; $audioinfo_mpdstatus_format .= $_mpdstatus['audio_sample_depth'] == "dsd" ? ", " : " bit, "; $audioinfo_mpdstatus_format .= $_mpdstatus['audio_sample_rate'] . " kHz"; // bit rate $audioinfo_mpdstatus_bitrate = $_mpdstatus['bitrate'] . " kbps"; } else { $audioinfo_mpdstatus_format = ''; $audioinfo_mpdstatus_bitrate = "0 bps";
// nested array execMpdCommand($mpd, 'play ' . $pos); } break; // - library panel Add/replace/playall btn // - library panel Add/replace/playall btn case 'addallreplaceplay': if (null !== $path) { execMpdCommand($mpd, 'clear'); $res = mpdQueueAddMultiple($mpd, array_column($path, 'file')); // nested array execMpdCommand($mpd, 'play'); } break; case 'currentsong': $res = _parseMpdCurrentSong(execMpdCommand($mpd, 'currentsong')); mpdEnrichItemInfo($res); break; case 'playlist': $res = mpdQueueInfo($mpd); foreach ($res as &$song) { mpdEnrichItemInfo($song); } break; default: // execute any mpd command $res = execMpdCommand($mpd, $cmd); } closeMpdSocket($mpd); header('Content-type: application/json'); echo json_encode($res, JSON_PRETTY_PRINT);