getFiles([ 'dir'=>$this->option('dir'), 'file'=>$this->option('file') ],'video'); if (! count($files)) exit; // Show a progress bar $bar = $this->output->createProgressBar(count($files)); $bar->setFormat("%current%/%max% [%bar%] %percent:3s%% (%memory%) (%remaining%) "); $tags = NULL; $t = $p = array(); // Tags if ($this->option('tags')) { $tags = explode(',',$this->option('tags')); $t = Tag::whereIn('tag',$tags)->pluck('id')->toArray(); if (! $t OR count($t) != count($tags)) { $this->error(sprintf('Tag [%s] dont exist',join('|',$tags))); abort(501); } } // People if ($this->option('people')) { $tags = explode(',',$this->option('people')); $p = Person::whereIn('tag',$tags)->pluck('id')->toArray(); if (! $p OR count($p) != count($tags)) { $this->error(sprintf('People [%s] dont exist',join('|',$tags))); abort(501); } } $c = 0; foreach ($files as $file) { $bar->advance(); if (preg_match('/@__thumb/',$file) OR preg_match('/\/._/',$file)) { $this->warn(sprintf('Ignoring file [%s]',$file)); continue; } if (! in_array(strtolower(pathinfo($file,PATHINFO_EXTENSION)),config('video.import.accepted'))) { $this->warn(sprintf('Ignoring [%s]',$file)); continue; } if ($this->option('verbose')) $this->info(sprintf('Processing file [%s]',$file)); $c++; $o = Video::where('filename',$file)->first(); // The video doesnt exist if (is_null($o)) { $o = new Video; $o->filename = $file; } if ($o->exists) $this->warn(sprintf('%s [%s] already in DB: %s',$o->objectType(),$file,$o->id)); // Make sure we can read the video. if (! is_readable($o->file_path())) { $this->warn(sprintf('Ignoring [%s], it is not readable',$o->file_path())); continue; } $o->save(); if ($o->wasRecentlyCreated) $this->info(sprintf('%s [%s] stored in DB: %s',$o->objectType(),$file,$o->id)); // Record our people and tags if ($p) $o->People()->sync($p); if ($t) $o->Tags()->sync($t); $this->dispatch((new \App\Jobs\CatalogScan($o))->onQueue('scan')); if ($this->option('dumpid3')) dd($o->properties()); } $bar->finish(); return $this->info(sprintf('Videos processed: %s',$c)); } }