// // available at http://getid3.sourceforge.net // // or http://www.getid3.org // ///////////////////////////////////////////////////////////////// // // // /demo/demo.write.php - part of getID3() // // sample script for demonstrating writing ID3v1 and ID3v2 // // tags for MP3, or Ogg comment tags for Ogg Vorbis // // See readme.txt for more details // // /// ///////////////////////////////////////////////////////////////// die('Due to a security issue, this demo has been disabled. It can be enabled by removing line 16 in demos/demo.write.php'); $TaggingFormat = 'UTF-8'; header('Content-Type: text/html; charset='.$TaggingFormat); echo 'getID3() - Sample tag writer'; require_once('../getid3/getid3.php'); // Initialize getID3 engine $getID3 = new getID3; $getID3->setOption(array('encoding'=>$TaggingFormat)); getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'write.php', __FILE__, true); $browsescriptfilename = 'demo.browse.php'; function FixTextFields($text) { return htmlentities(getid3_lib::SafeStripSlashes($text), ENT_QUOTES); } $Filename = (isset($_REQUEST['Filename']) ? getid3_lib::SafeStripSlashes($_REQUEST['Filename']) : ''); if (isset($_POST['WriteTags'])) { $TagFormatsToWrite = (isset($_POST['TagFormatsToWrite']) ? $_POST['TagFormatsToWrite'] : array()); if (!empty($TagFormatsToWrite)) { echo 'starting to write tag(s)
'; $tagwriter = new getid3_writetags; $tagwriter->filename = $Filename; $tagwriter->tagformats = $TagFormatsToWrite; $tagwriter->overwrite_tags = true; $tagwriter->tag_encoding = $TaggingFormat; if (!empty($_POST['remove_other_tags'])) { $tagwriter->remove_other_tags = true; } $commonkeysarray = array('Title', 'Artist', 'Album', 'Year', 'Comment'); foreach ($commonkeysarray as $key) { if (!empty($_POST[$key])) { $TagData[strtolower($key)][] = getid3_lib::SafeStripSlashes($_POST[$key]); } } if (!empty($_POST['Genre'])) { $TagData['genre'][] = getid3_lib::SafeStripSlashes($_POST['Genre']); } if (!empty($_POST['GenreOther'])) { $TagData['genre'][] = getid3_lib::SafeStripSlashes($_POST['GenreOther']); } if (!empty($_POST['Track'])) { $TagData['track'][] = getid3_lib::SafeStripSlashes($_POST['Track'].(!empty($_POST['TracksTotal']) ? '/'.$_POST['TracksTotal'] : '')); } if (!empty($_FILES['userfile']['tmp_name'])) { if (in_array('id3v2.4', $tagwriter->tagformats) || in_array('id3v2.3', $tagwriter->tagformats) || in_array('id3v2.2', $tagwriter->tagformats)) { if (is_uploaded_file($_FILES['userfile']['tmp_name'])) { if ($fd = @fopen($_FILES['userfile']['tmp_name'], 'rb')) { $APICdata = fread($fd, filesize($_FILES['userfile']['tmp_name'])); fclose ($fd); list($APIC_width, $APIC_height, $APIC_imageTypeID) = GetImageSize($_FILES['userfile']['tmp_name']); $imagetypes = array(1=>'gif', 2=>'jpeg', 3=>'png'); if (isset($imagetypes[$APIC_imageTypeID])) { $TagData['attached_picture'][0]['data'] = $APICdata; $TagData['attached_picture'][0]['picturetypeid'] = $_POST['APICpictureType']; $TagData['attached_picture'][0]['description'] = $_FILES['userfile']['name']; $TagData['attached_picture'][0]['mime'] = 'image/'.$imagetypes[$APIC_imageTypeID]; } else { echo 'invalid image format (only GIF, JPEG, PNG)
'; } } else { echo 'cannot open '.$_FILES['userfile']['tmp_name'].'
'; } } else { echo '!is_uploaded_file('.$_FILES['userfile']['tmp_name'].')
'; } } else { echo 'WARNING: Can only embed images for ID3v2
'; } } $tagwriter->tag_data = $TagData; 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).'
'; } } else { echo 'WARNING: no tag formats selected for writing - nothing written'; } echo '
'; } echo '

Sample tag editor/writer

'; echo 'Browse current directory
'; if (!empty($Filename)) { echo 'Start Over

'; echo ''; echo ''; if (file_exists($Filename)) { // Initialize getID3 engine $getID3 = new getID3; $OldThisFileInfo = $getID3->analyze($Filename); getid3_lib::CopyTagsToComments($OldThisFileInfo); switch ($OldThisFileInfo['fileformat']) { case 'mp3': case 'mp2': case 'mp1': $ValidTagTypes = array('id3v1', 'id3v2.3', 'ape'); break; case 'mpc': $ValidTagTypes = array('ape'); break; case 'ogg': if (@$OldThisFileInfo['audio']['dataformat'] == 'flac') { //$ValidTagTypes = array('metaflac'); // metaflac doesn't (yet) work with OggFLAC files $ValidTagTypes = array(); } else { $ValidTagTypes = array('vorbiscomment'); } break; case 'flac': $ValidTagTypes = array('metaflac'); break; case 'real': $ValidTagTypes = array('real'); break; default: $ValidTagTypes = array(); break; } echo ''; echo ''; echo ''; echo ''; $TracksTotal = ''; $TrackNumber = ''; if (!empty($OldThisFileInfo['comments']['tracknumber']) && is_array($OldThisFileInfo['comments']['tracknumber'])) { $RawTrackNumberArray = $OldThisFileInfo['comments']['tracknumber']; } elseif (!empty($OldThisFileInfo['comments']['track']) && is_array($OldThisFileInfo['comments']['track'])) { $RawTrackNumberArray = $OldThisFileInfo['comments']['track']; } else { $RawTrackNumberArray = array(); } foreach ($RawTrackNumberArray as $key => $value) { if (strlen($value) > strlen($TrackNumber)) { // ID3v1 may store track as "3" but ID3v2/APE would store as "03/16" $TrackNumber = $value; } } if (strstr($TrackNumber, '/')) { list($TrackNumber, $TracksTotal) = explode('/', $TrackNumber); } echo ''; $ArrayOfGenresTemp = getid3_id3v1::ArrayOfGenres(); // get the array of genres foreach ($ArrayOfGenresTemp as $key => $value) { // change keys to match displayed value $ArrayOfGenres[$value] = $value; } unset($ArrayOfGenresTemp); // remove temporary array unset($ArrayOfGenres['Cover']); // take off these special cases unset($ArrayOfGenres['Remix']); unset($ArrayOfGenres['Unknown']); $ArrayOfGenres[''] = '- Unknown -'; // Add special cases back in with renamed key/value $ArrayOfGenres['Cover'] = '-Cover-'; $ArrayOfGenres['Remix'] = '-Remix-'; asort($ArrayOfGenres); // sort into alphabetical order echo ''; echo ''; echo ''; echo ''; echo ''; } else { echo ''; } echo '
Filename: '.$Filename.'
Title
Artist
Album
Year
Track of
Genre
Write Tags'; foreach ($ValidTagTypes as $ValidTagType) { echo ''.$ValidTagType.'
'; } if (count($ValidTagTypes) > 1) { echo '
Remove non-selected tag formats when writing new tag
'; } echo '
Comment
Picture
(ID3v2 only)

'; echo '
'; echo '
Error'.FixTextFields($Filename).' does not exist
'; } ?>