public static function settingsTest($app) { $socket = openMpdSocket('/run/mpd.sock'); sendMpdCommand($socket, 'status'); $song = readMpdResponse($socket); // var_dump(self::parsePlaylist($song)); echo json_encode(playerController::parsePlaylist($song)); }
fclose($fp); // Start minidlna service sysCmd('/usr/bin/minidlna -f /run/minidlna.conf'); } // check /etc/network/interfaces integrity hashCFG('check_net', $db); // check /etc/mpd.conf integrity hashCFG('check_mpd', $db); // check /etc/auto.nas integrity // hashCFG('check_source',$db); // unlock session files playerSession('unlock', $db, '', ''); // Cmediafix startup check if (isset($_SESSION['cmediafix']) && $_SESSION['cmediafix'] == 1) { $mpd = openMpdSocket('localhost', 6600); sendMpdCommand($mpd, 'cmediafix'); closeMpdSocket($mpd); } // Utilities to start with Volumio // Shairport for Airplay Capability //Retrieve Output Device $dbh = cfgdb_connect($db); $query_cfg = "SELECT param,value_player FROM cfg_mpd WHERE value_player!=''"; $mpdcfg = sdbquery($query_cfg, $dbh); $dbh = null; foreach ($mpdcfg as $cfg) { if ($cfg['param'] == 'audio_output_format' && $cfg['value_player'] == 'disabled') { $output .= ''; } else { if ($cfg['param'] == 'device') { $device = $cfg['value_player'];
<script src="js/jquery.placeholder.js"></script> <script src="js/parsley.min.js"></script> <script src="js/i18n/_messages.en.js" type="text/javascript"></script> <script src="js/application.js"></script> <script src="js/volumio.settings.js"></script> <script src="js/jquery.pnotify.min.js"></script> <script src="js/bootstrap-fileupload.js"></script> <?php } //WebRadio Add Dialog if (isset($_POST['radio-name']) && isset($_POST['radio-url'])) { $url = $_POST['radio-url']; $name = $_POST['radio-name']; $ret = file_put_contents('/var/lib/mpd/music/WEBRADIO/' . $name . '.pls', $url); session_start(); sendMpdCommand($mpd, 'update WEBRADIO'); // set UI notify $_SESSION['notify']['msg'] = 'New WebRadio Added'; // unlock session file playerSession('unlock'); } ?> <script type="text/javascript"> setLibOptions( <? echo isset($_SESSION['displaylib']) && $_SESSION['displaylib'] == 1 ? 1 : 0;?>/*is enabled?*/, <? echo isset($_SESSION['displaylibastab']) && $_SESSION['displaylibastab'] == 1 ? 1 : 0;?>/*display as tab o <? echo $sezione == 'index' ? 1 : 0; ?>/*should load it?*/ ); loadLibraryIfNeeded(); </script>
playerSession('open', $db, '', ''); playerSession('unlock', $db, '', ''); // set template $tpl = "indextpl.html"; ?> <!-- content --!> <?php eval("echoTemplate(\"" . getTemplate("templates/{$tpl}") . "\");"); ?> <!-- content --> <?php //generic functions in home if (isset($_POST['syscmd'])) { if ($_SESSION['w_lock'] != 1 && $_SESSION['w_queue'] == '') { session_start(); sendMpdCommand($mpd, 'clear'); // set UI notify $_SESSION['notify']['title'] = 'Clear Queue'; $_SESSION['notify']['msg'] = 'Play Queue Cleared'; // unlock session file playerSession('unlock'); } else { echo "background worker busy"; } // unlock session file playerSession('unlock'); } ?> <?php include '_footer.php';
$sSpopCommand = $sRawCommand; } } } } } } } } if (isset($sSpopCommand)) { // If command is to be passed to spop if (strcmp($sSpopCommand, "") != 0) { sendSpopCommand($spop, $sSpopCommand); } } else { // Else pass command to MPD sendMpdCommand($mpd, $sRawCommand); } } } else { echo json_encode(['service' => 'MPD COMMAND INTERFACE', 'disclaimer' => 'INTERNAL USE ONLY!', 'hosted_on' => gethostname() . ":" . $_SERVER['SERVER_PORT']]); } if ($mpd) { closeMpdSocket($mpd); } if ($spop) { closeSpopSocket($spop); } ?>
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with RuneAudio; see the file COPYING. If not, see * <http://www.gnu.org/licenses/gpl-3.0.txt>. * * file: app/sources_ctl.php * version: 1.3 * coder: Simone De Gregori * */ // inspect POST if (isset($_POST)) { if ($_POST['updatempd'] == 1) { sendMpdCommand($mpd, 'update'); } if ($_POST['mountall'] == 1) { $jobID = wrk_control($redis, 'newjob', $data = array('wrkcmd' => 'sourcecfg', 'action' => 'mountall')); } if (isset($_POST['usb-umount'])) { $jobID = wrk_control($redis, 'newjob', $data = array('wrkcmd' => 'sourcecfg', 'action' => 'umountusb', 'args' => $_POST['usb-umount'])); } if (!empty($_POST['mount'])) { $_POST['mount']['remotedir'] = str_replace('\\', '/', $_POST['mount']['remotedir']); if ($_POST['mount']['rsize'] == '') { $_POST['mount']['rsize'] = 16384; } if ($_POST['mount']['wsize'] == '') { $_POST['mount']['wsize'] = 17408; }
} break; default: $spopCommandPos = strpos($commandName, "spop-"); if ($spopCommandPos != -1) { $spopCommand = trim(substr($commandName, 5, strlen($commandName) - 5)); if (isset($_POST['path']) && $_POST['path'] != '') { $spopCommand .= " " . $_POST['path']; } if (isset($_POST['p2']) && $_POST['p2'] != '') { $spopCommand .= " " . $_POST['p2']; } // stop any mpd playback $playBackCommands = array("play", "stop", "next", "prev", "goto", "add", "uplay", "uadd"); if (in_array($spopCommand, $playBackCommands)) { sendMpdCommand($mpd, "stop"); } echo json_encode(sendSpopCommand($spop, $spopCommand)); } break; } } } else { echo json_encode(['service' => 'MPD DB INTERFACE', 'disclaimer' => 'INTERNAL USE ONLY!', 'hosted_on' => gethostname() . ":" . $_SERVER['SERVER_PORT']]); } if ($mpd) { closeMpdSocket($mpd); } if ($spop) { closeSpopSocket($spop); }
function execMpdCommand($sock, $command) { sendMpdCommand($sock, $command); return readMpdResponse($sock); }
* * You should have received a copy of the GNU General Public License * along with RaspyFi; see the file COPYING. If not, see * <http://www.gnu.org/licenses/>. * * * UI-design/JS code by: Andrea Coiutti (aka ACX) * PHP/JS code by: Simone De Gregori (aka Orion) * * file: command/index.php * version: 1.0 * */ // common include include '../inc/connection.php'; error_reporting(ERRORLEVEL); if (isset($_GET['cmd']) && $_GET['cmd'] != '') { if (!$mpd) { echo 'Error Connecting to MPD daemon '; } else { sendMpdCommand($mpd, $_GET['cmd']); closeMpdSocket($mpd); } } else { echo 'MPD COMMAND INTERFACE<br>'; echo 'INTERNAL USE ONLY<br>'; echo 'hosted on raspyfi.local:82'; } ?>
public static function currentSong($app) { $app->response->headers->set('Content-Type', 'application/json'); $socket = openMpdSocket('/run/mpd.sock'); sendMpdCommand($socket, 'currentsong'); $song = readMpdResponse($socket); $obj = array("song" => self::parsePlaylist($song)); echo json_encode($obj); }
break; case 'update': if (isset($_POST['path']) && $_POST['path'] != '') { sendMpdCommand($mpd, "update \"" . html_entity_decode($_POST['path']) . "\""); echo json_encode(readMpdResponse($mpd)); } break; case 'trackremove': if (isset($_GET['songid']) && $_GET['songid'] != '') { echo json_encode(remTrackQueue($mpd, $_GET['songid'])); } break; case 'savepl': if (isset($_GET['plname']) && $_GET['plname'] != '') { sendMpdCommand($mpd, "rm \"" . html_entity_decode($_GET['plname']) . "\""); sendMpdCommand($mpd, "save \"" . html_entity_decode($_GET['plname']) . "\""); echo json_encode(readMpdResponse($mpd)); } break; case 'search': if (isset($_POST['query']) && $_POST['query'] != '' && isset($_GET['querytype']) && $_GET['querytype'] != '') { echo json_encode(searchDB($mpd, $_GET['querytype'], $_POST['query'])); } break; } closeMpdSocket($mpd); } } else { echo 'MPD DB INTERFACE<br>'; echo 'INTERNAL USE ONLY<br>'; echo 'hosted on raspyfi.local:81';
if ($activePlayer === 'MPD') { if (isset($_POST['path'])) { $status = _parseStatusResponse(MpdStatus($mpd)); $pos = $status['playlistlength']; addAlbumToQueue($mpd, $_POST['path'], 1, $pos); // send MPD response to UI ui_mpd_response($mpd, array('title' => 'Added to queue', 'text' => $_POST['path'])); } } break; case 'albumaddreplaceplay': if ($activePlayer === 'MPD') { if (isset($_POST['path'])) { sendMpdCommand($mpd, 'clear'); addAlbumToQueue($mpd, $_POST['path']); sendMpdCommand($mpd, 'play'); // send MPD response to UI ui_mpd_response($mpd, array('title' => 'Queue cleared<br> Added to queue', 'text' => $_POST['path'])); } } break; } } else { echo 'MPD DB INTERFACE<br>'; echo 'INTERNAL USE ONLY<br>'; echo 'hosted on runeaudio.local:81'; } // close palyer backend connection if ($activePlayer === 'MPD') { // close MPD connection closeMpdSocket($mpd);
public static function playlistRemove($app, $num) { $socket = openMpdSocket('/run/mpd.sock'); sendMpdCommand($socket, "deleteid " . $num); $infos = readMpdResponse($socket); var_dump($infos); }
$sSpopCommand = $sRawCommand; } } } } } } } } if (isset($sSpopCommand)) { // If command is to be passed to spop if (strcmp($sSpopCommand, "") != 0) { echo json_encode(sendSpopCommand($spop, $sSpopCommand)); } } else { // Else pass command to MPD echo json_encode(sendMpdCommand($mpd, $sRawCommand)); } } } else { echo json_encode(['service' => 'MPD COMMAND INTERFACE', 'disclaimer' => 'INTERNAL USE ONLY!', 'hosted_on' => gethostname() . ":" . $_SERVER['SERVER_PORT']]); } if ($mpd) { closeMpdSocket($mpd); } if ($spop) { closeSpopSocket($spop); } ?>
addQueue($mpd, $_POST['path']); sendMpdCommand($mpd, 'play ' . $pos); echo json_encode(readMpdResponse($mpd)); } break; case 'addreplaceplay': if (isset($_POST['path']) && $_POST['path'] != '') { sendMpdCommand($mpd, 'clear'); addQueue($mpd, $_POST['path']); sendMpdCommand($mpd, 'play'); echo json_encode(readMpdResponse($mpd)); } break; case 'update': if (isset($_POST['path']) && $_POST['path'] != '') { sendMpdCommand($mpd, "update \"" . html_entity_decode($_POST['path']) . "\""); echo json_encode(readMpdResponse($mpd)); } break; case 'trackremove': if (isset($_GET['songid']) && $_GET['songid'] != '') { echo json_encode(remTrackQueue($mpd, $_GET['songid'])); } break; case 'search': if (isset($_POST['query']) && $_POST['query'] != '' && isset($_GET['querytype']) && $_GET['querytype'] != '') { echo json_encode(searchDB($mpd, $_GET['querytype'], $_POST['query'])); } break; } closeMpdSocket($mpd);
break; case 'spop-playtrackuri': if (isset($_POST['path']) && $_POST['path'] != '') { sendMpdCommand($mpd, 'stop'); echo sendSpopCommand($spop, "uplay " . $_POST['path']); } break; case 'spop-addtrackuri': if (isset($_POST['path']) && $_POST['path'] != '') { echo sendSpopCommand($spop, "uadd " . $_POST['path']); } break; case 'spop-playplaylistindex': if (isset($_POST['path']) && $_POST['path'] != '') { $sSpopPlaylistIndex = end(explode("@", $_POST['path'])); sendMpdCommand($mpd, 'stop'); echo sendSpopCommand($spop, "play " . $sSpopPlaylistIndex); } break; case 'spop-addplaylistindex': if (isset($_POST['path']) && $_POST['path'] != '') { $sSpopPlaylistIndex = end(explode("@", $_POST['path'])); echo sendSpopCommand($spop, "add " . $sSpopPlaylistIndex); } break; } } } else { echo json_encode(['service' => 'MPD DB INTERFACE', 'disclaimer' => 'INTERNAL USE ONLY!', 'hosted_on' => gethostname() . ":" . $_SERVER['SERVER_PORT']]); } if ($mpd) {
function waitWorker($sleeptime, $section) { if ($_SESSION['w_active'] == 1) { do { sleep($sleeptime); session_start(); session_write_close(); } while ($_SESSION['w_active'] != 0); switch ($section) { case 'sources': $mpd = openMpdSocket('localhost', 6600); sendMpdCommand($mpd, 'update'); closeMpdSocket($mpd); break; } } }
function ui_update($redis, $sock) { ui_libraryHome($redis); switch ($redis->get('activePlayer')) { case 'MPD': if ($redis->get('pl_length') !== '0') { sendMpdCommand($sock, 'swap 0 0'); } else { sendMpdCommand($sock, 'clear'); } // return MPD response return readMpdResponse($sock); break; case 'Spotify': sendSpopCommand($sock, 'repeat'); sendSpopCommand($sock, 'repeat'); // return SPOP response return readSpopResponse($sock); break; } }