diff --git a/src/Audio.php b/src/Audio.php index ad50b12..0015c74 100755 --- a/src/Audio.php +++ b/src/Audio.php @@ -389,7 +389,7 @@ public function getLyrics(): ?string * * For example, for `mp3` format: `['id3v1' => [...], 'id3v2' => [...]]`. */ - public function getRawTagsAll(): array + public function getRawAll(): array { return $this->raw_tags_all; } @@ -402,7 +402,7 @@ public function getRawTagsAll(): array * @param string|null $format If not provided, main format will be returned. * @return string[] */ - public function getRawTags(?string $format = null): ?array + public function getRaw(?string $format = null): ?array { if ($format) { return $this->raw_tags_all[$format] ?? null; @@ -427,21 +427,21 @@ public function getRawTags(?string $format = null): ?array * @param string $key Key name. * @param string|null $format If not provided, main format will be used. */ - public function getRawTagsKey(string $key, ?string $format = null): ?string + public function getRawKey(string $key, ?string $format = null): string|int|bool|null { - $tags = $this->getRawTags($format); + $tags = $this->getRaw($format); return $tags[$key] ?? null; } /** - * Get raw tags as array with main format, same as `getRawTags()`. + * Get raw tags as array with main format, same as `getRaw()`. * * @return string[] */ public function getExtras(): array { - return $this->getRawTags(); + return $this->getRaw(); } private function parseTags(?\Kiwilan\Audio\Id3\Id3Reader $id3_reader): self diff --git a/src/Id3/Id3Writer.php b/src/Id3/Id3Writer.php index 5815a4b..b0527db 100644 --- a/src/Id3/Id3Writer.php +++ b/src/Id3/Id3Writer.php @@ -11,7 +11,6 @@ class Id3Writer { /** - * @param array $options * @param array $new_tags * @param string[] $custom_tags * @param string[] $warnings @@ -84,9 +83,9 @@ public function albumArtist(string $album_artist): self return $this; } - public function year(string $year): self + public function year(string|int $year): self { - $this->core->year = $year; + $this->core->year = intval($year); return $this; } @@ -263,7 +262,6 @@ public function save(): bool $this->warnings = $this->writer->warnings; $this->handleErrors(); - ray($this); return $this->success; } @@ -336,10 +334,9 @@ private function assignTags(): self } $this->new_tags = [ - ...$this->audio->getRawTags(), // old tags + ...$this->audio->getRaw(), // old tags ...$convert->toArray(), // new tags ]; - ray($this->new_tags); $this->new_tags = $this->convertTags($this->new_tags); return $this; diff --git a/tests/AudioMp3Test.php b/tests/AudioMp3Test.php index 53e27c6..50b11cf 100644 --- a/tests/AudioMp3Test.php +++ b/tests/AudioMp3Test.php @@ -46,14 +46,14 @@ expect($audio->getLyrics())->toBeNull(); expect($audio->getComment())->toBe('http://www.p1pdd.com'); - expect($audio->getRawTagsAll())->toBeArray(); - expect($audio->getRawTagsAll()['id3v1'])->toBeArray(); - expect($audio->getRawTagsAll()['id3v1'])->toHaveCount(6); - expect($audio->getRawTagsAll()['id3v2'])->toBeArray(); - expect($audio->getRawTagsAll()['id3v2'])->toHaveCount(11); - expect($audio->getRawTags())->toHaveCount(11); - expect($audio->getRawTags('id3v2'))->toHaveCount(11); - expect($audio->getRawTagsKey('title'))->toBe('Introduction'); + expect($audio->getRawAll())->toBeArray(); + expect($audio->getRawAll()['id3v1'])->toBeArray(); + expect($audio->getRawAll()['id3v1'])->toHaveCount(6); + expect($audio->getRawAll()['id3v2'])->toBeArray(); + expect($audio->getRawAll()['id3v2'])->toHaveCount(11); + expect($audio->getRaw())->toHaveCount(11); + expect($audio->getRaw('id3v2'))->toHaveCount(11); + expect($audio->getRawKey('title'))->toBe('Introduction'); expect($audio->getExtras())->toBeArray(); $cover = $audio->getCover(); diff --git a/tests/AudiobookTest.php b/tests/AudiobookTest.php index 998eeb9..51ca8ce 100644 --- a/tests/AudiobookTest.php +++ b/tests/AudiobookTest.php @@ -15,7 +15,7 @@ expect($audiobook->getMetadata())->toBeInstanceOf(AudioMetadata::class); - $raw = $audiobook->getRawTags(); + $raw = $audiobook->getRaw(); expect($raw['title'])->toBe('Assassin’s Apprentice'); expect($raw['artist'])->toBe('Robin Hobb'); expect($raw['album'])->toBe('Assassin’s Apprentice'); @@ -39,7 +39,34 @@ expect($raw['comment'])->toBe('English'); expect($raw['asin'])->toBe('ASIN'); expect($raw['album_artist'])->toBe('Robin Hobb'); - ray($raw); + expect($raw['series-part'])->toBe('1'); + expect($raw['series'])->toBe('The Farseer'); + + expect($audiobook->getRawKey('title'))->toBe('Assassin’s Apprentice'); + expect($audiobook->getRawKey('artist'))->toBe('Robin Hobb'); + expect($audiobook->getRawKey('album'))->toBe('Assassin’s Apprentice'); + expect($audiobook->getRawKey('genre'))->toBe('Animals/Political/Epic/Military'); + expect($audiobook->getRawKey('origyear'))->toBe('2024/09/30'); + expect($audiobook->getRawKey('track_number'))->toBe('1/1'); + expect($audiobook->getRawKey('disc_number'))->toBe('1'); + expect($audiobook->getRawKey('compilation'))->toBe(1); + expect($audiobook->getRawKey('creation_date'))->toBe('2024-9-30T12:00:00Z'); + expect($audiobook->getRawKey('encoding_tool'))->toBe('Audiobook Builder 2.2.9 (www.splasm.com), macOS 15.0'); + expect($audiobook->getRawKey('subtitle'))->toBe('Subtitle'); + expect($audiobook->getRawKey('description_long'))->toBeString(); + expect($audiobook->getRawKey('language'))->toBe('English'); + expect($audiobook->getRawKey('lyrics'))->toBe('The Farseer #01'); + expect($audiobook->getRawKey('stik'))->toBe('Audiobook'); + expect($audiobook->getRawKey('encoded_by'))->toBe('©2012 Robin Hobb (P)2012 HarperCollins Publishers Limited'); + expect($audiobook->getRawKey('description'))->toBeString(); + expect($audiobook->getRawKey('copyright'))->toBe('HarperCollins'); + expect($audiobook->getRawKey('isbn'))->toBe('ISBN'); + expect($audiobook->getRawKey('composer'))->toBe('Paul Boehmer'); + expect($audiobook->getRawKey('comment'))->toBe('English'); + expect($audiobook->getRawKey('asin'))->toBe('ASIN'); + expect($audiobook->getRawKey('album_artist'))->toBe('Robin Hobb'); + expect($audiobook->getRawKey('series-part'))->toBe('1'); + expect($audiobook->getRawKey('series'))->toBe('The Farseer'); expect($audiobook->isWritable())->toBeTrue(); expect($audiobook->isValid())->toBeTrue(); @@ -96,18 +123,18 @@ expect($audio->getDurationHuman())->toBe('00:00:11'); expect($audio->getExtras())->toBeArray(); - expect($audio->getRawTags())->toBeArray(); - expect($audio->getRawTagsKey('title'))->toBe('P1PDD Saison 1'); - expect($audio->getRawTagsKey('artist'))->toBe('Mr Piouf'); - expect($audio->getRawTagsKey('album'))->toBe('P1PDD Saison 1'); - expect($audio->getRawTagsKey('genre'))->toBe('Audiobooks'); - expect($audio->getRawTagsKey('track_number'))->toBe('1/1'); - expect($audio->getRawTagsKey('comment'))->toBe('P1PDD team'); + expect($audio->getRaw())->toBeArray(); + expect($audio->getRawKey('title'))->toBe('P1PDD Saison 1'); + expect($audio->getRawKey('artist'))->toBe('Mr Piouf'); + expect($audio->getRawKey('album'))->toBe('P1PDD Saison 1'); + expect($audio->getRawKey('genre'))->toBe('Audiobooks'); + expect($audio->getRawKey('track_number'))->toBe('1/1'); + expect($audio->getRawKey('comment'))->toBe('P1PDD team'); })->with([AUDIOBOOK]); it('can read audiobook file mp3', function (string $file) { $audio = Audio::get($file); - expect(count($audio->getRawTags()))->toBe(15); - expect(count($audio->getRawTags('id3v2')))->toBe(15); + expect(count($audio->getRaw()))->toBe(15); + expect(count($audio->getRaw('id3v2')))->toBe(15); })->with([AUDIOBOOK_MP3]); diff --git a/tests/WriterTest.php b/tests/WriterTest.php index d78eb9b..a5b3899 100644 --- a/tests/WriterTest.php +++ b/tests/WriterTest.php @@ -22,36 +22,36 @@ ->save(); }); -it('can update tags', function () { - $audio = Audio::get(MP3_WRITER); - testMp3Writer($audio); +// it('can update tags', function () { +// $audio = Audio::get(MP3_WRITER); +// testMp3Writer($audio); - $audio->update() - ->title('New Title') - ->artist('New Artist') - ->album('New Album') - ->genre('New Genre') - ->year(2022) - ->trackNumber('2/10') - ->albumArtist('New Album Artist') - ->comment('New Comment') - ->composer('New Composer') - ->discNumber('2/2') - ->isNotCompilation() - ->lyrics('New Lyrics') - ->creationDate('2021-01-01') - ->copyright('New Copyright') - ->encodingBy('New Encoding By') - ->encoding('New Encoding') - ->description('New Description') - ->synopsis('New Synopsis') - ->language('en') - ->failOnErrors() - ->save(); +// $audio->update() +// ->title('New Title') +// ->artist('New Artist') +// ->album('New Album') +// ->genre('New Genre') +// ->year(2022) +// ->trackNumber('2/10') +// ->albumArtist('New Album Artist') +// ->comment('New Comment') +// ->composer('New Composer') +// ->discNumber('2/2') +// ->isNotCompilation() +// ->lyrics('New Lyrics') +// ->creationDate('2021-01-01') +// ->copyright('New Copyright') +// ->encodingBy('New Encoding By') +// ->encoding('New Encoding') +// ->description('New Description') +// ->synopsis('New Synopsis') +// ->language('en') +// ->failOnErrors() +// ->save(); - $audio = Audio::get(MP3_WRITER); - testMp3Writed($audio); -}); +// $audio = Audio::get(MP3_WRITER); +// testMp3Writed($audio); +// }); // it('can update tags manually', function () { // $audio = Audio::get(MP3_WRITER);