jPlayer - 根据文件夹中的文件创建动态播放列表

时间:2013-02-13 13:05:06

标签: php javascript json jplayer

我正在尝试根据文件夹中的mp3文件创建jPlayer播放列表。 我找到了jPlaylister: http://jplaylister.yaheard.us/v_0.65/

我在这里发现了类似的问题: Dynamically populate playlist with JSON from PHP in jPlayer

现在,我不是这些事情的专家。我更像是一个设计和简单的代码类型的家伙。但我已经尝试将代码构建到我的喜好中,并且我已经想出了这个。这根本不起作用。我也不确定如何调试它,因为我无法从$ .getJSON

获得响应

这是我现在的代码:

$(document).ready(function(){

        var cssSelector = {
            jPlayer: "#jquery_jplayer_1", 
            cssSelectorAncestor: "#jp_container_1"
        };
        var playlist = []; // Empty playlist
        var options = {
            swfPath: "js", 
            supplied: "mp3"
        };

        //var playlist = [{"title":"Kalimba","mp3":"/path/to/mydirectory/Kalimba.mp3"},{"title":"Maid with  the Flaxen Hair","mp3":"/path/to/mydirectory/Maid with the Flaxen Hair.mp3"},{"title":"Sleep Away","mp3":"/path/to/mydirectory/Sleep Away.mp3"}];
    var url=  "getSongurl.php";
    var song = "Assets/mp3/mysong";

    var myPlaylist = new jPlayerPlaylist(cssSelector, playlist, options);   
    $.getJSON(url, {songurl: song}, function(data) {
        $.each(data, function(key, val) {
            myPlaylist.add(value);
        })
    }); 
});

我想将歌曲变量传递给JSON,这样我就可以在PHP中处理该文件夹并返回该文件夹中的所有文件。

现在,这是PHP文件:

<?php

    $results = array();

    $directory = $_POST['songurl'];
    $handler = opendir($directory);

    while ($file = readdir($handler)) {
            $results[] = $file;
            <script type="text/javascript">
                alert("file: <?php echo $file; ?>");
            </script>
    }

    $limit = count($results();
    $i = 0;

    while ($i < $limit) {
        $filesJson = array(
            'title:' => $i,
            'mp3:' => $i
        );
    }

    //tidy up
    closedir($handler);
    echo json_encode($filesJson);

    ?>

我试图在那里发出警报,但我也没有收到任何警报。可能只是我在这里做错了什么......

3 个答案:

答案 0 :(得分:1)

您的php文件

<?php
$results = array(); 
$fdirectory = (isset($_REQUEST['songurl']))?$_REQUEST['songurl']:'songs/';
$handler = opendir($fdirectory);
while ($file = readdir($handler)) {
        if($file != '.' && $file != '..')
        $results[] = $file;
}

if(!empty($results)){
    foreach($results as $k=>$song){
        $filesJson[] = array(
            'title' => preg_replace('/\\.[^.\\s]{3,4}$/', '', $song),
            'mp3' => $fdirectory.$song
        );
    }
}    
closedir($handler);
$songList = json_encode($filesJson);
    if(isset($_REQUEST['songurl'])){
        echo $songList;
    }

<强> JS

var url=  "getSongs.php";
var song = "Assets/mp3/mysong/";
var cssSelector = {
        jPlayer: "#jquery_jplayer_1", 
        cssSelectorAncestor: "#jp_container_1"
    };

var playlist = []; // Empty playlist
var options = {
  swfPath: "dist/jplayer",
  supplied: "mp3"
};
$(document).ready(function(){   
    var myPlaylist = new jPlayerPlaylist(cssSelector, playlist, options);   
   $.getJSON(url, {songurl: song}, function(data) {
      $.each(data, function(key, val) {
        myPlaylist.add(val);
      })
   }); 

});

享受:)

答案 1 :(得分:0)

嗯,对于初学者,您需要$limit = count($results());,而不是$limit = count($results();。这可能搞砸了。

答案 2 :(得分:0)

我写过jplaylister,一眼就看出JSON不是真的需要。该脚本被“指向一个文件夹”并根据它在该文件夹/子文件夹中找到的所有内容制作一个播放列表(可过滤)。

它使用php数组存储它找到的内容,并且(截至当前版本)提供播放列表缓存,以防文件数量很大并从中获取ID3信息开始非常耗时。

让jplaylister工作(或让我知道它不是,告诉我为什么或将我链接到你的开发代码)...然后将你的媒体文件添加到那...然后你可以开始喜欢它了。

祝你好运!

Nick C