2016-06-09 18 views
1

你好,所以我不知道PHP的任何知识,我发现了一个代码,可以创建一个json播放列表,通过扫描文件的目录并创建适当的格式,我想知道是否有人能够正确地将目录/视频插入代码中。影片是包含了MP4文件,并在根目录正确编码PHP从视频目录中扫描并创建JSON

原代码,我发现这里http://zurb.com/forrst/posts/Generate_a_JSON_list_based_on_files_in_a_directo-GDc

所有我想要的是下面的代码扫描视频目录的文件夹。

谢谢!

#!/usr/bin/php 
<?php 

/* 
* @param Array $types 
* @abstract Array of allowed file types 
*/ 
$types = Array ('jpeg', 'jpg', 'txt', 'pdf', 'js', 'mp4', 'mp3', 'ogg'); 

if (!isset($argv[1])) 
    exit("Must specify a directory to scan\n"); 

if (!is_dir($argv[1])) 
    exit($argv[1]."' is not a directory\n"); 

/* 
* @name getList 
* @param Array $dir 
* @param Array $types 
* @abstract Recursively iterates over specified directory 
*   populating array based on array of file extensions 
* @return Array $files 
*/ 
function getList($dir, $types) 
{ 
    $it = new RecursiveDirectoryIterator($dir); 
    foreach(new RecursiveIteratorIterator($it) as $file) 
    { 
     if (in_array(strtolower(array_pop(explode('.', $file))), $types)) 
      $files[] = $file->__toString(); 
    } 
    return $files; 
} 

/* 
* @name getDetails 
* @param Array $dir 
* @param Array $types 
* @abstract Recursively iterates over specified directory 
*   populating array with details of each file 
* @return Array $files 
*/ 
function getDetails($types, $array) 
{ 
    foreach($types as $type) 
    { 
     foreach($array as $file) 
     { 
      if (strcasecmp($type, array_pop(explode('.', $file))) == 0) { 
       $files[$type][basename($file)]; 
       $files[$type][basename($file)]['source'] = $file; 
       $files[$type][basename($file)]['size'] = filesize($file); 
      } 
     } 
    } 
    return array('files'=>$files); 
} 

if (!function_exists('json_encode')) { 

    /* 
    * @name json_encode 
    * @param Mixed $val 
    * @abstract Alternate emulated json_encode function 
    * @return Object $res 
    */ 
    function json_encode($val) 
    { 
     if (is_string($val)) return '"'.addslashes($val).'"'; 
     if (is_numeric($val)) return $val; 
     if ($val === null) return 'null'; 
     if ($val === true) return 'true'; 
     if ($val === false) return 'false'; 

     $assoc = false; 
     $i = 0; 
     foreach ($val as $k=>$v){ 
      if ($k !== $i++){ 
       $assoc = true; 
       break; 
      } 
     } 
     $res = array(); 
     foreach ($val as $k=>$v){ 
      $v = json_encode($v); 
      if ($assoc){ 
       $k = '"'.addslashes($k).'"'; 
       $v = $k.':'.$v; 
      } 
      $res[] = $v; 
     } 
     $res = implode(',', $res); 
     return ($assoc)? '{'.$res.'}' : '['.$res.']'; 
    } 
} 

/* Run application */ 
exit(json_encode(getDetails($types, getList($argv[1], $types)))); 
+1

代替'$的argv [1]',写你的目录,如' “/视频”' – Hackerman

回答

2

这个剧本的作者是要在命令行中执行,所以从控制台,您可以从目录中包含此脚本

php example.php /videos 

,你还需要更改文件名执行该语句您正在寻找的视频格式的扩展。

$types = Array ('jpeg', 'jpg', 'txt', 'pdf', 'js', 'mp4', 'mp3', 'ogg'); 

这可能成为

$types = Array ('mkv','avi','mp4','mov'); 

$argv[1]代表传递给脚本,它被用作在这种情况下的目录路径参数。因此如果您想从Web服务器调用此脚本,请在脚本中将该值设置为空,以便您仍可以灵活地从命令行执行该脚本。

所以改变这一行

if (!isset($argv[1])) 
    exit("Must specify a directory to scan\n"); 

这样:

if (!isset($argv[1])) 
    $argv[1] = '/videos';