|null $data */ public function __construct(array $data = null) { parent::__construct($data); if ($this->file_metadata) { $this->duration = (float) $this->file_metadata['playtime_seconds']; $this->header_size = (int) $this->file_metadata['avdataoffset']; } } public function setFile(File $file): self { parent::setFile($file); $getID3 = new GetID3(); $audioMetadata = $getID3->analyze(media_path($this->file_path)); $this->attributes['file_mimetype'] = $audioMetadata['mime_type']; $this->attributes['file_size'] = $audioMetadata['filesize']; // @phpstan-ignore-next-line $this->attributes['description'] = @$audioMetadata['id3v2']['comments']['comment'][0]; $this->attributes['file_metadata'] = json_encode($audioMetadata, JSON_INVALID_UTF8_SUBSTITUTE); return $this; } }