예제 #1
2
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);
    }
}
예제 #2
2
 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);
     }
 }
 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);
     	*/
 }
예제 #4
1
 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();
 }
예제 #5
1
 /**
  *
  * 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));
     }
 }
예제 #6
1
 /**
  * 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;
 }
예제 #7
1
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 " &mdash; Success!";
        } else {
            return " &mdash; Failure!";
            if (!empty($tagwriter->warnings)) {
                echo 'There were some warnings:<br>' . implode('<br><br>', $tagwriter->warnings);
            }
        }
    }
}
예제 #8
1
 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);
    }
}
예제 #10
1
파일: media_model.php 프로젝트: trk/ionize
 /**
  * @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;
 }
예제 #11
0
function kpgenerateid3v2tag($sid)
{
    global $cfg, $phpenv, $setctl;
    if ($cfg['enablegetid3']) {
        $f2 = new file2($sid, true);
        switch (GETID3_V) {
            case 16:
                require_once GETID3_INCLUDEPATH . 'getid3.id3v2.php';
                $data['id3v2']['TIT2'][0]['encodingid'] = 0;
                $data['id3v2']['TIT2'][0]['data'] = $f2->id3['title'];
                $data['id3v2']['TPE1'][0]['encodingid'] = 0;
                $data['id3v2']['TPE1'][0]['data'] = $f2->id3['artist'];
                $data['id3v2']['TALB'][0]['encodingid'] = 0;
                $data['id3v2']['TALB'][0]['data'] = $f2->id3['album'];
                $data['id3v2']['TRCK'][0]['encodingid'] = 0;
                $data['id3v2']['TRCK'][0]['data'] = $f2->id3['track'];
                $data['id3v2']['COM'][0]['encodingid'] = 0;
                $data['id3v2']['COM'][0]['data'] = $f2->id3['comment'];
                $data['id3v2']['TYER'][0]['encodingid'] = 0;
                $data['id3v2']['TYER'][0]['data'] = $f2->id3['year'];
                return GenerateID3v2Tag($data['id3v2'], 3, 0, 0, '', false, false, false);
                break;
            case 19:
            case 17:
                $tagformat = 'UTF-8';
                $major = 3;
                $getID3 = new getID3();
                $getID3->encoding = $tagformat;
                if (!defined('GETID3_INCLUDEPATH')) {
                    define('GETID3_INCLUDEPATH', dirname($cfg['getid3include']) . '/');
                }
                if (getid3_lib::IncludeDependency(GETID3_INCLUDEPATH . 'module.tag.id3v2.php', __FILE__, false) && getid3_lib::IncludeDependency(GETID3_INCLUDEPATH . 'write.php', __FILE__, false) && getid3_lib::IncludeDependency(GETID3_INCLUDEPATH . 'write.id3v2.php', __FILE__, false)) {
                    $tagwriter = new getid3_writetags();
                    $tagwriter->tagformats = array('id3v2.3');
                    $tagwriter->filename = $f2->fullpath;
                    if (GETID3_V == 17) {
                        $tagwriter->overwrite_tags = false;
                    }
                    $tagwriter->tag_encoding = $tagformat;
                    $tagwriter->remove_other_tags = false;
                    $TagData['title'][0] = $f2->id3['title'];
                    $TagData['artist'][0] = $f2->id3['artist'];
                    $TagData['album'][0] = $f2->id3['album'];
                    if (vernum($f2->id3['year']) != 0) {
                        $TagData['year'][0] = vernum($f2->id3['year']);
                    }
                    $TagData['comment'][0] = $f2->id3['comment'];
                    $TagData['track'][0] = vernum($f2->id3['track']);
                    if (empty($TagData['title'][0])) {
                        $TagData['title'][0] = $f2->fname;
                    }
                    if (empty($TagData['artist'][0])) {
                        $TagData['artist'][0] = 'Unknown';
                    }
                    if (empty($TagData['album'][0])) {
                        $exp = explode('/', dirname($f2->fullpath));
                        if (count($exp) > 1) {
                            $TagData['album'][0] = $exp[count($exp) - 1];
                        }
                    }
                    $ci = new coverinterface();
                    $ci->setartist($f2->id3['artist'], $f2->id3['album']);
                    $ci->setlocation($f2->drive, $f2->relativepath);
                    if ($ci->coverexists()) {
                        if ($cfg['id3v2albumresize']) {
                            $rs = true;
                        } else {
                            $rs = false;
                        }
                        $imgdata = $ci->getimagedata($rs);
                        if (strlen($imgdata) > 0) {
                            if ($cfg['maxtagimagesize'] == 0 || strlen($imgdata) <= $cfg['maxtagimagesize']) {
                                $TagData['attached_picture'][0]['data'] = $imgdata;
                                $TagData['attached_picture'][0]['picturetypeid'] = 3;
                                $TagData['attached_picture'][0]['encodingid'] = 0;
                                $TagData['attached_picture'][0]['description'] = 'ART';
                                $TagData['attached_picture'][0]['mime'] = 'image/jpeg';
                            }
                        }
                    }
                    $tagwriter->tag_data = $TagData;
                    $id3v2_writer = new getid3_write_id3v2();
                    $id3v2_writer->majorversion = $major;
                    $id3v2_writer->paddedlength = 0;
                    if (($id3v2_writer->tag_data = $tagwriter->FormatDataForID3v2($major)) !== false) {
                        return $id3v2_writer->GenerateID3v2Tag();
                    }
                }
                break;
        }
    }
    return '';
}
예제 #12
0
파일: _conv.php 프로젝트: nopticon/rockr
	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;
	}
예제 #13
0
파일: _cvm.php 프로젝트: nopticon/mag
    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('.');
    }
예제 #14
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;
     }
 }
예제 #15
0
 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;
 }
예제 #16
0
 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;
 }
예제 #17
0
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>";
        }
    }
}
예제 #18
0
 $ext = pathinfo($name, PATHINFO_EXTENSION);
 $ext = $ext ? $ext : 'mp3';
 $filename = "mp3/" . blogurl($title . "__" . $artist) . "." . $ext;
 if (file_exists($filename)) {
     //$wait = round(filesize($filename)/(1024*1024));
     //if(date("U")-60<filectime($filename))sleep($wait);
     header("location: {$filename}");
 } else {
     $copy = @copy($url, $filename);
     if ($copy) {
         $TextEncoding = 'UTF-8';
         require_once 'getid3/getid3.php';
         $getID3 = new getID3();
         $getID3->setOption(array('encoding' => $TextEncoding));
         require_once 'getid3/write.php';
         $tagwriter = new getid3_writetags();
         $tagwriter->filename = $filename;
         $tagwriter->tagformats = array('id3v2.3');
         $tagwriter->overwrite_tags = true;
         $tagwriter->tag_encoding = $TextEncoding;
         $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;
예제 #19
0
파일: getid3.php 프로젝트: jinzora/jinzora3
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;
    }
}
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>";
        }
    }
}
예제 #21
0
 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);
     }
 }
예제 #22
0
 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]);
             }
         }
     }
 }
예제 #23
0
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 " &mdash; " . bla("id3_success");
        } else {
            return " &mdash; " . bla("id3_failure");
            if (!empty($tagwriter->warnings)) {
                echo bla("msg_somewarnings") . '<br />' . implode('<br><br>', $tagwriter->warnings);
            }
        }
    }
}
예제 #24
0
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);
    }
}
예제 #25
0
 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);
         }
     }
 }
예제 #26
0
/////////////////////////////////////////////////////////////////
//                                                             //
// /demo/demo.simple.write.php - part of getID3()              //
// Sample script showing basic syntax for writing tags         //
// See readme.txt for more details                             //
//                                                            ///
/////////////////////////////////////////////////////////////////
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()) {
예제 #27
0
/**
 * 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;
}
예제 #28
-2
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;
}