2016-06-09 19 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';