vid-queue/app/Data/DataPipes/ParseWatchFile.php

43 lines
1.2 KiB
PHP
Raw Permalink Normal View History

<?php
2023-10-08 23:01:28 -05:00
declare(strict_types=1);
namespace App\Data\DataPipes;
2023-10-08 23:01:28 -05:00
use App\Data\Enums\Type;
use App\Data\FileData;
use Illuminate\Support\Carbon;
use Illuminate\Support\Collection;
use Spatie\LaravelData\DataPipes\DataPipe;
use Spatie\LaravelData\Lazy;
use Spatie\LaravelData\Optional;
use Spatie\LaravelData\Support\DataClass;
use Spatie\LaravelData\Support\DataConfig;
use Spatie\LaravelData\Support\DataProperty;
use Illuminate\Support\Str;
class ParseWatchFile implements DataPipe
{
public function handle(mixed $payload, DataClass $class, Collection $properties): Collection
{
$n = now()->format('U');
$properties['watched'] = Carbon::now();
2023-10-08 23:01:28 -05:00
$properties['output'] = match ($properties['type']) {
Type::Movie => sprintf(
'%s-%d-%s.json',
2023-10-08 23:01:28 -05:00
Str::slug($properties['showTitle'] ?? uniqid()),
$properties['movieYear'],
$n,
2023-10-08 23:01:28 -05:00
),
default => sprintf(
'%s-%dx%02d-%s.json',
2023-10-08 23:01:28 -05:00
Str::slug($properties['showTitle'] ?? uniqid()),
$properties['season'],
$properties['episode'],
$n,
2023-10-08 23:01:28 -05:00
),
};
return $properties;
}
}