123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260 |
- <?php
- die('For security reasons, this demo has been disabled. It can be enabled by removing line '.__LINE__.' in demos/'.basename(__FILE__));
- $dir = $_SERVER['PWD'];
- $media = array('mp4', 'm4v', 'mov', 'mp3', 'm4a', 'jpg', 'png', 'gif');
- $database = array();
- $cache = 'sqlite3';
- $database['table'] = 'getid3_cache';
- $database['hide'] = true;
- require_once(dirname(__FILE__).'/getid3.php');
- class dirscan {
-
- private function type_brace($dir, $search=array()) {
- $dir = str_replace(array('///', '//'), array('/', '/'), $dir);
- if (!is_dir($dir)) {
- return null;
- }
- if (!is_array($search)) {
- $e = explode(',', $search);
- } elseif (count($search) < 1) {
- return null;
- } else {
- $e = $search;
- }
- $ext = array();
- foreach ($e as $new) {
- $ext[] = strtolower(trim($new));
- $ext[] = strtoupper(trim($new));
- }
- $b = $dir.'/*.{'.implode(',', $ext).'}';
- return $b;
- }
-
- private function getDirs($root) {
- switch ($root) {
- case '/':
- case '/var':
- case '/etc':
- case '/home':
- case '/usr':
- case '/root':
- case '/private/etc':
- case '/private/var':
- case '/etc/apache2':
- case '/home':
- case '/tmp':
- case '/var/log':
- return null;
- break;
- default:
- if (!is_dir($root)) {
- return null;
- }
- $dirs = array_merge(glob($root.'/*', GLOB_ONLYDIR), glob($root.'/*/*', GLOB_ONLYDIR), glob($root.'/*/*/*', GLOB_ONLYDIR), glob($root.'/*/*/*/*', GLOB_ONLYDIR), glob($root.'/*/*/*/*/*', GLOB_ONLYDIR), glob($root.'/*/*/*/*/*/*', GLOB_ONLYDIR), glob($root.'/*/*/*/*/*/*/*', GLOB_ONLYDIR));
- break;
- }
- if (count($dirs) < 1) {
- $dirs = array($root);
- }
- return $dirs;
- }
-
- private function file_check($search) {
- $t = array();
- $s = glob($search, GLOB_BRACE);
- foreach ($s as $file) {
- $t[] = str_replace(array('///', '//'), array('/', '/'), $file);
- }
- if (count($t) > 0) {
- return $t;
- }
- return null;
- }
- function getTime() {
- return microtime(true);
-
-
-
- }
-
- function scan_files($dir, $match, $cache='sqlite3', $opt=array('table'=>'getid3_cache', 'hide'=>true)) {
- $Start = self::getTime();
- switch ($cache) {
- case 'sqlite3':
- if (!class_exists('getID3_cached_sqlite3')) {
- require_once(dirname(__FILE__)).'/extension.cache.sqlite3.php';
- }
- $id3 = new getID3_cached_sqlite3($opt['table'], $opt['hide']);
- break;
- case 'mysql':
- if (!class_exists('getID3_cached_mysql')) {
- require_once(dirname(__FILE__)).'/extension.cache.mysql.php';
- }
- $id3 = new getID3_cached_mysql($opt['host'], $opt['database'], $opt['username'], $opt['password'], $opt['table']);
- break;
-
-
-
-
-
-
-
- default:
- die(' You have selected an Invalid cache type, only "sqlite3" and "mysql" are valid'."\n");
- break;
- }
- $count = array('dir'=>0, 'file'=>0);
- $dirs = self::getDirs($dir);
- if ($dirs !== null) {
- foreach ($dirs as $d) {
- echo ' Scanning: '.$d."\n";
- $search = self::type_brace($d, $match);
- if ($search !== null) {
- $files = self::file_check($search);
- if ($files !== null) {
- foreach ($files as $f) {
- echo ' * Analyzing '.$f.' '."\n";
- $id3->analyze($f);
- $count['file']++;
- }
- $count['dir']++;
- } else {
- echo 'Failed to get files '."\n";
- }
- } else {
- echo 'Failed to create match string '."\n";
- }
- }
- echo '**************************************'."\n";
- echo '* Finished Scanning your directories '."\n*\n";
- echo '* Directories '.$count['dir']."\n";
- echo '* Files '.$count['file']."\n";
- $End = self::getTime();
- $t = number_format(($End - $Start) / 60, 2);
- echo '* Time taken to scan '.$dir.' '.$t.' min '."\n";
- echo '**************************************'."\n";
- } else {
- echo ' failed to get directories '."\n";
- }
- }
- }
- if (PHP_SAPI === 'cli') {
- if (count($argv) == 2) {
- if (is_dir($argv[1])) {
- $dir = $argv[1];
- }
- if (count(explode(',', $argv[2])) > 0) {
- $media = $arg[2];
- }
- }
- echo ' * Starting to scan directory: '.$dir."\n";
- echo ' * Using default media types: '.implode(',', $media)."\n";
- dirscan::scan_files($dir, $media, $cache, $database);
- }
|