Exemplo n.º 1
0
//  |                                                                        |
//  | You should have received a copy of the GNU General Public License      |
//  | along with this program.  If not, see <http://www.gnu.org/licenses/>.  |
//  +------------------------------------------------------------------------+
//  +------------------------------------------------------------------------+
//  | playlist.php                                                           |
//  +------------------------------------------------------------------------+
require_once 'include/initialize.inc.php';
$cfg['menu'] = 'playlist';
authenticate('access_playlist');
require_once 'include/header.inc.php';
require_once 'include/play.inc.php';
if ($cfg['player_type'] == NJB_HTTPQ) {
    $hash = httpq('gethash');
    $listpos = httpq('getlistpos');
    $file = httpq('getplaylistfilelist', 'delim=*');
    $file = str_replace('\\', '/', $file);
    $file = explode('*', $file);
    $listlength = empty($file[0]) ? 0 : count($file);
    $volume = true;
    $max_volume = 255;
    // Get relative directory based on $cfg['media_share']
    foreach ($file as $i => $value) {
        if (strtolower(substr($file[$i], 0, strlen($cfg['media_share']))) == strtolower($cfg['media_share'])) {
            $file[$i] = substr($file[$i], strlen($cfg['media_share']));
        }
    }
} elseif ($cfg['player_type'] == NJB_MPD) {
    $status = mpd('status');
    $listpos = isset($status['song']) ? $status['song'] : 0;
    $file = mpd('playlist');
Exemplo n.º 2
0
function playlistStatus()
{
    global $cfg, $db;
    authenticate('access_playlist', false, false, true);
    require_once 'include/play.inc.php';
    $track_id = get('track_id');
    if ($cfg['player_type'] == NJB_HTTPQ) {
        // volume
        $volume = (int) httpq('getvolume');
        // get mute volume
        if ($volume == 0) {
            $query = mysql_query('SELECT mute_volume FROM player WHERE player_id = ' . (int) $cfg['player_id']);
            $temp = mysql_fetch_assoc($query);
            $volume = -$temp['mute_volume'];
        }
        $data = array();
        $data['hash'] = (string) httpq('gethash');
        $data['miliseconds'] = (int) httpq('getoutputtime', 'frmt=0');
        $data['listpos'] = (int) httpq('getlistpos');
        $data['isplaying'] = (int) httpq('isplaying');
        $data['repeat'] = (int) httpq('repeat_status');
        $data['shuffle'] = (int) httpq('shuffle_status');
        $data['volume'] = (int) $volume;
        $data['gain'] = -1;
        echo safe_json_encode($data);
    }
    if ($cfg['player_type'] == NJB_MPD) {
        $playlist = mpd('playlist');
        $status = mpd('status');
        $data = array();
        $data['hash'] = md5(implode('<seperation>', $playlist));
        $data['listpos'] = isset($status['song']) ? (int) $status['song'] : 0;
        $data['volume'] = (int) $status['volume'];
        $data['repeat'] = (int) $status['repeat'];
        $data['shuffle'] = (int) $status['random'];
        $data['isplaying'] = 0;
        if ($status['state'] == 'stop') {
            $data['isplaying'] = 0;
        }
        if ($status['state'] == 'play') {
            $data['isplaying'] = 1;
        }
        if ($status['state'] == 'pause') {
            $data['isplaying'] = 3;
        }
        $data['miliseconds'] = $status['state'] == 'stop' ? 0 : (int) round($status['elapsed'] * 1000);
        $data['gain'] = -1;
        if (version_compare($cfg['mpd_version'], '0.16.0', '>=')) {
            $gain = mpd('replay_gain_status');
            $data['gain'] = (string) $gain['replay_gain_mode'];
        }
        // get mute volume
        if ($data['volume'] == 0) {
            $query = mysql_query('SELECT mute_volume FROM player WHERE player_id = ' . (int) $cfg['player_id']);
            $temp = mysql_fetch_assoc($query);
            $data['volume'] = -$temp['mute_volume'];
        }
        echo safe_json_encode($data);
    }
}
Exemplo n.º 3
0
function importFavorite($favorite_id, $mode)
{
    global $cfg, $db;
    authenticate('access_admin', false, true, true);
    require_once 'include/play.inc.php';
    $name = post('name');
    $comment = post('comment');
    $url = post('url');
    if ($url != '') {
        $file = array();
        $items = @file($url, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) or message(__FILE__, __LINE__, 'error', '[b]Failed to open url:[/b][br]' . $url);
        foreach ($items as $item) {
            // pls:
            // File1=http://example.com:80
            // m3u:
            // http://example.com:80
            if (preg_match('#^(?:File[0-9]{1,3}=|)((?:ftp|http|https|mms|mmst|pnm|rtp|rtsp|sdp)://.+)#', $item, $match)) {
                $file[] = $match[1];
            }
        }
    } elseif ($cfg['player_type'] == NJB_HTTPQ) {
        $file = httpq('getplaylistfilelist', 'delim=*');
        $file = str_replace('\\', '/', $file);
        $file = explode('*', $file);
        // Get relative directory based on $cfg['media_share']
        foreach ($file as $i => $value) {
            if (strtolower(substr($file[$i], 0, strlen($cfg['media_share']))) == strtolower($cfg['media_share'])) {
                $file[$i] = substr($file[$i], strlen($cfg['media_share']));
            }
        }
    } elseif ($cfg['player_type'] == NJB_MPD) {
        $file = mpd('playlist');
        $file = implode('<seperation>', $file);
        $file = iconv(NJB_DEFAULT_CHARSET, 'UTF-8', $file);
        $file = explode('<seperation>', $file);
    } else {
        message(__FILE__, __LINE__, 'error', '[b]Player not supported[/b]');
    }
    $stream = 0;
    for ($i = 0; $i < count($file); $i++) {
        if (preg_match('#^(ftp|http|https|mms|mmst|pnm|rtp|rtsp|sdp)://#', $file[$i])) {
            $stream = 1;
        }
    }
    if (count($file) > 0) {
        if ($mode == 'import') {
            mysql_query('DELETE FROM favoriteitem WHERE favorite_id = ' . (int) $favorite_id);
            $offset = 0;
        }
        if ($mode = 'add') {
            $query = mysql_query('SELECT position FROM favoriteitem WHERE favorite_id = ' . (int) $favorite_id . ' ORDER BY position DESC');
            $track = mysql_fetch_assoc($query);
            $offset = $track['position'];
        }
        // Update favorite stream status
        mysql_query('UPDATE favorite
					SET stream			= "' . (int) $stream . '"
					WHERE favorite_id	= ' . (int) $favorite_id);
        // Don't allow stream_url and track_id in the same playlist!
        if ($stream) {
            mysql_query('DELETE FROM favoriteitem WHERE favorite_id = ' . (int) $favorite_id . ' AND track_id != ""');
        } else {
            mysql_query('DELETE FROM favoriteitem WHERE favorite_id = ' . (int) $favorite_id . ' AND stream_url != ""');
        }
    }
    for ($i = 0; $i < count($file); $i++) {
        $query = mysql_query('SELECT track_id FROM track WHERE relative_file = "' . mysql_real_escape_string($file[$i]) . '"');
        $track = mysql_fetch_assoc($query);
        if ($stream == 0 && $track['track_id']) {
            $position = $i + $offset + 1;
            mysql_query('INSERT INTO favoriteitem (track_id, position, favorite_id)
				VALUES ("' . mysql_real_escape_string($track['track_id']) . '",
				' . (int) $position . ',
				' . (int) $favorite_id . ')');
        }
        if ($stream == 1 && preg_match('#^(ftp|http|https|mms|mmst|pnm|rtp|rtsp|sdp)://#', $file[$i])) {
            $position = $i + $offset + 1;
            mysql_query('INSERT INTO favoriteitem (stream_url, position, favorite_id)
				VALUES ("' . mysql_real_escape_string($file[$i]) . '",
				' . (int) $position . ',
				' . (int) $favorite_id . ')');
        }
    }
    editFavorite($favorite_id);
}