Skip to content

Commit f98434e

Browse files
Merge pull request #20 from kiwilan/develop
v3.0.04
2 parents a3fffec + c375214 commit f98434e

File tree

8 files changed

+40
-5
lines changed

8 files changed

+40
-5
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ $audio->getCover()->getHeight(); // `?int` in pixels
338338
| MKV || Matroska | `matroska` | _Cover not supported_ |
339339
| APE || Monkey's Audio | | |
340340
| MP3 || MPEG audio layer 3 | `id3v2`,`id3v1` | |
341-
| MP4 || Digital multimedia container format | `quicktime` | |
341+
| MP4 || Digital multimedia container format | `quicktime` | _Partially supported_ |
342342
| M4A || mpeg-4 audio | `quicktime` | |
343343
| M4B || Audiobook | `quicktime` | |
344344
| M4V || mpeg-4 video | `quicktime` | |

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "kiwilan/php-audio",
33
"description": "PHP package to parse and update audio files metadata, with `JamesHeinrich/getID3`.",
4-
"version": "3.0.03",
4+
"version": "3.0.04",
55
"keywords": [
66
"audio",
77
"php",

src/Models/AudioCore.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -421,13 +421,21 @@ public static function toAsf(AudioCore $core): Id3TagAsf
421421
);
422422
}
423423

424-
public static function fromId3(?Id3AudioTagV1 $v1, Id3AudioTagV2 $v2): AudioCore
424+
public static function fromId3(?Id3AudioTagV1 $v1, ?Id3AudioTagV2 $v2): AudioCore
425425
{
426+
if (! $v1) {
427+
$v1 = new Id3AudioTagV1();
428+
}
429+
430+
if (! $v2) {
431+
$v2 = new Id3AudioTagV2();
432+
}
433+
426434
return new AudioCore(
427435
album: $v2->album() ?? $v1->album(),
428436
artist: $v2->artist() ?? $v1->artist(),
429437
albumArtist: $v2->band() ?? null,
430-
comment: $v2 ? $v2->comment() : $v1->comment(),
438+
comment: $v2->comment() ?? $v1->comment(),
431439
composer: $v2->composer() ?? null,
432440
discNumber: $v2->part_of_a_set() ?? null,
433441
genre: $v2->genre() ?? $v1->genre(),

tests/AudioTest.php

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
expect($metadata->getPath())->toBeString();
3434
expect($metadata->getFilesize())->toBeInt();
3535
expect($metadata->getExtension())->toBeString();
36-
// expect($metadata->getDataformat())->toBeString();
3736
expect($metadata->getEncoding())->toBeString();
3837
expect($metadata->getMimeType())->toBeString();
3938
if ($metadata->getDurationSeconds()) {
@@ -136,3 +135,23 @@
136135

137136
expect($audio->isValid())->toBeFalse();
138137
});
138+
139+
it('can read file id3v1', function (string $path) {
140+
$audio = Audio::get($path);
141+
$extension = pathinfo($path, PATHINFO_EXTENSION);
142+
$format = AudioFormatEnum::tryFrom($extension);
143+
144+
expect($audio->getTitle())->toBeString();
145+
expect($audio->getArtist())->toBeString();
146+
expect($audio->getAlbum())->toBeString();
147+
expect($audio->getTrackNumber())->toBeString();
148+
expect($audio->getAlbumArtist())->toBeString();
149+
expect($audio->getComposer())->toBeNull();
150+
151+
expect($audio->getgetExtension())->toBe($extension);
152+
expect($audio->getFormat())->toBe($format);
153+
expect($audio->getDuration())->toBeFloat();
154+
expect($audio->getExtras())->toBeArray();
155+
156+
expect($audio)->toBeInstanceOf(Audio::class);
157+
})->with([...AUDIO_ID3_V1]);

tests/Pest.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ function addWriterFilesForTests()
6363
define('MKA', __DIR__.'/media/test.mka');
6464
define('MKV', __DIR__.'/media/test.mkv');
6565
define('MP3', __DIR__.'/media/test.mp3');
66+
define('MP3_ID3_V1_1', __DIR__.'/media/id3-test-1.mp3');
67+
define('MP3_ID3_V1_2', __DIR__.'/media/id3-test-2.mp3');
6668
define('MP4', __DIR__.'/media/test.mp4');
6769
define('OGG', __DIR__.'/media/test.ogg');
6870
define('OPUS', __DIR__.'/media/test.opus');
@@ -96,6 +98,11 @@ function addWriterFilesForTests()
9698
WV,
9799
]);
98100

101+
define('AUDIO_ID3_V1', [
102+
MP3_ID3_V1_1,
103+
MP3_ID3_V1_2,
104+
]);
105+
99106
define('AUDIO_WRITER', [
100107
// ALAC_WRITER,
101108
// AIF_WRITER,

tests/media/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
test-writer-alac.*
22
test-writer-no-meta.*
33
test-writer.*
4+
id3-test-writer*

tests/media/id3-test-1.mp3

266 KB
Binary file not shown.

tests/media/id3-test-2.mp3

266 KB
Binary file not shown.

0 commit comments

Comments
 (0)