如何扫描mp3文件并将其列在网络播放器上?

时间:2015-01-21 14:14:33

标签: javascript php html bash

我刚从playlist.me构建了一个mp3播放器,脚本如下所示:

<!-- Song Player http://playlist.me -->
<script
    type="text/javascript"
    src="http://playlist.me/w/script.js"
    data-config="{'skin':'skins/black/skin.css','volume':50,'autoplay':false,'shuffle':false,'repeat':1,'placement':'bottom','showplaylist':false,'playlist':[{'title':'Song TItle','url':'http://sourcemp3.com/music.mp3'}]}" >
</script>
<noscript>
    <a href="http://playlist.me/w/i.php">SCM music player</a>
</noscript>
<!-- playlist.me script end -->

问题是我必须手动编辑脚本才能添加更多MP3文件,如何在不手动编辑脚本的情况下添加文件?我的MP3文件位于/mnt/usb。我可以使用bash find列出所有音乐文件但是如何将它们放在上面的脚本中呢?我的目标是,我希望能够通过将文件复制并粘贴到/mnt/usb/来更新我的MP3文件,并且它们会自动显示在我的网络播放器中。

按照建议

更新,我编辑了我的脚本:

<?php
$glob = glob('/mnt/usb/*.mp3');
$url  = '/mnt/usb/';

$playlist = array();
foreach ($glob as $mp3) {
    $playlist[] = array('title' => $mp3, 'url' => $url . $mp3);
}
echo '
<html>
<head>
<title> MP3 Player</title>
</head>
<body>
<script
    type="text/javascript"
    src="http://playlist.me/w/script.js"
    data-config="{\'skin\':\'skins/black/skin.css\',\'volume\':50,\'autoplay\':false,\'shuffle\':false,\'repeat\':1,\'placement\':\'bottom\',\'showplaylist\':false,\'playlist\':[{\'title\':\'Song TItle\',\'url\':\'http://sourcemp3.com/music.mp3\'}]}" >
</script>
<noscript>
    <a href="http://playlist.me/w/i.php">SCM music player</a>
</noscript>
</body>
</html>';
echo sprintf("'playlist':%s", json_encode($playlist));
?>

但是我收到以下错误:Fatal error: Call to undefined function json_encode() in /www/music.php on line 25并且音乐也不会加载。请帮忙

再次更新我找到了json部分,现在问题是这样的: enter image description here

我的剧本:

<?php
$glob = glob('/mnt/usb/*.mp3');
$url  = '/mnt/usb/';

$playlist = array();
foreach ($glob as $mp3) {
    $playlist[] = array('title' => $mp3, 'url' => $url . $mp3);
}
echo sprintf("'playlist':%s", json_encode($playlist));
echo '
<html>
<head>
<script
    type="text/javascript"
    src="http://playlist.me/w/script.js"
    data-config="{"skin":"skins/black/skin.css","volume":50,"autoplay":false,"shuffle":false,"repeat":1,"placement":"bottom","showplaylist":false,"playlist":" >
</script>
<title> MP3 Player</title>
</head>
<body>
<noscript>
    <a href="http://playlist.me/w/i.php">SCM music player</a>
</noscript>
</body>
</html>';
echo sprintf("'playlist':%s", json_encode($playlist));
?>

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

无法在纯客户端Javascript中完成,因为它无法读取服务器文件系统。至少需要1种Serverside语言:

将此PHP嵌入到您的Javascript中,以填充playlist变量。

<?php
$glob = glob('/mnt/usb/*.mp3');
$url  = 'http://localhost/usb/';

$playlist = array();
foreach ($glob as $mp3) {
    $playlist[] = array('title' => $mp3, 'url' => $url . basename($mp3));
}


echo sprintf("'playlist':%s", json_encode($playlist));

符号链接(在控制台中输入):

ln -s /mnt/usb /www/usb