您好,我对PHP一无所知,我找到了一个代码,可以通过扫描目录中的文件并创建正确的格式来创建json播放列表,我想知道是否有人可以正确插入目录/视频代码。 videos是包含mp4文件的文件夹,位于根目录
中我在此处找到的原始代码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))));
答案 0 :(得分: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';