更改 MP3 文件的 ID3 标签
Changing a MP3 files ID3 tags
我最近发现了一个允许您上传文件并更改其 ID3 标签的网站(图片、标题、所有其他东西),目前我将文件从另一个网站解析后存储在一个目录中,然后再将它们推送到外部。
我想知道是否有人知道我可以阅读如何在 PHP 中更改默认 ID3 标签的库?这是 PHP 中已有的功能吗?
if( writeTags($row['title'],$new) ) {
$fileName = rand(000000000,999999999).'_'.rand(0000000000,9999999999).'_'.rand(000000000,999999999).'.mp3';
$imageName = rand(000000000,999999999).'_'.rand(0000000000,9999999999).'_'.rand(000000000,999999999).'.jpg';
rename($new, $DPATH.'uploads/tracks/'.$fileName);
save_image($row['image'],$DPATH.'uploads/media/'.$imageName);
$track['uid'] = 151;
$track['title'] = $row['title'];
$track['description'] = '';
# fileName
$track['name'] = $fileName;
# make tag
$track['tag'] = $tag.',';
# download image
$track['art'] = $imageName;
# today date
$track['release'] = date("Y-m-d");
$track['size'] = filesize($DPATH.'uploads/tracks/'.$fileName);
$row['slippery_id'] = add_to_slippery($track);
}
function writeTags($title,$file) {
$TextEncoding = 'UTF-8';
require_once($DPATH.'cron/getid3/getid3.php');
$getID3 = new getID3;
$getID3->setOption(array('encoding'=>$TextEncoding));
require_once($DPATH.'cron/getid3/write.php');
$tagwriter = new getid3_writetags;
$tagwriter->filename = $file;
$tagwriter->tagformats = array('id3v1','id3v2.3');
$tagwriter->overwrite_tags = true;
$tagwriter->tag_encoding = $TextEncoding;
$tagwriter->remove_other_tags = true;
$TagData = array(
'album' => array($MP3TAG),
'comment' => array($MP3TAG),
);
$fd = fopen($DPATH.'cron/mp3image.png', 'rb');
$APICdata = fread($fd, filesize($DPATH.'cron/mp3image.png'));
fclose($fd);
$TagData['attached_picture'][0]['data'] = $APICdata;
$TagData['attached_picture'][0]['picturetypeid'] = 2;
$TagData['attached_picture'][0]['description'] = $MP3TAG;
$TagData['attached_picture'][0]['mime'] = 'image/jpeg';
$tagwriter->tag_data = $TagData;
if ($tagwriter->WriteTags()) {
return true;
} else {
return false;
}
}
我最近做了类似的事情,你可以编辑上面的代码来满足你的要求,如果你想让我更有帮助,你应该在你的问题中提供你自己的代码。
请注意,问这样的问题通常会导致您的问题被关闭,祝您未来好运,希望这对您有所帮助。
编辑:使用此 GitHub 获取 ID3 标签。
我最近为 eyeD3 制作了一个 PHP 包装器,这是一个很棒的 python 模块,用于读取和更新 ID3 元数据。检查一下 here。
如果您熟悉 Composer,使用起来非常简单。但是,您需要 install eyed3 才能使用它。那么:
使用 composer 安装 php 包装器:
composer require stormiix/php-eyed3 dev-master
将库添加到您的代码中:
require __DIR__ . '/vendor/autoload.php';
使用以下代码读取和更新标签。
use Stormiix\EyeD3\EyeD3;
$eyed3 = new EyeD3("mp3 file path");
$tags = $eyed3->readMeta();
// $tags is an array that contains the following keys:
// artist, title, album, comment(s), lyrics ..etc
$meta = [
"artist" => "MyArtist",
"title" => "MyTitle",
"album" => "MyAlbum",
"comment" => "MyComment",
"lyrics" => "MyLyrics",
"album_art" => "cover.png"
];
// Update the mp3 file with the new meta tags
$eyed3->updateMeta($meta);
我最近发现了一个允许您上传文件并更改其 ID3 标签的网站(图片、标题、所有其他东西),目前我将文件从另一个网站解析后存储在一个目录中,然后再将它们推送到外部。
我想知道是否有人知道我可以阅读如何在 PHP 中更改默认 ID3 标签的库?这是 PHP 中已有的功能吗?
if( writeTags($row['title'],$new) ) {
$fileName = rand(000000000,999999999).'_'.rand(0000000000,9999999999).'_'.rand(000000000,999999999).'.mp3';
$imageName = rand(000000000,999999999).'_'.rand(0000000000,9999999999).'_'.rand(000000000,999999999).'.jpg';
rename($new, $DPATH.'uploads/tracks/'.$fileName);
save_image($row['image'],$DPATH.'uploads/media/'.$imageName);
$track['uid'] = 151;
$track['title'] = $row['title'];
$track['description'] = '';
# fileName
$track['name'] = $fileName;
# make tag
$track['tag'] = $tag.',';
# download image
$track['art'] = $imageName;
# today date
$track['release'] = date("Y-m-d");
$track['size'] = filesize($DPATH.'uploads/tracks/'.$fileName);
$row['slippery_id'] = add_to_slippery($track);
}
function writeTags($title,$file) {
$TextEncoding = 'UTF-8';
require_once($DPATH.'cron/getid3/getid3.php');
$getID3 = new getID3;
$getID3->setOption(array('encoding'=>$TextEncoding));
require_once($DPATH.'cron/getid3/write.php');
$tagwriter = new getid3_writetags;
$tagwriter->filename = $file;
$tagwriter->tagformats = array('id3v1','id3v2.3');
$tagwriter->overwrite_tags = true;
$tagwriter->tag_encoding = $TextEncoding;
$tagwriter->remove_other_tags = true;
$TagData = array(
'album' => array($MP3TAG),
'comment' => array($MP3TAG),
);
$fd = fopen($DPATH.'cron/mp3image.png', 'rb');
$APICdata = fread($fd, filesize($DPATH.'cron/mp3image.png'));
fclose($fd);
$TagData['attached_picture'][0]['data'] = $APICdata;
$TagData['attached_picture'][0]['picturetypeid'] = 2;
$TagData['attached_picture'][0]['description'] = $MP3TAG;
$TagData['attached_picture'][0]['mime'] = 'image/jpeg';
$tagwriter->tag_data = $TagData;
if ($tagwriter->WriteTags()) {
return true;
} else {
return false;
}
}
我最近做了类似的事情,你可以编辑上面的代码来满足你的要求,如果你想让我更有帮助,你应该在你的问题中提供你自己的代码。
请注意,问这样的问题通常会导致您的问题被关闭,祝您未来好运,希望这对您有所帮助。
编辑:使用此 GitHub 获取 ID3 标签。
我最近为 eyeD3 制作了一个 PHP 包装器,这是一个很棒的 python 模块,用于读取和更新 ID3 元数据。检查一下 here。
如果您熟悉 Composer,使用起来非常简单。但是,您需要 install eyed3 才能使用它。那么:
使用 composer 安装 php 包装器:
composer require stormiix/php-eyed3 dev-master
将库添加到您的代码中:
require __DIR__ . '/vendor/autoload.php';
使用以下代码读取和更新标签。
use Stormiix\EyeD3\EyeD3; $eyed3 = new EyeD3("mp3 file path"); $tags = $eyed3->readMeta(); // $tags is an array that contains the following keys: // artist, title, album, comment(s), lyrics ..etc $meta = [ "artist" => "MyArtist", "title" => "MyTitle", "album" => "MyAlbum", "comment" => "MyComment", "lyrics" => "MyLyrics", "album_art" => "cover.png" ]; // Update the mp3 file with the new meta tags $eyed3->updateMeta($meta);