|
1
|
|
|
<?php |
|
2
|
|
|
namespace App\Services\AdditionalProcessing; |
|
3
|
|
|
use Blacklight\ColorCLI; |
|
4
|
|
|
/** |
|
5
|
|
|
* Service for CLI output during additional processing. |
|
6
|
|
|
* Centralizes all echo/output functionality. |
|
7
|
|
|
*/ |
|
8
|
|
|
class ConsoleOutputService |
|
9
|
|
|
{ |
|
10
|
|
|
private ColorCLI $colorCLI; |
|
11
|
|
|
public function __construct( |
|
12
|
|
|
private readonly bool $echoCLI = false |
|
13
|
|
|
) { |
|
14
|
|
|
$this->colorCLI = new ColorCLI(); |
|
15
|
|
|
} |
|
16
|
|
|
public function echo(string $message, string $type = 'primary'): void |
|
17
|
|
|
{ |
|
18
|
|
|
if ($this->echoCLI) { |
|
19
|
|
|
$this->colorCLI->$type($message); |
|
20
|
|
|
} |
|
21
|
|
|
} |
|
22
|
|
|
public function debug(string $message): void |
|
23
|
|
|
{ |
|
24
|
|
|
if ($this->echoCLI && config('app.env') === 'local' && config('app.debug') === true) { |
|
25
|
|
|
$this->colorCLI->debug('DEBUG: '.$message); |
|
26
|
|
|
} |
|
27
|
|
|
} |
|
28
|
|
|
public function echoDescription(int $totalReleases): void |
|
29
|
|
|
{ |
|
30
|
|
|
if ($totalReleases > 1 && $this->echoCLI) { |
|
31
|
|
|
$this->echo( |
|
32
|
|
|
PHP_EOL. |
|
33
|
|
|
'Additional post-processing, started at: '. |
|
34
|
|
|
now()->format('D M d, Y G:i a'). |
|
35
|
|
|
PHP_EOL. |
|
36
|
|
|
'Downloaded: (xB)=yEnc article, (cB)=compressed part'. |
|
37
|
|
|
PHP_EOL. |
|
38
|
|
|
'Failures: fC#=Compressed(part #), fS=Sample, fM=Media(video), fA=Audio, fJ=JPEG, G=Missing group'. |
|
39
|
|
|
PHP_EOL. |
|
40
|
|
|
'Processing: r=RAR, z=ZIP, 7z=7zip (names/entries), g=GZIP, b=BZIP2, x=XZ, (vRAW)=Inline video detected'. |
|
41
|
|
|
PHP_EOL. |
|
42
|
|
|
'Added: s=Sample image, j=JPEG image, A=Audio sample, a=Audio MediaInfo, v=Video sample'. |
|
43
|
|
|
PHP_EOL. |
|
44
|
|
|
'Added: m=Video MediaInfo, n=NFO, ^=Inner file details (RAR/ZIP/7z/etc)'. |
|
45
|
|
|
'', |
|
46
|
|
|
'header' |
|
47
|
|
|
); |
|
48
|
|
|
} |
|
49
|
|
|
} |
|
50
|
|
|
public function echoReleaseStart(int $releaseId, int $size): void |
|
51
|
|
|
{ |
|
52
|
|
|
$this->echo(PHP_EOL.'['.$releaseId.']['.human_filesize($size, 1).']', 'primaryOver'); |
|
53
|
|
|
} |
|
54
|
|
|
public function echoCompressedDownload(): void { $this->echo('(cB)', 'primaryOver'); } |
|
55
|
|
|
public function echoCompressedFailure(int $failCount): void { $this->echo('fC'.$failCount, 'warningOver'); } |
|
56
|
|
|
public function echoGroupUnavailable(): void { $this->echo('G', 'warningOver'); } |
|
57
|
|
|
public function echoSampleDownload(): void { $this->echo('(sB)', 'primaryOver'); } |
|
58
|
|
|
public function echoSampleFailure(): void { $this->echo('fS', 'warningOver'); } |
|
59
|
|
|
public function echoMediaInfoDownload(): void { $this->echo('(mB)', 'primaryOver'); } |
|
60
|
|
|
public function echoMediaInfoFailure(): void { $this->echo('fM', 'warningOver'); } |
|
61
|
|
|
public function echoAudioDownload(): void { $this->echo('(aB)', 'primaryOver'); } |
|
62
|
|
|
public function echoAudioFailure(): void { $this->echo('fA', 'warningOver'); } |
|
63
|
|
|
public function echoJpgDownload(): void { $this->echo('(jB)', 'primaryOver'); } |
|
64
|
|
|
public function echoJpgFailure(): void { $this->echo('fJ', 'warningOver'); } |
|
65
|
|
|
public function echoArchiveMarker(string $marker): void { $this->echo($marker, 'primaryOver'); } |
|
66
|
|
|
public function echoFileInfoAdded(): void { $this->echo('^', 'primaryOver'); } |
|
67
|
|
|
public function echoSampleCreated(): void { $this->echo('s', 'primaryOver'); } |
|
68
|
|
|
public function echoJpgSaved(): void { $this->echo('j', 'primaryOver'); } |
|
69
|
|
|
public function echoAudioSampleCreated(): void { $this->echo('A', 'primaryOver'); } |
|
70
|
|
|
public function echoAudioInfoAdded(): void { $this->echo('a', 'primaryOver'); } |
|
71
|
|
|
public function echoVideoCreated(): void { $this->echo('v', 'primaryOver'); } |
|
72
|
|
|
public function echoMediaInfoAdded(): void { $this->echo('m', 'primaryOver'); } |
|
73
|
|
|
public function echoNfoFound(): void { $this->echo('n', 'primaryOver'); } |
|
74
|
|
|
public function echoInlineVideo(): void { $this->echo('(vRAW)', 'primaryOver'); } |
|
75
|
|
|
public function warning(string $message): void { $this->echo($message, 'warning'); } |
|
76
|
|
|
public function echoReleaseDeleted(int $releaseId): void { $this->echo('Deleted broken release ID '.$releaseId, 'warningOver'); } |
|
77
|
|
|
public function endOutput(): void |
|
78
|
|
|
{ |
|
79
|
|
|
if ($this->echoCLI) { |
|
80
|
|
|
echo PHP_EOL; |
|
81
|
|
|
} |
|
82
|
|
|
} |
|
83
|
|
|
public function isEnabled(): bool |
|
84
|
|
|
{ |
|
85
|
|
|
return $this->echoCLI; |
|
86
|
|
|
} |
|
87
|
|
|
} |
|
88
|
|
|
|