From 99ca07201e9fde9fb5b79f88b99a04ea3486b17a Mon Sep 17 00:00:00 2001 From: Deon George Date: Sun, 22 Dec 2019 22:16:31 +1100 Subject: [PATCH] Updated VideoMove --- app/Console/Commands/CatalogDump.php | 6 +- app/Console/Commands/CatalogMove.php | 53 ++++++++ app/Console/Commands/PhotoMove.php | 60 ++++----- app/Console/Commands/VideoMove.php | 178 ++++++++++++--------------- 4 files changed, 166 insertions(+), 131 deletions(-) create mode 100644 app/Console/Commands/CatalogMove.php diff --git a/app/Console/Commands/CatalogDump.php b/app/Console/Commands/CatalogDump.php index 94fe0b9..2e80eaa 100644 --- a/app/Console/Commands/CatalogDump.php +++ b/app/Console/Commands/CatalogDump.php @@ -3,13 +3,9 @@ namespace App\Console\Commands; use Illuminate\Console\Command; -use Illuminate\Database\Eloquent\ModelNotFoundException; class CatalogDump extends Command { - // Our photo object - private $o = NULL; - /** * The name and signature of the console command. * @@ -32,7 +28,7 @@ class CatalogDump extends Command public function handle() { $class = 'App\Model\\'.$this->argument('type'); - + if (! class_exists($class)) abort(500,sprintf('No class [%s]',$this->argument('type'))); diff --git a/app/Console/Commands/CatalogMove.php b/app/Console/Commands/CatalogMove.php new file mode 100644 index 0000000..2f7a614 --- /dev/null +++ b/app/Console/Commands/CatalogMove.php @@ -0,0 +1,53 @@ +argument('type'); + + if (! class_exists($class)) + abort(500,sprintf('No class [%s]',$this->argument('type'))); + + foreach ($class::where('filename','LIKE','%INCOMING%')->get() as $o) { + if ($o->scanned AND ! $o->duplicate AND ! $o->remove AND ($x=$o->moveable()) === TRUE) { + $this->warn(sprintf('Ignoring [%s], it is not readable',$o->file_path())); + continue; + } + + switch (strtolower($this->argument('type'))) { + case 'video': + $this->dispatch((new VideoMove($o))->onQueue('move')); + break; + } + } + } +} diff --git a/app/Console/Commands/PhotoMove.php b/app/Console/Commands/PhotoMove.php index 62320ac..be738b6 100644 --- a/app/Console/Commands/PhotoMove.php +++ b/app/Console/Commands/PhotoMove.php @@ -12,39 +12,39 @@ class PhotoMove extends Command { use Files; - /** - * The name and signature of the console command. - * - * @var string - */ - protected $signature = 'photo:move + /** + * The name and signature of the console command. + * + * @var string + */ + protected $signature = 'photo:move {--file= : Photo File} {--id= : Photo ID}'; - /** - * The console command description. - * - * @var string - */ - protected $description = 'Moves Photos to their new location'; + /** + * The console command description. + * + * @var string + */ + protected $description = 'Moves Photos to their new location'; - /** - * Create a new command instance. - * - * @return void - */ - public function __construct() - { - parent::__construct(); - } + /** + * Create a new command instance. + * + * @return void + */ + public function __construct() + { + parent::__construct(); + } - /** - * Execute the console command. - * - * @return mixed - */ - public function handle() - { + /** + * Execute the console command. + * + * @return mixed + */ + public function handle() + { if ($this->option('file')) { $po = Photo::notRemove()->notDuplicate()->where('filename',Photo::path($this->option('file'))); @@ -88,11 +88,11 @@ class PhotoMove extends Command } else { if ($x > 0) - $this->warn(sprintf('Unable to move (%s) [%s] to [%s], moveable returned (%s)',$o->id,$o->file_path(),$o->file_path(FALSE,TRUE),$x)); + $this->warn(sprintf('Unable to move (%s) [%s] to [%s], movable returned (%s)',$o->id,$o->file_path(),$o->file_path(FALSE,TRUE),$x)); } } $bar->advance(); }); - } + } } \ No newline at end of file diff --git a/app/Console/Commands/VideoMove.php b/app/Console/Commands/VideoMove.php index 8908dbc..dcba9cb 100644 --- a/app/Console/Commands/VideoMove.php +++ b/app/Console/Commands/VideoMove.php @@ -2,115 +2,101 @@ namespace App\Console\Commands; -use DB; -use Log; +use Illuminate\Support\Facades\Log; use Illuminate\Console\Command; -use App\Model\Video; + +use App\Traits\Files; +use App\Models\Video; class VideoMove extends Command { - use \App\Traits\Files; + use Files; - /** - * The name and signature of the console command. - * - * @var string - */ - protected $signature = 'video:move + /** + * The name and signature of the console command. + * + * @var string + */ + protected $signature = 'video:move {--file= : Video File} {--id= : Video ID}'; - /** - * The console command description. - * - * @var string - */ - protected $description = 'Moves Videos to their new location'; + /** + * The console command description. + * + * @var string + */ + protected $description = 'Moves Videos to their new location'; - /** - * Create a new command instance. - * - * @return void - */ - public function __construct() - { - parent::__construct(); - } - - /** - * Execute the console command. - * - * @return mixed - */ - public function handle() - { - if ($this->option('file')) + /** + * Create a new command instance. + * + * @return void + */ + public function __construct() { - $vo = Video::notRemove()->notDuplicate()->where('filename',Video::path($this->option('file'))); - } - elseif ($this->option('id')) - { - $vo = Video::notRemove()->notDuplicate()->where('id',$this->option('id')); - } - else - { - $vo = Video::notRemove()->notDuplicate(); + parent::__construct(); } - if (! $vo) - exit; + /** + * Execute the console command. + * + * @return mixed + */ + public function handle() + { + if ($this->option('file')) { + $vo = Video::notRemove()->notDuplicate()->where('filename',Video::path($this->option('file'))); - // Show a progress bar - $bar = $this->output->createProgressBar($vo->count()); - $bar->setFormat("%current%/%max% [%bar%] %percent:3s%% (%memory%) (%remaining%) "); - $bar->setRedrawFrequency(100); + } elseif ($this->option('id')) { + $vo = Video::notRemove()->notDuplicate()->where('id',$this->option('id')); - $vo->chunk(1,function($video) use ($bar) { - while ($o = $video->shift()) - { - if (($x = $o->moveable()) === TRUE) { - Log::info(sprintf('%s: Moving (%s)[%s]',__METHOD__,$o->id,$o->filename)); - - $fs = $o->file_size(); - $ft = $o->file_date('m'); - if ($this->makeParentDir(dirname($o->file_path(FALSE,TRUE))) AND copy($o->file_path(),$o->file_path(FALSE,TRUE))) - { - // If the copy worked, remove the original. - if (file_exists($o->file_path(FALSE,TRUE)) AND $fs === filesize($o->file_path(FALSE,TRUE))) - { - touch($o->file_path(FALSE,TRUE),$ft); - unlink($o->file_path()); - } - - // Convert the path to a relative one. - $o->filename = $o->file_path(TRUE,TRUE); - - // @todo If the DB update failed, move it back. - if (! $o->save()) # AND ! rename($path,$o->file_path())) - { - $this->error(sprintf('Save after rename failed for (%s)',$o->id)); - continue; - } - } - else - { - $this->error(sprintf('Rename failed for (%s)',$o->id)); - continue; - } - - chmod($o->file_path(),0444); - } - else - { - if ($x > 0) { - $this->warn(sprintf('Unable to move (%s) [%s] to [%s], moveable returned (%s)',$o->id,$o->file_path(),$o->file_path(FALSE,TRUE),$x)); - if ($x == 1 AND $v = Video::where('filename',$o->file_path(TRUE,TRUE))->first()) - $this->warn(sprintf('File is id (%s) [%s]',$v->file_path(),$v->id)); - } - } + } else { + $vo = Video::notRemove()->notDuplicate(); } - $bar->advance(); - }); - } -} + if (! $vo) + exit; + + // Show a progress bar + $bar = $this->output->createProgressBar($vo->count()); + $bar->setFormat("%current%/%max% [%bar%] %percent:3s%% (%memory%) (%remaining%) "); + $bar->setRedrawFrequency(100); + + $vo->chunk(1,function($video) use ($bar) { + while ($o = $video->shift()) { + if (($x = $o->moveable()) === TRUE) { + Log::info(sprintf('%s: Moving (%s)[%s]',__METHOD__,$o->id,$o->filename)); + + if ($this->makeParentDir(dirname($o->file_path(FALSE,TRUE))) AND rename($o->file_path(),$o->file_path(FALSE,TRUE))) { + // Convert the path to a relative one. + $o->filename = $o->file_path(TRUE,TRUE); + + // @todo If the DB update failed, move it back. + if (! $o->save()) # AND ! rename($path,$o->file_path())) + { + $this->error(sprintf('Save after rename failed for (%s)',$o->id)); + continue; + } + + } else { + $this->error(sprintf('Rename failed for (%s)',$o->id)); + continue; + } + + chmod($o->file_path(),0444); + + } else { + if ($x > 0) { + $this->warn(sprintf('Unable to move (%s) [%s] to [%s], movable returned (%s)',$o->id,$o->file_path(),$o->file_path(FALSE,TRUE),$x)); + + if ($x == 1 AND $v = Video::where('filename',$o->file_path(TRUE,TRUE))->first()) + $this->warn(sprintf('File is id (%s) [%s]',$v->file_path(),$v->id)); + } + } + } + + $bar->advance(); + }); + } +} \ No newline at end of file