pyrex-fwi / sapar-id3
The package lays the basis for the simple manipulation of ID3 tags.You can define readers and writers to manipulate the metadata in read or write.
v5.1.4
2020-05-17 18:11 UTC
Requires
- php: ^7.3
- pyrex-fwi/core-contracts: ^5.1.4
- symfony/console: 4.* || 5.*
- symfony/process: 4.* || 5.*
- symfony/stopwatch: 4.* || 5.*
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- phpmetrics/phpmetrics: ^2.6
- phpro/grumphp: ^0.18
- phpunit/phpunit: ^9.1
- symfony/var-dumper: ^4.3 | ^5.1
README
Phpunit code coverage Phpmetrics
Supported id3 bin
The package lays the basis for the simple ID3 tags manipulation.
You can define readers and writers to manipulate the metadata in read or write.
Mediainfo (>= 17.0) | EyeD3 (>= 0.8) | metaflac (>= 1.3.0) | ffprobe (>= 2.8.14) | exiftool () | lltag () | id3info () | id3tool () | mp3info () | |
---|---|---|---|---|---|---|---|---|---|
Mp3 read | ✓ | ✓ | no | ✓ | |||||
Mp3 read comments | ✓ | ✓ | - | no | |||||
Mp3 write | no | ✓ | no | ✓ | |||||
Mp4 read | ✓ | - | - | - | |||||
Mp4 write | - | - | - | - | |||||
Flac read | ✓ | - | - | - | |||||
Flac write | no | no | - | - | |||||
Output XML | ✓ | no | - | ✓ | |||||
Output JSON | ✓ | no | - | ✓ |
- '✓', 'no', 'yes' = Tested
- '-' = not tested
Speed benchmark
Bin readers | 100 iterations | 500 iterations |
---|---|---|
[metaflac] | 2.249s | 11.73s |
[Mediainfo] | 5.362s | 27.19s |
[ffprobe] | 9.716s | 48.43s |
[EyeD3] | 13.052s | 65.423s |
Usages
Read Id3 Tags
<?php
class MyClass
{
public function readId3()
{
$mp3OrFlacFile = '/path/to/file';
/** @var Sapar\Id3\Metadata\Id3MetadataInterface */
$id3Metadata = new Sapar\Metadata\Id3Metadata($mp3OrFlacFile);
/** @var Sapar\Wrapper\BinWrapper\BinWrapperInterface */
$mediaInfoWrapper = new Sapar\Wrapper\BinWrapper\MediainfoWrapper();
$mediaInfoWrapper->setBin('/usr/local/bin/mediainfo');
if ($mediaInfoWrapper->read($metaDataFile)) {
$metaDataFile->getTitle();
$metaDataFile->getArtist();
$metaDataFile->getAlbum();
$metaDataFile->getGenre();
$metaDataFile->getYear();
$metaDataFile->getBpm();
$metaDataFile->getTimeDuration();
}
}
}
Write Id3 Tags
<?php
class MyClass
{
public function writeId3()
{
$mp3OrFlacFile = '/path/to/file';
/** @var Sapar\Id3\Metadata\Id3MetadataInterface */
$id3Metadata = new Sapar\Metadata\Id3Metadata($mp3OrFlacFile);
$id3Metadata->setAlbum('album');
$id3Metadata->setTitle('title');
$id3Metadata->setGenre('genre');
$id3Metadata->setYear(2016);
$id3Metadata->setComment('comment');
$id3Metadata->setBpm(120);
/** @var Sapar\Wrapper\BinWrapper\BinWrapperInterface */
$id3v2wrapper = new Sapar\Wrapper\BinWrapper\Id3v2Wrapper();
$id3v2wrapper->setBin('/usr/local/bin/id3v2');
if ($mediaInfoReader->write($metaDataFile)) {
//it's done!
}
}
Create custom Wrapper
<?php
class MyClass
{
}