analyze($file); return [ 'filesize' => $FileInfo['filesize'], 'mime_type' => $FileInfo['mime_type'], 'playtime_seconds' => $FileInfo['playtime_seconds'], 'attached_picture' => array_key_exists('comments', $FileInfo) ? $FileInfo['comments']['picture'][0]['data'] : null, ]; } /** * Write audio file metadata / ID3 tags * * @param App\Entities\Episode $episode * * @return UploadedFile */ function write_enclosure_tags($episode) { $TextEncoding = 'UTF-8'; // Initialize getID3 tag-writing module $tagwriter = new WriteTags(); $tagwriter->filename = $episode->enclosure_media_path; // set various options (optional) $tagwriter->tagformats = ['id3v2.4']; $tagwriter->tag_encoding = $TextEncoding; $cover = new \CodeIgniter\Files\File($episode->image_media_path); $APICdata = file_get_contents($cover->getRealPath()); // TODO: variables used for podcast specific tags // $podcast_url = $episode->podcast->link; // $podcast_feed_url = $episode->podcast->feed_url; // $episode_media_url = $episode->link; // populate data array $TagData = [ 'title' => [$episode->title], 'artist' => [$episode->podcast->author], 'album' => [$episode->podcast->title], 'year' => [$episode->pub_date->format('Y')], 'genre' => ['Podcast'], 'comment' => [$episode->description], 'track_number' => [strval($episode->number)], 'copyright_message' => [$episode->podcast->copyright], 'publisher' => ['Podlibre'], '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], ]; $TagData['attached_picture'][] = [ 'picturetypeid' => 2, // Cover. More: module.tag.id3v2.php 'data' => $APICdata, 'description' => 'cover', 'mime' => $cover->getMimeType(), ]; $tagwriter->tag_data = $TagData; // write tags if ($tagwriter->WriteTags()) { echo 'Successfully wrote tags
'; if (!empty($tagwriter->warnings)) { echo 'There were some warnings:
' . implode('

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

', $tagwriter->errors); } }