*/ protected array $description = []; /** * @var array */ protected array $image = []; /** * @var array */ protected array $audio = []; public function __construct(Episode $episode) { // TODO: clean things up with specified spec $this->id = $episode->link; $this->description = [ 'type' => 'Note', 'mediaType' => 'text/markdown', 'content' => $episode->description_markdown, 'contentMap' => [ $episode->podcast->language_code => $episode->description_html, ], ]; $this->image = [ 'type' => 'Image', 'mediaType' => $episode->cover->file_mimetype, 'url' => $episode->cover->feed_url, ]; // add audio file $this->audio = [ 'id' => $episode->audio_url, 'type' => 'Audio', 'name' => esc($episode->title), 'size' => $episode->audio->file_size, 'duration' => $episode->audio->duration, 'url' => [ 'href' => $episode->audio_url, 'type' => 'Link', 'mediaType' => $episode->audio->file_mimetype, ], ]; if ($episode->transcript instanceof Transcript) { $this->audio['transcript'] = $episode->transcript->file_url; } if ($episode->chapters instanceof Chapters) { $this->audio['chapters'] = $episode->chapters->file_url; } $this->comments = url_to('episode-comments', $episode->podcast->handle, $episode->slug); if ($episode->published_at instanceof Time) { $this->published = $episode->published_at->format(DATE_W3C); } if ($episode->podcast->actor instanceof Actor) { $this->attributedTo = $episode->podcast->actor->uri; if ($episode->podcast->actor->followers_url) { $this->cc = [$episode->podcast->actor->followers_url]; } } } }