filename = media_path($episode->audio->file_path); // set various options (optional) $tagwriter->tagformats = ['id3v2.4']; $tagwriter->tag_encoding = $TextEncoding; $APICdata = file_get_contents(media_path($episode->cover->id3_path)); // TODO: variables used for podcast specific tags // $podcastUrl = $episode->podcast->link; // $podcastFeedUrl = $episode->podcast->feed_url; // $episodeMediaUrl = $episode->link; // populate data array $TagData = [ 'title' => [$episode->title], 'artist' => [ $episode->podcast->publisher === null ? $episode->podcast->owner_name : $episode->podcast->publisher, ], 'album' => [$episode->podcast->title], 'year' => [$episode->published_at !== null ? $episode->published_at->format('Y') : ''], 'genre' => ['Podcast'], 'comment' => [$episode->description], 'track_number' => [(string) $episode->number], 'copyright_message' => [$episode->podcast->copyright], 'publisher' => [ $episode->podcast->publisher === null ? $episode->podcast->owner_name : $episode->podcast->publisher, ], 'encoded_by' => ['Castopod'], // TODO: find a way to add the remaining tags for podcasts as the library doesn't seem to allow it // 'website' => [$podcast_url], // 'podcast' => [], // 'podcast_identifier' => [$episode_media_url], // 'podcast_feed' => [$podcast_feed_url], // 'podcast_description' => [$podcast->description_markdown], ]; $TagData['attached_picture'][] = [ // picturetypeid == Cover. More: module.tag.id3v2.php 'picturetypeid' => 2, 'data' => $APICdata, 'description' => 'cover', 'mime' => $episode->cover->file_mimetype, ]; $tagwriter->tag_data = $TagData; // write tags if ($tagwriter->WriteTags()) { echo 'Successfully wrote tags
'; if ($tagwriter->warnings !== []) { echo 'There were some warnings:
' . implode('

', $tagwriter->warnings); } } else { echo 'Failed to write tags!
' . implode('

', $tagwriter->errors); } } }