function tag_mp3($filename, $songname, $albumname, $artist, $time) { $TaggingFormat = 'UTF-8'; // Initialize getID3 engine $getID3 = new getID3(); $getID3->setOption(array('encoding' => $TaggingFormat)); getid3_lib::IncludeDependency('/var/www/html/getid3/getid3/write.php', __FILE__, true); // Initialize getID3 tag-writing module $tagwriter = new getid3_writetags(); $tagwriter->filename = $filename; $tagwriter->tagformats = array('id3v1', 'id3v2.3'); // set various options (optional) $tagwriter->overwrite_tags = true; $tagwriter->tag_encoding = $TaggingFormat; $tagwriter->remove_other_tags = true; // populate data array $TagData['title'][] = $songname; $TagData['artist'][] = $artist; $TagData['album'][] = $albumname; $tagwriter->tag_data = $TagData; // write tags if ($tagwriter->WriteTags()) { echo 'Successfully wrote tags<br>'; if (!empty($tagwriter->warnings)) { echo 'There were some warnings:<br>' . implode('<br><br>', $tagwriter->warnings); } } else { echo 'Failed to write tags!<br>' . implode('<br><br>', $tagwriter->errors); } }
function saveID3($file) { global $config; $fileInfo = $file->allInfo; //----------------- CHANGED BY BUDDHAFLY 06-05-12 $id3 = $fileInfo['id3v1']; require_once $config['getid3dir'] . "/write.php"; $tagwriter = new getid3_writetags(); $tagwriter->filename = $file; $TagData['comment'][] = "id: " . $this->id; debug("writing ID3V1", $id3); // write tags if ($tagwriter->WriteTags()) { //echo 'Successfully wrote tags<br>'; if (!empty($tagwriter->warnings)) { logError('Wrtiting ID3V1 Tags: There were some warnings:<br>' . implode('<br><br>', $tagwriter->warnings)); } } else { logError("Could not change ID3V1 tags in file " . $file->path); } //--------------------------------------------------- /* //$id3['comment'] = substr(substr($config['rootUrl'], 7), 0, 30); $id3['comment'] = "id: " . $this->id; //$id3['album'] = "id: " . $this->id; //if(!$id3['title']) // $id3['title'] = substr($this->get('title'), 0, 30); //if(!$id3['artist']) // $id3['artist'] = substr($this->getCreatorNames(), 0, 30); debug("writing ID3V1", $id3); //$succ = WriteID3v1($file->path, $id3['title'], $id3['artist'], $id3['album'], $id3['year'], $id3['comment'], $id3['genre'], NULL /*track*/ /*); $succ = WriteID3v1($file->path, $id3['comment'], NULL /*track*/ /*); if(!$succ) logError("Could not change ID3V1 tags in file ". $file->path); */ }
function write_tags($file, $data = array()) { App::import('Vendor', 'getid3/getid3/getid3'); //getid3/getid3/getid3/getid3/getid3 ;) $g3 = new getID3(); $g3->setOption(array('encoding' => 'UTF-8')); App::import('Vendor', 'getid3/getid3/write'); $id3 = new getid3_writetags(); $id3->filename = $file; $id3->tagformats = array('id3v1', 'id3v2.3'); $id3->overwrite_tags = true; $id3->tag_encoding = 'UTF-8'; $id3->remove_other_tags = false; $tags = array(); foreach ($data as $key => $val) { if (is_array($val)) { foreach ($val as $v) { $tags[$key][] = $v; } } else { $tags[$key][] = $val; } } $old_tags = $g3->analyze($file); getid3_lib::CopyTagsToComments($old_tags); $id3->tag_data = am($old_tags['comments'], $tags); if ($id3->WriteTags()) { if (!empty($id3->warnings)) { debug($id3->warnings); } return true; } else { debug($id3->errors); } }
/** * Write metadata * * @param array $data * * @throws \RuntimeException * * @return $this */ public function write(array $data = null) { $this->tagWriter->filename = $this->filename; if (null === $data) { if (!$this->tagWriter->DeleteTags(array($this->name))) { GetId3::getInstance()->close(); throw new \RuntimeException(sprintf('Error while deleting metadata from "%s": %s.', $this->tagWriter->filename, implode(PHP_EOL, $this->tagWriter->errors))); } } else { $this->tagWriter->tagformats = array($this->name); $this->tagWriter->tag_data = $data; if (!$this->tagWriter->WriteTags()) { GetId3::getInstance()->close(); throw new \RuntimeException(sprintf('Error while writing metadata to "%s": %s.', $this->tagWriter->filename, implode(PHP_EOL, $this->tagWriter->errors))); } } return $this; }
/** * * Writes data inside the files after manipulation, mainly mp3 files. */ public function save() { include_once trailingslashit(RTMEDIA_PATH) . 'lib/getid3/write.php'; $tagwriter = new getid3_writetags(); $tagwriter->filename = $this->file; $tagwriter->tag_encoding = 'UTF-8'; $tagwriter->tagformats = array('id3v2.3', 'id3v1'); $tagwriter->overwrite_tags = true; $tagwriter->remove_other_tags = true; $tagwriter->tag_data = $this->data; // write tags if ($tagwriter->WriteTags()) { return true; } else { throw new Exception(implode(' : ', $tagwriter->errors)); } }
function saveid3($update_id) { global $settings; global $fields; //getting the filename from the id $dosql = "SELECT title, id, filelocal, audio_file FROM " . $GLOBALS['prefix'] . "lb_postings \n WHERE id='" . $update_id . "';"; $result = mysql_query($dosql) or die(mysql_error()); $fields = mysql_fetch_assoc($result); //Warning if remote file is to be changed :-) if ($fields['filelocal'] != "1") { echo "<p>You cannot change remote files.</p>"; } else { //change posted ID3-data $filename = $GLOBALS['audiopath'] . $fields['audio_file']; // Initialize getID3 engine require_once 'inc/id3/getid3.php'; $getID3 = new getID3(); $getID3->encoding = 'UTF-8'; require_once 'inc/id3/write.php'; $tagwriter = new getid3_writetags(); $tagwriter->filename = $filename; $tagwriter->tagformats = array('id3v2.3', 'ape'); $tagwriter->overwrite_tags = true; $tagwriter->remove_other_tags = true; // populate data array $TagData['title'][] = stripslashes($_POST['id3title']); $TagData['artist'][] = stripslashes($_POST['id3artist']); $TagData['album'][] = stripslashes($_POST['id3album']); $TagData['track'][] = stripslashes($_POST['id3track']); $TagData['genre'][] = stripslashes($_POST['id3genre']); $TagData['year'][] = stripslashes($_POST['id3year']); $TagData['comment'][] = stripslashes($_POST['id3comment']); $tagwriter->tag_data = $TagData; // write tags if ($tagwriter->WriteTags()) { return " — Success!"; } else { return " — Failure!"; if (!empty($tagwriter->warnings)) { echo 'There were some warnings:<br>' . implode('<br><br>', $tagwriter->warnings); } } } }
public static function tag($mp3, $image_name, $type) { $mp3_handler = new \getID3(); $mp3_handler->setOption(['encoding' => 'UTF-8']); $mp3_writter = new \getid3_writetags(); $mp3_writter->filename = Config::get('site.mp3_upload_path') . '/' . $mp3->mp3name; $mp3_writter->tagformats = array('id3v1', 'id3v2.3'); $mp3_writter->overwrite_tags = true; $mp3_writter->tag_encoding = 'UTF-8'; $mp3_writter->remove_other_tags = true; $mp3_data['title'][] = $mp3->name; $mp3_data['artist'][] = Config::get('site.name') . ' ' . Config::get('site.separator') . ' ' . Config::get('site.url'); //$mp3_artist; $mp3_data['album'][] = Config::get('site.name') . ' ' . Config::get('site.separator') . ' ' . Config::get('site.url'); // $mp3_data['year'][] = $mp3_year; // $mp3_data['genre'][] = $mp3_genre; $mp3_data['comment'][] = Config::get('site.name') . ' ' . Config::get('site.separator') . Config::get('site.url'); if ($mp3->price == 'paid') { $mp3_data['attached_picture'][0]['data'] = file_get_contents(Config::get('site.image_upload_path') . '/thumbs/' . $image_name); $mp3_data['attached_picture'][0]['picturetypeid'] = $type; $mp3_data['attached_picture'][0]['mime'] = $type; } else { $mp3_data['attached_picture'][0]['data'] = file_get_contents(Config::get('site.logo')); $mp3_data['attached_picture'][0]['picturetypeid'] = "image/jpg"; $mp3_data['attached_picture'][0]['mime'] = "image/jpg"; } $mp3_data['attached_picture'][0]['description'] = Config::get('site.name') . ' ' . Config::get('site.separator') . ' ' . Config::get('site.description'); $mp3_writter->tag_data = $mp3_data; return $mp3_writter->WriteTags(); }
public static function writeSongData(ArchiveSong $song) { $getID3 = new \getID3(); $getID3->setOption(array('encoding' => 'UTF8')); $tagwriter = new \getid3_writetags(); $tagwriter->filename = $song->file_path; $tagwriter->tagformats = array('id3v1', 'id3v2.3'); $tagwriter->overwrite_tags = true; $tagwriter->tag_encoding = 'UTF8'; $tagwriter->remove_other_tags = true; $tag_data = array('title' => array($song->title), 'artist' => array($song->artist), 'album' => array($song->album), 'year' => array($song->year), 'genre' => array($song->genre), 'track' => array($song->track_number)); $art_path = $song->art_path; if ($art_path) { if ($fd = fopen($art_path, 'rb')) { $APICdata = fread($fd, filesize($art_path)); fclose($fd); list($APIC_width, $APIC_height, $APIC_imageTypeID) = getimagesize($art_path); $imagetypes = array(1 => 'gif', 2 => 'jpeg', 3 => 'png'); if (isset($imagetypes[$APIC_imageTypeID])) { $tag_data['attached_picture'][0]['data'] = $APICdata; $tag_data['attached_picture'][0]['picturetypeid'] = $APIC_imageTypeID; $tag_data['attached_picture'][0]['description'] = basename($art_path); $tag_data['attached_picture'][0]['mime'] = 'image/' . $imagetypes[$APIC_imageTypeID]; $tag_data['comments']['picture'][0] = $tag_data['attached_picture'][0]; } } } $tagwriter->tag_data = $tag_data; // write tags if ($tagwriter->WriteTags()) { return true; } else { throw new \Exception(implode('<br><br>', $tagwriter->errors)); return false; } }
function update_id3_tags($newfile, $filename, $dir_path, $line, $start, $stop) { $TextEncoding = 'UTF-8'; require_once 'getid3/getid3.php'; // Initialize getID3 engine $getID3 = new getID3(); $getID3->setOption(array('encoding' => $TextEncoding)); require_once 'getid3/write.php'; // Initialize getID3 tag-writing module $tagwriter = new getid3_writetags(); //$tagwriter->filename = '/path/to/file.mp3'; $tagwriter->filename = $newfile; //$tagwriter->tagformats = array('id3v1', 'id3v2.3'); $tagwriter->tagformats = array('id3v2.3'); // set various options (optional) $tagwriter->overwrite_tags = true; // if true will erase existing tag data and write only passed data; if false will merge passed data with existing tag data (experimental) $tagwriter->remove_other_tags = true; // if true removes other tag formats (e.g. ID3v1, ID3v2, APE, Lyrics3, etc) that may be present in the file and only write the specified tag format(s). If false leaves any unspecified tag formats as-is. $tagwriter->tag_encoding = $TextEncoding; $tagwriter->remove_other_tags = true; // populate data array $TagData = array('title' => array($line[0] . ' -D-E- ' . $line[7] . '(' . $line[8] . ')'), 'artist' => array('Japanese Core6k shadowing'), 'album' => array('Japanese Core6k shadowing ' . $start . ' to ' . $stop), 'year' => array('2016'), 'genre' => array('Educational'), 'comment' => array($line[7] . '(' . $line[8] . ')')); $tagwriter->tag_data = $TagData; // write tags if ($tagwriter->WriteTags()) { // echo 'Successfully wrote tags<br>'; if (!empty($tagwriter->warnings)) { echo 'There were some warnings:<br>' . implode('<br><br>', $tagwriter->warnings); } } else { echo 'Failed to write tags!<br>' . implode('<br><br>', $tagwriter->errors); } }
/** * @param $path * @param $tags * * @return bool */ public function write_ID3($path, $tags) { if (is_file(DOCPATH . $path)) { require_once APPPATH . 'libraries/getid3/getid3.php'; $getID3 = new getID3(); $getID3->setOption(array('encoding' => 'UTF-8')); getid3_lib::IncludeDependency(GETID3_INCLUDEPATH . 'write.php', __FILE__, TRUE); $tagwriter = new getid3_writetags(); $tagwriter->filename = $path; $tagwriter->tag_encoding = 'UTF-8'; $tagwriter->tagformats = array('id3v1', 'id3v2.3'); $tagwriter->overwrite_tags = TRUE; $tagwriter->tag_data = $tags; $tagwriter->WriteTags(); if (!empty($tagwriter->warnings)) { return FALSE; } return TRUE; } return FALSE; }
public function write($filepath, $mimetype) { if (!$this->handle) { return false; } if (!($ext = $this->info["EXPORT"][$mimetype])) { # this plugin can't write this mimetype $this->postError(1610, _t("Can't convert '%1' to '%2': unsupported format", $this->handle["mime_type"], $mimetype), "WLPlugAudio->write()"); return false; } $o_config = Configuration::load(); $va_tags = $this->get("getID3_tags"); $vs_intro_filepath = $this->get("intro_filepath"); $vs_outro_filepath = $this->get("outro_filepath"); if (($vn_output_bitrate = $this->get("bitrate")) < 32) { $vn_output_bitrate = 64; } if (($vn_sample_frequency = $this->get("sample_frequency")) < 4096) { $vn_sample_frequency = 44100; } if (($vn_channels = $this->get("channels")) < 1) { $vn_channels = 1; } if ($this->properties["mimetype"] == $mimetype && !($this->properties["mimetype"] == "audio/mpeg" && ($vs_intro_filepath || $vs_outro_filepath)) && ($vn_output_bitrate == $this->input_bitrate && $vn_sample_frequency == $this->input_sample_frequency && $vn_channels == $this->input_channels)) { # write the file if (!copy($this->filepath, $filepath . "." . $ext)) { $this->postError(1610, _t("Couldn't write file to '%1'", $filepath), "WLPlugAudio->write()"); return false; } } else { if ($mimetype != "image/png" && $mimetype != "image/jpeg" && $this->opb_ffmpeg_available) { # # Do conversion # if ($mimetype == 'audio/ogg') { exec($this->ops_path_to_ffmpeg . " -f " . $this->info["IMPORT"][$this->properties["mimetype"]] . " -i " . caEscapeShellArg($this->filepath) . " -acodec libvorbis -ab " . $vn_output_bitrate . " -ar " . $vn_sample_frequency . " -ac " . $vn_channels . " -y " . caEscapeShellArg($filepath . "." . $ext) . " 2>&1", $va_output, $vn_return); } else { exec($this->ops_path_to_ffmpeg . " -f " . $this->info["IMPORT"][$this->properties["mimetype"]] . " -i " . caEscapeShellArg($this->filepath) . " -f " . $this->info["EXPORT"][$mimetype] . " -ab " . $vn_output_bitrate . " -ar " . $vn_sample_frequency . " -ac " . $vn_channels . " -y " . caEscapeShellArg($filepath . "." . $ext) . " 2>&1", $va_output, $vn_return); } if ($vn_return != 0) { @unlink($filepath . "." . $ext); $this->postError(1610, _t("Error converting file to %1 [%2]: %3", $this->typenames[$mimetype], $mimetype, join("; ", $va_output)), "WLPlugAudio->write()"); return false; } if ($mimetype == "audio/mpeg") { if ($vs_intro_filepath || $vs_outro_filepath) { // add intro $vs_tmp_filename = tempnam(caGetTempDirPath(), "audio"); if ($vs_intro_filepath) { exec($this->ops_path_to_ffmpeg . " -i " . caEscapeShellArg($vs_intro_filepath) . " -f mp3 -ab " . $vn_output_bitrate . " -ar " . $vn_sample_frequency . " -ac " . $vn_channels . " -y " . caEscapeShellArg($vs_tmp_filename), $va_output, $vn_return); if ($vn_return != 0) { @unlink($filepath . "." . $ext); $this->postError(1610, _t("Error converting intro to %1 [%2]: %3", $this->typenames[$mimetype], $mimetype, join("; ", $va_output)), "WLPlugAudio->write()"); return false; } } $r_fp = fopen($vs_tmp_filename, "a"); $r_mp3fp = fopen($filepath . "." . $ext, "r"); while (!feof($r_mp3fp)) { fwrite($r_fp, fread($r_mp3fp, 8192)); } fclose($r_mp3fp); if ($vs_outro_filepath) { $vs_tmp_outro_filename = tempnam(caGetTempDirPath(), "audio"); exec($this->ops_path_to_ffmpeg . " -i " . caEscapeShellArg($vs_outro_filepath) . " -f mp3 -ab " . $vn_output_bitrate . " -ar " . $vn_sample_frequency . " -ac " . $vn_channels . " -y " . caEscapeShellArg($vs_tmp_outro_filename), $va_output, $vn_return); if ($vn_return != 0) { @unlink($filepath . "." . $ext); $this->postError(1610, _t("Error converting outro to %1 [%2]: %3", $this->typenames[$mimetype], $mimetype, join("; ", $va_output)), "WLPlugAudio->write()"); return false; } $r_mp3fp = fopen($vs_tmp_outro_filename, "r"); while (!feof($r_mp3fp)) { fwrite($r_fp, fread($r_mp3fp, 8192)); } unlink($vs_tmp_outro_filename); } fclose($r_fp); copy($vs_tmp_filename, $filepath . "." . $ext); unlink($vs_tmp_filename); } $o_getid3 = new getid3(); $va_mp3_output_info = $o_getid3->analyze($filepath . "." . $ext); $this->properties = array(); if (is_array($va_mp3_output_info["tags"]["id3v1"]["title"])) { $this->properties["title"] = join("; ", $va_mp3_output_info["tags"]["id3v1"]["title"]); } if (is_array($va_mp3_output_info["tags"]["id3v1"]["artist"])) { $this->properties["author"] = join("; ", $va_mp3_output_info["tags"]["id3v1"]["artist"]); } if (is_array($va_mp3_output_info["tags"]["id3v1"]["comment"])) { $this->properties["copyright"] = join("; ", $va_mp3_output_info["tags"]["id3v1"]["comment"]); } if (is_array($va_mp3_output_info["tags"]["id3v1"]["album"]) && is_array($va_mp3_output_info["tags"]["id3v1"]["year"]) && is_array($va_mp3_output_info["tags"]["id3v1"]["genre"])) { $this->properties["description"] = join("; ", $va_mp3_output_info["tags"]["id3v1"]["album"]) . " " . join("; ", $va_mp3_output_info["tags"]["id3v1"]["year"]) . " " . join("; ", $va_mp3_output_info["tags"]["id3v1"]["genre"]); } $this->properties["type_specific"] = array("audio" => $va_mp3_output_info["audio"], "tags" => $va_mp3_output_info["tags"]); $this->properties["bandwidth"] = array("min" => $va_mp3_output_info["bitrate"], "max" => $va_mp3_output_info["bitrate"]); $this->properties["bitrate"] = $va_mp3_output_info["bitrate"]; $this->properties["channels"] = $va_mp3_output_info["audio"]["channels"]; $this->properties["sample_frequency"] = $va_mp3_output_info["audio"]["sample_rate"]; $this->properties["duration"] = $va_mp3_output_info["playtime_seconds"]; } } else { # use default media icons if ffmpeg is not present or the current version is an image if (!$this->get("width") && !$this->get("height")) { $this->set("width", 580); $this->set("height", 200); } return __CA_MEDIA_AUDIO_DEFAULT_ICON__; } } if ($mimetype == "audio/mpeg") { // try to write getID3 tags (if set) if (is_array($pa_options) && is_array($pa_options) && sizeof($pa_options) > 0) { require_once 'parsers/getid3/getid3.php'; require_once 'parsers/getid3/write.php'; $o_getID3 = new getID3(); $o_tagwriter = new getid3_writetags(); $o_tagwriter->filename = $filepath . "." . $ext; $o_tagwriter->tagformats = array('id3v2.3'); $o_tagwriter->tag_data = $pa_options; // write them tags if (!$o_tagwriter->WriteTags()) { // failed to write tags } } } $this->properties["mimetype"] = $mimetype; $this->properties["typename"] = $this->typenames[$mimetype]; return $filepath . "." . $ext; }
$fd = fopen($img, 'rb'); //$filesize = curl_get_file_size($url); $APICdata = stream_get_contents($fd); // || fread($fd, $filesize);// fclose($fd); list($APIC_width, $APIC_height, $APIC_imageTypeID) = GetImageSize($img); $imagetypes = array(1 => 'gif', 2 => 'jpeg', 3 => 'png'); $TagData = array('title' => array($title), 'artist' => array($artist), 'album' => array('ReplayList'), 'comment' => array('Follow @ReplayList')); if (isset($imagetypes[$APIC_imageTypeID])) { $TagData['attached_picture'][0]['data'] = $APICdata; $TagData['attached_picture'][0]['picturetypeid'] = 3; $TagData['attached_picture'][0]['description'] = $title; $TagData['attached_picture'][0]['mime'] = 'image/' . $imagetypes[$APIC_imageTypeID]; } $tagwriter->tag_data = $TagData; $tagwriter->WriteTags(); } //else //echo "cannot copy $url into $filename"; if (file_exists($filename)) { $final_file = "http://" . $_SERVER["HTTP_HOST"] . "/{$filename}"; } else { $final_file = $url; } header("location: {$final_file}"); /*$size = filesize($filename); header('HTTP/1.1 206 Partial Content'); header("Pragma: public"); header("Cache-Control: public");
function SERVICE_SET_TAGDATA_getid3($fname, $meta) { global $include_path; // Ok, now we need to convert out tags to the getID3 format // We support the following tags: /* title artist album year number genre comment pic_data pic_ext pic_name pic_mime TODO: support writing lyrics, but need to correctly encode into the id3v2 tag */ // Ok, first we need to include the getID3 functions define('GETID3_INCLUDEPATH', $include_path . "services/services/tagdata/getid3/"); include_once $include_path . "services/services/tagdata/getid3/getid3.php"; // Ok, now let's setup our getID3 object $getID3 = new getID3(); $getID3->encoding = 'UTF-8'; getid3_lib::IncludeDependency(GETID3_INCLUDEPATH . 'write.php', __FILE__, true); $tagwriter = new getid3_writetags(); $tagwriter->filename = $fname; $fileInfo = $getID3->analyze($fname); getid3_lib::CopyTagsToComments($fileInfo); switch ($fileInfo['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; } $tagwriter->tagformats = $ValidTagTypes; $data = array(); if (isset($meta['pic_data'])) { $data['attached_picture'][0]['data'] = $meta['pic_data']; } else { if (!empty($data['attached_picture'][0]['data'])) { $data['attached_picture'][0]['data'] = $fileInfo['attached_picture'][0]['data']; } } if (isset($meta['pic_ext'])) { $data['attached_picture'][0]['picturetypeid'] = $meta['pic_ext']; } else { if (!empty($data['attached_picture'][0]['picturetypeid'])) { $data['attached_picture'][0]['picturetypeid'] = $fileInfo['attached_picture'][0]['picturetypeid']; } } if (isset($meta['pic_name'])) { $data['attached_picture'][0]['description'] = $meta['pic_name']; } else { if (!empty($data['attached_picture'][0]['description'])) { $data['attached_picture'][0]['description'] = $fileInfo['attached_picture'][0]['description']; } } if (isset($meta['pic_mime'])) { $data['attached_picture'][0]['mime'] = $meta['pic_mime']; } else { if (!empty($data['attached_picture'][0]['mime'])) { $data['attached_picture'][0]['mime'] = $fileInfo['attached_picture'][0]['mime']; } } if (isset($meta['year']) && $meta['year'] != "-") { $data['year'][] = $meta['year']; } else { if (!empty($fileInfo['comments']['year'][0])) { $data['year'][] = $fileInfo['comments']['year'][0]; } else { $data['year'][] = ""; } } if (isset($meta['number']) && $meta['number'] != "-") { $data['track'][] = $meta['number']; } else { if (!isset($meta['track'])) { // handle 'track' later if (!empty($fileInfo['comments']['comment'][0])) { $data['track'][] = $fileInfo['comments']['track'][0]; } else { $data['track'][] = "1"; } } } if (isset($meta['comment'])) { $data['comment'][] = $meta['comment']; } else { if (!empty($fileInfo['comments']['comment'][0])) { $data['comment'][] = $fileInfo['comments']['comment'][0]; } else { $data['comment'][] = ""; } } if (isset($meta['title']) && $meta['title'] != "-") { $data['title'][] = $meta['title']; } else { if (!empty($fileInfo['comments']['title'][0])) { $data['title'][] = $fileInfo['comments']['title'][0]; } else { $data['title'][] = ""; } } if (isset($meta['artist']) && $meta['artist'] != "-") { $data['artist'][] = $meta['artist']; } else { if (!empty($fileInfo['comments']['artist'][0])) { $data['artist'][] = $fileInfo['comments']['artist'][0]; } else { $data['artist'][] = ""; } } if (isset($meta['album']) && $meta['album'] != "-") { $data['album'][] = $meta['album']; } else { if (!empty($fileInfo['comments']['album'][0])) { $data['album'][] = $fileInfo['comments']['album'][0]; } else { $data['album'][] = ""; } } if (isset($meta['genre']) && $meta['genre'] != "-") { $data['genre'][] = $meta['genre']; } else { if (!empty($fileInfo['comments']['genre'][0])) { $data['genre'][] = $fileInfo['comments']['genre'][0]; } else { $data['genre'][] = ""; } } if (!isset($meta['number']) && isset($meta['track'])) { $data['track'][] = $meta['track']; } else { if (!isset($meta['number'])) { if (!empty($fileInfo['comments']['track'][0])) { $data['track'][] = $fileInfo['comments']['track'][0]; } else { $data['track'][] = ""; } } } // Now let's write $tagwriter->tag_data = $data; if ($tagwriter->WriteTags()) { return true; } else { return false; } }
private function manageFileUpload($object) { $directory = $object->getDirectory(); $directory = preg_replace("/\\/\$/", '', $directory); if (!is_dir('/var/lib/mpd/music' . $directory)) { mkdir('/var/lib/mpd/music' . $directory, 0755); } if ($object->getUrl()) { $filename = $object->getUrl(); $filename = explode("/", $filename); if (file_exists('/var/lib/mpd/' . $object->getUrl())) { rename('/var/lib/mpd/' . $object->getUrl(), '/var/lib/mpd/music' . $directory . '/' . end($filename)); $object->setUrl('music' . $directory . '/' . end($filename)); } } if ($object->getFile()) { $object->file->move('/var/lib/mpd/music' . $directory, $object->file->getClientOriginalName()); $object->setUrl('music' . $directory . '/' . $object->file->getClientOriginalName()); } /* if (null === $this->getFile()) { return; }elseif(isset($this->temp) && null === $this->getFile()){ $this->getFile()->move('/var/lib/mpd/'.$this->temp, '/var/lib/mpd/'.$this->path); } // check if we have an old image if (isset($this->temp)) { // delete the old image unlink('/var/lib/mpd/'.$this->temp); // clear the temp image path $this->temp = null; } $this->file = null; */ if ($object->getUrl()) { if ($object->getTitle() || $object->getArtist() || $object->getAlbum() || $object->getGenre()) { $TextEncoding = 'UTF-8'; require_once $_SERVER['DOCUMENT_ROOT'] . '/libs/getid3/getid3.php'; // Initialize getID3 engine $getID3 = new \getID3(); $getID3->setOption(array('encoding' => $TextEncoding)); require_once $_SERVER['DOCUMENT_ROOT'] . '/libs/getid3/write.php'; // Initialize getID3 tag-writing module $tagwriter = new \getid3_writetags(); //$tagwriter->filename = '/path/to/file.mp3'; $tagwriter->filename = '/var/lib/mpd/' . $object->getUrl(); //$tagwriter->tagformats = array('id3v1', 'id3v2.3'); $tagwriter->tagformats = array('id3v2.3'); // set various options (optional) //$tagwriter->overwrite_tags = true; //$tagwriter->overwrite_tags = false; $tagwriter->tag_encoding = $TextEncoding; $tagwriter->remove_other_tags = true; // populate data array $TagData = array('title' => array($object->getTitle()), 'artist' => array($object->getArtist()), 'album' => array($object->getAlbum()), 'genre' => array($object->getGenre())); $tagwriter->tag_data = $TagData; // write tags if (!$tagwriter->WriteTags()) { die('Failed to write tags!<br>' . implode('<br><br>', $tagwriter->errors)); } } else { $TextEncoding = 'UTF-8'; require_once $_SERVER['DOCUMENT_ROOT'] . '/libs/getid3/getid3.php'; // Initialize getID3 engine $getID3 = new \getID3(); $ThisFileInfo = $getID3->analyze('/var/lib/mpd/' . $object->getUrl()); if (isset($ThisFileInfo['tags']['id3v2']['title'][0])) { $object->setTitle($ThisFileInfo['tags']['id3v2']['title'][0]); } if (isset($ThisFileInfo['tags']['id3v2']['artist'][0])) { $object->setArtist($ThisFileInfo['tags']['id3v2']['artist'][0]); } if (isset($ThisFileInfo['tags']['id3v2']['album'][0])) { $object->setAlbum($ThisFileInfo['tags']['id3v2']['album'][0]); } if (isset($ThisFileInfo['tags']['id3v2']['genre'][0])) { $object->setGenre($ThisFileInfo['tags']['id3v2']['genre'][0]); } } } }
/** * Method for to write ID3Tags into file * * @param array $data ID3 tag items * @param string Kind of text encoding, for example UTF-8 * @return boolean */ public function writeID3Tags($data, $TextEncoding = 'UTF-8') { $dispatcher = JDispatcher::getInstance(); require_once JPATH_COMPONENT_ADMINISTRATOR . DIRECTORY_SEPARATOR . 'helpers' . DIRECTORY_SEPARATOR . 'id3' . DIRECTORY_SEPARATOR . 'getid3.php'; require_once JPATH_COMPONENT_ADMINISTRATOR . DIRECTORY_SEPARATOR . 'helpers' . DIRECTORY_SEPARATOR . 'id3' . DIRECTORY_SEPARATOR . 'write.php'; // Initialize getID3 engine $getID3 = new getID3(); $getID3->setOption(array('encoding' => $TextEncoding)); $tagwriter = new getid3_writetags(); $tagwriter->tagformats = array('id3v2.3'); // Set various options $tagwriter->overwrite_tags = true; $tagwriter->tag_encoding = $TextEncoding; $tagwriter->remove_other_tags = true; $dispatcher->trigger('onEventLogging', array(array('method' => __METHOD__ . ":" . __LINE__, 'message' => 'Writing tags for: ' . $data['pathatlocal'] . '/' . $data['file'], 'priority' => JLog::INFO, 'section' => 'admin'))); // Data for ID3 Tag $tagwriter->filename = $data['pathatlocal'] . '/' . $data['file']; // Get name for Genre ID if ($data['catid']) { $genre_name = self::getGenrename($data['catid'])->title; } else { $genre_name = null; } $dispatcher->trigger('onEventLogging', array(array('method' => __METHOD__ . ":" . __LINE__, 'message' => 'Name for Genre id: ' . $data['catid'] . ' is ' . $genre_name, 'priority' => JLog::INFO, 'section' => 'admin'))); // Create data array for ID3 tag $TagData = array('title' => array($data['title']), 'artist' => array($data['artist']), 'album' => array($data['album']), 'year' => array($data['year']), 'genre' => array($genre_name), 'comment' => array('Edited by PlayJoom streaming server'), 'track' => array($data['tracknumber'])); $tagwriter->tag_data = $TagData; // write ID3 tag if ($tagwriter->WriteTags()) { $dispatcher->trigger('onEventLogging', array(array('method' => __METHOD__ . ":" . __LINE__, 'message' => 'Writting of ID3 Tag successfully.', 'priority' => JLog::INFO, 'section' => 'admin'))); if (!empty($tagwriter->warnings)) { $dispatcher->trigger('onEventLogging', array(array('method' => __METHOD__ . ":" . __LINE__, 'message' => 'Attention! ' . implode('<br>', $tagwriter->warnings), 'priority' => JLog::WARNING, 'section' => 'admin'))); return false; } } else { $dispatcher->trigger('onEventLogging', array(array('method' => __METHOD__ . ":" . __LINE__, 'message' => 'Failed to write tags! ' . implode('<br>', $tagwriter->errors), 'priority' => JLog::WARNING, 'section' => 'admin'))); return true; } }
function saveid3($update_id) { global $settings; global $fields; //getting the filename from the id $dosql = "SELECT title, id, filelocal, audio_file FROM " . $GLOBALS['prefix'] . "lb_postings \n WHERE id='" . $update_id . "';"; $result = $GLOBALS['lbdata']->GetArray($dosql); $fields = $result[0]; //Warning if remote file is to be changed :-) if ($fields['filelocal'] != "1") { echo "<p>" . bla("msg_changeremoteid3") . "</p>"; } else { //get old values $olddata = getid3data($GLOBALS['audiopath'] . $fields['audio_file'], "back"); //change posted ID3-data $filename = $GLOBALS['audiopath'] . $fields['audio_file']; // Initialize getID3 engine require_once 'inc/id3/getid3.php'; $getID3 = new getID3(); $getID3->encoding = 'UTF-8'; require_once 'inc/id3/write.php'; $tagwriter = new getid3_writetags(); $tagwriter->filename = $filename; $tagwriter->tagformats = array('id3v2.3'); $tagwriter->overwrite_tags = true; $tagwriter->remove_other_tags = true; $tagwriter->tag_encoding = 'UTF-8'; //prepare image if (isset($_FILES['image']) && $_FILES['image']['size'] != "0") { $image = $_FILES['image']['tmp_name']; $mime = $_FILES['image']['type']; $fd = @fopen($image, 'rb'); $APICdata = @fread($fd, filesize($image)); @fclose($fd); } else { $APICdata = $olddata['image']; $mime = "image/jpeg"; switch ($olddata['imgtype']) { case ".gif": $mime = "image/gif"; case ".png": $mime = "image/png"; } } //populate data array $TagData['title'][] = $_POST['id3title']; $TagData['artist'][] = $_POST['id3artist']; $TagData['album'][] = $_POST['id3album']; $TagData['track'][] = $_POST['id3track']; $TagData['genre'][] = $_POST['id3genre']; $TagData['year'][] = $_POST['id3year']; $TagData['comment'][] = $_POST['id3comment']; $TagData['attached_picture'][0]['data'] = $APICdata; $TagData['attached_picture'][0]['picturetypeid'] = '3'; $TagData['attached_picture'][0]['description'] = $settings['sitename']; $TagData['attached_picture'][0]['mime'] = $mime; $tagwriter->tag_data = $TagData; // write tags if ($tagwriter->WriteTags()) { return " — " . bla("id3_success"); } else { return " — " . bla("id3_failure"); if (!empty($tagwriter->warnings)) { echo bla("msg_somewarnings") . '<br />' . implode('<br><br>', $tagwriter->warnings); } } } }
public function write_id3($data) { // Get the Raw file information $this->read_id3(); if (isset($this->_raw['tags']['id3v2'])) { getid3_lib::IncludeDependency(GETID3_INCLUDEPATH . 'write.php', __FILE__, true); $tagWriter = new getid3_writetags(); $tagWriter->filename = $this->filename; //'id3v2.4' doesn't saves the year; $tagWriter->tagformats = array('id3v1', 'id3v2.3'); $tagWriter->overwrite_tags = true; $tagWriter->remove_other_tags = true; $tagWriter->tag_encoding = 'UTF-8'; $TagData = $this->_raw['tags']['id3v2']; // Foreach what we've got foreach ($data as $key => $value) { if ($key != 'APIC') { $TagData[$key][0] = $value; } } if (isset($data['APIC'])) { $TagData['attached_picture'][0]['data'] = $data['APIC']['data']; $TagData['attached_picture'][0]['picturetypeid'] = '3'; $TagData['attached_picture'][0]['description'] = 'Cover'; $TagData['attached_picture'][0]['mime'] = $data['APIC']['mime']; } $tagWriter->tag_data = $TagData; if ($tagWriter->WriteTags()) { if (!empty($tagWriter->warnings)) { debug_event('vainfo', 'FWarnings ' . implode("\n", $tagWriter->warnings), 5); } } else { debug_event('vainfo', 'Failed to write tags! ' . implode("\n", $tagWriter->errors), 5); } } }
function cacheUpdateTag($track_id, $profile, $file) { global $cfg, $db; $query = mysql_query('SELECT image, bitmap.flag FROM bitmap, track WHERE bitmap.album_id = track.album_id AND track_id = "' . mysql_real_escape_string($track_id) . '"'); $bitmap = mysql_fetch_assoc($query); $query = mysql_query('SELECT LOWER(SUBSTRING_INDEX(relative_file, ".", -1)) AS extension, track.artist, title, album, year, disc, discs, number, audio_lossless FROM track, album WHERE track_id = "' . mysql_real_escape_string($track_id) . '" AND track.album_id = album.album_id'); $track = mysql_fetch_assoc($query); $query = mysql_query('SELECT tag_hash FROM cache WHERE id = "' . mysql_real_escape_string($track_id) . '" AND profile = ' . (int) $profile); $cache = mysql_fetch_assoc($query); // populate data array $tagData['title'][0] = iconv(NJB_DEFAULT_CHARSET, $cfg['tag_encoding'][$profile], $track['title']); $tagData['artist'][0] = iconv(NJB_DEFAULT_CHARSET, $cfg['tag_encoding'][$profile], $track['artist']); $tagData['album'][0] = iconv(NJB_DEFAULT_CHARSET, $cfg['tag_encoding'][$profile], $track['album']); $tagData['year'][0] = $track['year']; $tagData['comment'][0] = $track['audio_lossless'] ? 'Lossless audio source' : 'Transcoded from ' . $track['extension'] . ' source'; if ($cfg['tag_format'][$profile] == 'id3v2.3' && $track['number']) { $tagData['tracknumber'][0] = $track['number']; } if ($cfg['tag_format'][$profile] == 'id3v2.3' && $track['discs'] > 1) { $tagData['part_of_a_set'][0] = $track['disc'] . '/' . $track['discs']; } if ($cfg['tag_format'][$profile] == 'id3v2.3' && $bitmap['flag'] == 3) { $tagData['attached_picture'][0]['data'] = $bitmap['image']; $tagData['attached_picture'][0]['picturetypeid'] = 0x3; // 0x03 => 'Cover (front)' $tagData['attached_picture'][0]['description'] = ''; $tagData['attached_picture'][0]['mime'] = 'image/jpeg'; } unset($bitmap, $track); $hash = $cfg['tag_format'][$profile]; $hash .= $cfg['tag_encoding'][$profile]; $hash .= $cfg['tag_padding'][$profile]; $hash .= print_r($tagData, true); $hash = md5($hash); if ($hash != $cache['tag_hash']) { require_once NJB_HOME_DIR . 'getid3/getid3/getid3.php'; require_once NJB_HOME_DIR . 'getid3/getid3/write.php'; // Initialize getID3 engine $getID3 = new getID3(); $getID3->setOption(array('encoding' => $cfg['tag_encoding'][$profile])); // Initialize getID3 tag-writing module $tagwriter = new getid3_writetags(); $tagwriter->filename = $file; $tagwriter->tagformats = array($cfg['tag_format'][$profile]); // array('id3v2.3'); // set various options (optional) $tagwriter->tag_encoding = $cfg['tag_encoding'][$profile]; $tagwriter->overwrite_tags = true; $tagwriter->remove_other_tags = true; $tagwriter->id3v2_paddedlength = $cfg['tag_padding'][$profile]; $tagwriter->tag_data = $tagData; if ($tagwriter->WriteTags() == false) { message(__FILE__, __LINE__, 'error', '[b]Failed to write tags[/b][br]Error: ' . implode('[br]', $tagwriter->errors) . '[br]File: ' . $file); } cacheUpdateFile($track_id, $profile, $file, $hash); } }
function defaultid3tags($filename, $title) { //takes the uploaded file and changes id3 tagging global $settings; if ($settings['id3_overwrite'] == "1") { require_once 'inc/id3/getid3.php'; $getID3 = new getID3(); $getID3->encoding = 'UTF-8'; require_once 'inc/id3/write.php'; $tagwriter = new getid3_writetags(); $tagwriter->filename = $filename; $tagwriter->tagformats = array('id3v2.3'); $tagwriter->overwrite_tags = true; $tagwriter->remove_other_tags = true; $tagwriter->tag_encoding = 'UTF-8'; //prepare image $image = $GLOBALS['audiopath'] . "itunescover.jpg"; $fd = @fopen($image, 'rb'); $APICdata = @fread($fd, filesize($image)); @fclose($fd); //write data $TagData['title'][] = $title; $TagData['artist'][] = $settings['id3_artist']; $TagData['album'][] = $settings['id3_album']; $TagData['genre'][] = $settings['id3_genre']; $TagData['year'][] = date('Y'); $TagData['comment'][] = $settings['id3_comment']; $TagData['attached_picture'][0]['data'] = $APICdata; $TagData['attached_picture'][0]['picturetypeid'] = '3'; $TagData['attached_picture'][0]['description'] = $settings['sitename']; $TagData['attached_picture'][0]['mime'] = 'image/jpeg'; $tagwriter->tag_data = $TagData; if ($tagwriter->WriteTags()) { } else { echo "<p class=\"msg\">Error writing Tags</p>"; } } }
public function writeMetadata(array $array, $output = false, $options = false) { $getid3 = new getID3(); if (is_array($options) && array_key_exists('overwrite', $options) && $options['overwrite']) { $overwrite = true; } else { $overwrite = false; } if ($output === false) { $output = $this->source; } if (array_key_exists('albumart', $array)) { $array['albumart'] = escapeshellarg($array['albumart']); exec(dirname('__FILENAME__') . DIRECTORY_SEPARATOR . 'getid3' . DIRECTORY_SEPARATOR . 'helperapps' . DIRECTORY_SEPARATOR . "metaflac.exe --import-picture-from=" . $array['albumart'] . " \"" . $output . "\""); unset($array['albumart']); } if ($this->getMetadata($this->source)) { if ($overwrite) { foreach ($this->metadata as $k => $v) { if (!array_key_exists($k, $array)) { $array[$k] = null; } } } else { $array = array_merge($this->metadata, $array); } } $tagWrite = new getid3_writetags(); $tagWrite->filename = $output; $tagWrite->tagformats = array('metaflac'); $tagWrite->remove_other_tags = true; $tagWrite->tag_encoding = 'UTF-8'; if ($GLOBALS['cfg_metadata_overwrite_tags']) { $tagWrite->overwrite_tags = true; } else { $tagWrite->overwrite_tags = false; } // if(isset($GLOBALS['overwrite_override']) && $GLOBALS['overwrite_override']) { // $tagWrite->overwrite_tags = false; // } $tagPack = array(); foreach ($array as $k => $v) { $tagPack[$k] = array($v); } //We don't want to write ALL of the metadata we collect to FLAC files. This is a list of the fields to include. $tagWrite->tag_data = $tagPack; file_put_contents('json-log.json', json_encode($tagPack, JSON_PRETTY_PRINT), FILE_APPEND); $tagWrite->WriteTags(); unset($getid3, $tagWrite); return $tagPack; }
public function home() { global $core; error_reporting(0); $v = $this->__(w('v')); if (!$v['v']) { $sql = 'SELECT media_id FROM _bio_media WHERE media_type = ? AND media_mp3 = ? LIMIT 1'; $v['v'] = _field(sql_filter($sql, 1, 0), 'media_id', 0); } $tag_format = 'UTF-8'; $relative_path = '/data/artists/%s/media/'; $absolute_path = '/var/www/vhosts/rockrepublik.net/www' . $relative_path; $sql = 'SELECT m.*, b.bio_id, b.bio_name FROM _bio_media m LEFT JOIN _bio b ON m.media_bio = b.bio_id WHERE m.media_id = ?'; //$spaths = '/data/artists/' . $songd['ub'] . '/media/'; //$spath = '/var/www/vhosts/rockrepublik.net/httpdocs' . $spaths; if ($media = _fieldrow(sql_filter($sql, $v['v']))) { $row_relative = sprintf($relative_path, $media['bio_id']); $row_absolute = $absolute_path . $row_relative; $row_wma = $row_absolute . $media['media_id'] . '.wma'; $row_mp3 = $row_absolute . $media['media_id'] . '.mp3'; $rel_wma = '.' . $row_relative . $media['media_id'] . '.wma'; $rel_mp3 = '.' . $row_relative . $media['media_id'] . '.mp3'; if (@file_exists($rel_wma) && !@file_exists($rel_mp3) && !$media['media_mp3']) { exec('ffmpeg -i ' . $row_wma . ' -vn -ar 44100 -ac 2 -ab 64kb -f mp3 ' . $row_mp3); include_once XFS . XCOR . 'getid3/getid3.php'; $getID3 = new getID3(); $getID3->setOption(array('encoding' => $tag_format)); getid3_lib::IncludeDependency(GETID3_INCLUDEPATH . 'write.php', __FILE__, true); $tagwriter = new getid3_writetags(); $tagwriter->filename = getid3_lib::SafeStripSlashes($row_mp3); $tagwriter->tagformats = array('id3v1'); $tagwriter->overwrite_tags = true; $tagwriter->tag_encoding = $tag_format; $tagwriter->remove_other_tags = true; $tag_comment = 'Visita www.rockrepublik.net'; $media['album'] = !empty($media['media_album']) ? $media['media_album'] : 'Single'; $media['genre'] = !empty($media['media_genre']) ? $media['media_genre'] : 'Rock'; $media_f = array('title', 'name', 'album', 'genre'); foreach ($media_f as $mr) { $media['media_' . $mr] = getid3_lib::SafeStripSlashes(utf8_encode(html_entity_decode($media['media_' . $mr]))); } $tagwriter->tag_data = array('title' => array($media['media_title']), 'artist' => array($media['media_name']), 'album' => array($media['media_album']), 'year' => array(getid3_lib::SafeStripSlashes($media['media_year'])), 'genre' => array($media['media_genre']), 'comment' => array(getid3_lib::SafeStripSlashes($tag_comment)), 'tracknumber' => array('')); $tagwriter->WriteTags(); $sql = 'UPDATE _bio_media SET media_mp3 = ? WHERE media_id = ?'; _sql(sql_filter($sql, 1, $media['media_id'])); $fp = @fopen('./conv.txt', 'a+'); fwrite($fp, $row_mp3 . "\n"); fclose($fp); } if (!@file_exists($rel_wma)) { $sql = 'UPDATE _bio_media SET media_mp3 = ? WHERE media_id = ?'; _sql(sql_filter($sql, 2, $media['media_id'])); } } $sql = 'SELECT media_id FROM _bio_media WHERE media_type = ? AND media_mp3 = ? LIMIT 1'; if ($v_next = _field(sql_filter($sql, 1, 0), 'media_id', 0)) { sleep(1); _redirect(_link($this->m(), array('v' => $v_next))); } else { $this->e('no_next'); } return $this->e('.'); }
public function tagWriter($file, $songdata) { $getID3 = new getID3(); $TextEncoding = 'UTF-8'; $getID3->setOption(array('encoding' => $TextEncoding)); $tagwriter = new getid3_writetags(); $tagwriter->filename = $file; // print_r(base_url($file)); $tagwriter->tagformats = array('id3v2.3'); $tagwriter->overwrite_tags = true; $tagwriter->tag_encoding = $TextEncoding; //$tagwriter->remove_other_tags = true; $TagData = array('title' => array($songdata['titulo']), 'artist' => array($songdata['artista']), 'album' => array($songdata['album']), 'comment' => array('Tag creada por MusicBox')); $tagwriter->tag_data = $TagData; if ($tagwriter->WriteTags()) { echo 'Successfully wrote tags<br>'; if (!empty($tagwriter->warnings)) { echo 'There were some warnings:<br>' . implode('<br><br>', $tagwriter->warnings); } } else { echo 'Failed to write tags!<br>' . implode('<br><br>', $tagwriter->errors); } }
function home() { global $db, $nucleo; error_reporting(0); $v = $this->control->__(array('v' => array('default' => 0))); if (!$v['v']) { $sql = 'SELECT id FROM _dl WHERE ud = 1 AND dl_mp3 = 0 ORDER BY id LIMIT 1'; $v['v'] = $this->_field($sql, 'id'); } $sql = 'SELECT d.*, a.name FROM _dl d, _artists a WHERE d.id = ' . (int) $v['v'] . ' AND d.ub = a.ub'; if ($songd = $this->_fieldrow($sql)) { $spaths = '/data/artists/' . $songd['ub'] . '/media/'; $spath = '/var/www/vhosts/rockrepublik.net/httpdocs' . $spaths; $songid = $songd['id']; $fwma = $spath . $songid . '.wma'; $fmp3 = $spath . $songid . '.mp3'; if (@file_exists('.' . $spaths . $songid . '.wma') && !@file_exists('.' . $spaths . $songid . '.mp3') && !$songd['dl_mp3']) { exec('ffmpeg -i ' . $fwma . ' -vn -ar 44100 -ac 2 -ab 64kb -f mp3 ' . $fmp3); // MP3 tags $tag_format = 'UTF-8'; include_once(SROOT . 'core/getid3/getid3.php'); $getID3 = new getID3; $getID3->setOption(array('encoding' => $tag_format)); getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'write.php', __FILE__, true); $tagwriter = new getid3_writetags; $tagwriter->filename = getid3_lib::SafeStripSlashes($fmp3); $tagwriter->tagformats = array('id3v1'); $tagwriter->overwrite_tags = true; $tagwriter->tag_encoding = $tag_format; $tagwriter->remove_other_tags = true; $tag_comment = 'Visita www.rockrepublik.net'; $songd['album'] = (!empty($songd['album'])) ? $songd['album'] : 'Single'; $songd['genre'] = (!empty($songd['genre'])) ? $songd['genre'] : 'Rock'; $songd_f = array('title', 'name', 'album', 'genre'); foreach ($songd_f as $songd_r) { $songd[$songd_r] = getid3_lib::SafeStripSlashes(utf8_encode(html_entity_decode($songd[$songd_r]))); } $tagwriter->tag_data = array( 'title' => array($songd['title']), 'artist' => array($songd['name']), 'album' => array($songd['album']), 'year' => array(getid3_lib::SafeStripSlashes($songd['year'])), 'genre' => array($songd['genre']), 'comment' => array(getid3_lib::SafeStripSlashes($tag_comment)), 'tracknumber' => array('') ); $tagwriter->WriteTags(); $sql = 'UPDATE _dl SET dl_mp3 = 1 WHERE id = ' . (int) $songd['id']; $db->sql_query($sql); $fp = @fopen('./conv.txt', 'a+'); fwrite($fp, $fmp3 . "\n"); fclose($fp); } if (!@file_exists('.' . $spaths . $songid . '.wma')) { $sql = 'UPDATE _dl SET dl_mp3 = 2 WHERE id = ' . (int) $songd['id']; $db->sql_query($sql); } } $sql = 'SELECT id FROM _dl WHERE ud = 1 AND dl_mp3 = 0 ORDER BY id LIMIT 1'; if ($v_next = $this->_field($sql, 'id', 0)) { sleep(1); $nucleo->redirect($nucleo->link('conv', array('v' => $v_next))); } else { die('no_next'); } $this->e('.'); return; }
function defaultid3tags($filename, $title) { //takes the uploaded file and changes the id3 tagging global $settings; if ($settings['id3_overwrite'] == 1) { require_once 'inc/id3/getid3.php'; $getID3 = new getID3(); $getID3->encoding = 'UTF-8'; require_once 'inc/id3/write.php'; $tagwriter = new getid3_writetags(); $tagwriter->filename = $filename; $tagwriter->tagformats = array('id3v2.3', 'ape'); $tagwriter->overwrite_tags = true; $tagwriter->remove_other_tags = true; $TagData['title'][] = $title; $TagData['artist'][] = $settings['id3_artist']; $TagData['album'][] = $settings['id3_album']; $TagData['genre'][] = $settings['id3_genre']; $TagData['year'][] = date('Y'); $TagData['comment'][] = $settings['id3_comment']; $tagwriter->tag_data = $TagData; if ($tagwriter->WriteTags()) { } else { echo "<p class=\"msg\">Changing ID3 tags failed. Sorry.</p>"; } } }
die('Due to a security issue, this demo has been disabled. It can be enabled by removing line ' . __LINE__ . ' in ' . $_SERVER['PHP_SELF']); $TaggingFormat = 'UTF-8'; require_once '../getid3/getid3.php'; // Initialize getID3 engine $getID3 = new getID3(); $getID3->setOption(array('encoding' => $TaggingFormat)); require_once '../getid3/write.php'; // Initialize getID3 tag-writing module $tagwriter = new getid3_writetags(); //$tagwriter->filename = '/path/to/file.mp3'; $tagwriter->filename = 'd:/file.mp3'; $tagwriter->filename = 'P:/webroot/_dev/getID3/testfiles/_writing/2011-02-02/test.mp3'; //$tagwriter->tagformats = array('id3v1', 'id3v2.3'); $tagwriter->tagformats = array('id3v2.3'); // set various options (optional) $tagwriter->overwrite_tags = true; $tagwriter->overwrite_tags = false; $tagwriter->tag_encoding = $TaggingFormat; $tagwriter->remove_other_tags = true; // populate data array $TagData = array('title' => array('My Song'), 'artist' => array('The Artist'), 'album' => array('Greatest Hits'), 'year' => array('2004'), 'genre' => array('Rock'), 'comment' => array('excellent!'), 'track' => array('04/16')); $tagwriter->tag_data = $TagData; // write tags if ($tagwriter->WriteTags()) { echo 'Successfully wrote tags<br>'; if (!empty($tagwriter->warnings)) { echo 'There were some warnings:<br>' . implode('<br><br>', $tagwriter->warnings); } } else { echo 'Failed to write tags!<br>' . implode('<br><br>', $tagwriter->errors); }
/** * mime_audio_update_tags will update the tags of a given audio file * * @param array $pFile absolute path to file * @param array $pMetaData Hash of data that should be passed to the file. * @access public * @return NULL on success, String of errors on failure */ function mime_audio_update_tags($pFile, $pMetaData) { $ret = NULL; if (!empty($pFile) && is_file($pFile) && is_array($pMetaData)) { // we need to initiate getID3 for the writer to work require_once UTIL_PKG_PATH . 'getid3/getid3/getid3.php'; $getID3 = new getID3(); require_once UTIL_PKG_PATH . 'getid3/getid3/write.php'; // Initialize getID3 tag-writing module $tagwriter = new getid3_writetags(); $tagwriter->filename = $pFile; $tagwriter->tagformats = array('id3v1', 'id3v2.3'); // set various options $tagwriter->overwrite_tags = TRUE; $tagwriter->tag_encoding = "UTF-8"; // prepare meta data for storing foreach ($pMetaData as $key => $data) { if (!is_array($data)) { $data = array($data); } $write[$key] = $data; } // store the tags if (!empty($write)) { $tagwriter->tag_data = $write; if (!$tagwriter->WriteTags()) { $ret = 'Failed to write tags!<br />' . implode('<br /><br />', $tagwriter->errors); } } } return $ret; }
function SynchronizeAllTags($filename, $synchronizefrom = 'all', $synchronizeto = 'A12', &$errors) { global $getID3; set_time_limit(30); $ThisFileInfo = $getID3->analyze($filename); getid3_lib::CopyTagsToComments($ThisFileInfo); if ($synchronizefrom == 'all') { $SourceArray = !empty($ThisFileInfo['comments']) ? $ThisFileInfo['comments'] : array(); } elseif (!empty($ThisFileInfo['tags'][$synchronizefrom])) { $SourceArray = !empty($ThisFileInfo['tags'][$synchronizefrom]) ? $ThisFileInfo['tags'][$synchronizefrom] : array(); } else { die('ERROR: $ThisFileInfo[tags][' . $synchronizefrom . '] does not exist'); } $SQLquery = 'DELETE FROM `' . mysql_real_escape_string(GETID3_DB_TABLE) . '`'; $SQLquery .= ' WHERE (`filename` = "' . mysql_real_escape_string($filename) . '")'; mysql_query_safe($SQLquery); $TagFormatsToWrite = array(); if (strpos($synchronizeto, '2') !== false && $synchronizefrom != 'id3v2') { $TagFormatsToWrite[] = 'id3v2.3'; } if (strpos($synchronizeto, 'A') !== false && $synchronizefrom != 'ape') { $TagFormatsToWrite[] = 'ape'; } if (strpos($synchronizeto, 'L') !== false && $synchronizefrom != 'lyrics3') { $TagFormatsToWrite[] = 'lyrics3'; } if (strpos($synchronizeto, '1') !== false && $synchronizefrom != 'id3v1') { $TagFormatsToWrite[] = 'id3v1'; } getid3_lib::IncludeDependency(GETID3_INCLUDEPATH . 'write.php', __FILE__, true); $tagwriter = new getid3_writetags(); $tagwriter->filename = $filename; $tagwriter->tagformats = $TagFormatsToWrite; $tagwriter->overwrite_tags = true; $tagwriter->tag_encoding = $getID3->encoding; $tagwriter->tag_data = $SourceArray; if ($tagwriter->WriteTags()) { $errors = $tagwriter->errors; return true; } $errors = $tagwriter->errors; return false; }