Uwe Klotz
f57fc40acf
ID3v2: Modify and comment misleading test assertion
2023-03-13 11:00:12 -04:00
Uwe Klotz
89e5b3107c
ID3v2: Add support for MusicBrainzRecordingId
2023-03-13 11:00:12 -04:00
Uwe Klotz
c01832ceb4
Manually reformat gen_map!() code
2023-03-11 17:01:43 -05:00
Uwe Klotz
c245863cfc
Add support for selected MusicBrainz identifiers
2023-03-11 17:01:43 -05:00
Serial
a0323dfb20
TaggedFileExt: Add default impls
2023-03-10 17:59:44 -05:00
Serial
71f9f3338c
properties: Move ChannelMask to properties module
2023-03-10 17:55:09 -05:00
Uwe Klotz
6754809b00
Separate SplitAndMergeTag into SplitTag/MergeTag traits
...
Pevent any unexpected or undefined behavior at runtime by applying the
typestate pattern.
2023-02-28 09:57:12 -05:00
Uwe Klotz
3acf047bca
FileProperties: Add getter for channel mask
2023-02-28 09:05:52 -05:00
Uwe Klotz
c1c441afb1
Expose channel mask in file properties
...
Currently only supported by WAV files.
2023-02-28 09:05:52 -05:00
Uwe Klotz
31c30389cb
Allow clippy::let_underscore_untyped
2023-02-28 08:50:57 -05:00
Uwe Klotz
b8c972f60c
ID3v2: Simplify parsing of number/total pairs
2023-02-28 08:43:56 -05:00
Keita Kita
928bfdf482
ID3v2: Except invalid number pair while parsing ID3v2Tag
2023-02-28 08:43:56 -05:00
Keita Kita
94f8aac840
ID3v2: Change default number from 1 to 0 for track and disk
2023-02-28 08:43:56 -05:00
Keita Kita
32ddd3b65e
ID3v2: Merge number pair of track and disk while saving tag
2023-02-28 08:43:56 -05:00
Keita Kita
33deeebb9d
ID3v2: Merge number pair of track and disk from Tag
2023-02-28 08:43:56 -05:00
Keita Kita
93c28ff993
ID3v2: Merge number pair of disk in Accessor
2023-02-28 08:43:56 -05:00
Keita Kita
88107e2dcf
ID3v2: Merge number pair of track in Accessor
2023-02-28 08:43:56 -05:00
Uwe Klotz
caa278cfb0
Vorbis: Add mapping for InitialKey
2023-02-28 08:15:03 -05:00
Serial
ee94fdb1f6
OGG: Verify opus-tools is available before running test
2023-02-19 20:10:11 -05:00
Uwe Klotz
eb79e811a6
id3v2: Implement SplitAndMergeTag::merge_tag() consistently
2023-02-19 19:48:47 -05:00
Uwe Klotz
ca898172c2
id3v2: Fix set_comment()
...
Only keep a single comment frame to avoid unexpected behavior.
2023-02-19 19:48:47 -05:00
Uwe Klotz
15f81bb48b
id3v2: Use set_comment() instead of inserting a frame manually
2023-02-19 19:48:47 -05:00
Uwe Klotz
206ffd2e0b
id3v2: Avoid ItemKey -> FrameID conversion
2023-02-19 19:48:47 -05:00
Uwe Klotz
3f751f3c38
id3v2/mp4/ogg: Add tests for multi-valued item conversion
2023-02-19 19:48:47 -05:00
Serial
e14c62bf75
misc: Remove cfg-if dependency
2023-02-15 00:22:01 -05:00
Serial
149229fd2b
ID3v2: Remove unnecessary clone in FrameRef
creation
2023-02-11 13:32:08 -05:00
Serial
1d2dbb6b35
ID3v2: Fix conversion of user defined frames when using Tag
writing interface
...
fixes #140
2023-02-11 13:32:08 -05:00
Uwe Klotz
0a77f479ae
More robust year parsing without allocations
...
Signed-off-by: Uwe Klotz <uwe.klotz@gmail.com>
2023-02-11 01:38:25 -05:00
Uwe Klotz
77ed8facbc
id3v2: Avoid allocation of FrameID
2023-01-30 17:57:46 -05:00
Uwe Klotz
eb648f4f0d
Remove special case handling of empty string values
2023-01-30 17:57:31 -05:00
Serial
e79aa0846a
Clippy: Fix needless_pass_by_value
2023-01-21 11:24:09 -05:00
Serial
ec4e66fcbe
OGG: Add a test for #130
2023-01-21 11:24:09 -05:00
Serial
87686ace5e
OGG: Fix find_last_page
2023-01-21 11:24:09 -05:00
Serial
d1beb78a97
ogg_pager: Store segment table in PageHeader
2023-01-21 11:24:09 -05:00
Serial
54cd6ca49a
OGG: Increment audio packet page sequence numbers when writing
2023-01-21 11:24:09 -05:00
Serial
b4f22e9a5d
OGG: Read appropriate number of header packets
2023-01-21 11:24:09 -05:00
Serial
a201ab33f7
APE/ID3v1: Remove items in setters when given empty value
2023-01-20 21:17:26 -05:00
Uwe Klotz
533cd7dcff
Renaming: rejoin
-> merge
2023-01-20 08:34:33 -05:00
Uwe Klotz
2132d0171e
SplitAndRejoin: Add a read/modify/write usage example
2023-01-20 08:34:33 -05:00
Uwe Klotz
2b562c4a4b
Split and rejoin tags for read/modify/write round trips
2023-01-20 08:34:33 -05:00
Uwe Klotz
19fe23cbeb
id3v2: Change const fn
into const
2023-01-15 11:36:16 -05:00
Uwe Klotz
b2250df119
id3v2: Replace literals with named constants
2023-01-15 11:36:16 -05:00
Uwe Klotz
7d1aab461b
id3v2: Filter text frames by empty content descriptor
2023-01-15 11:36:16 -05:00
Uwe Klotz
4ea22ff44b
id3v2: Distinguish COMM frames by content descriptor
...
Plain comments are supposed to have an empty description aka content
descriptor. Only those must appear as ItemKey::Comment.
2023-01-15 11:36:16 -05:00
Uwe Klotz
07606159ec
ogg: Add a consuming iterator over all items
2023-01-15 11:35:09 -05:00
Uwe Klotz
751f5ca06f
Add conversions between borrowed/owned data
2023-01-15 11:34:46 -05:00
Uwe Klotz
cff5d8fc6b
id3v2: Retain frames by predicate
2023-01-15 11:34:29 -05:00
Serial
a769297545
RIFF: Return removed item from RIFFInfoList::remove
2023-01-14 20:31:09 -05:00
Serial
0c7ea31817
RIFF: Support year Accessor
methods in RIFFInfoList
2023-01-14 20:27:10 -05:00
Uwe Klotz
06b3b6dbaf
mp4: More robust parsing and updated mapping of rtng
atom
2023-01-14 20:05:25 -05:00
Uwe Klotz
100b7e21b1
Let Tag::items() return an iterator
2023-01-14 11:45:06 -05:00
Uwe Klotz
31894bedfc
Remove IntoIterator impls for Tag due to items/pictures ambiguity
2023-01-14 11:45:06 -05:00
Uwe Klotz
76cddb7719
Add Clone bounds to impl Iterator results
2023-01-14 11:45:06 -05:00
Uwe Klotz
3df98aff12
Add more IntoIterator implementations
2023-01-14 11:45:06 -05:00
Uwe Klotz
0616da11fb
Fix and complete work/movement support
2023-01-14 11:41:37 -05:00
Uwe Klotz
d08d76616e
id3v2: Handle three-letter language codes consistently
2023-01-14 11:40:18 -05:00
Uwe Klotz
1f3c49e6ac
id3v2: Use is_ascii_alphabetic() instead of lowercase + uppercase
2023-01-14 11:40:18 -05:00
Serial
4f31729ae8
ID3v2: Allow uppercase languages in LanguageFrame
2023-01-13 11:52:16 -05:00
Serial
af5154b7fb
TagExt: Add TagExt::len
2023-01-11 21:13:50 -05:00
Uwe Klotz
90a7683322
Fix base64 deprecation warnings
2023-01-11 18:07:21 -05:00
Uwe Klotz
7ca8a72ba3
Disambiguate ID3v2 TIT1/GRP1
2023-01-11 08:46:31 -05:00
Uwe Klotz
da27ed75f5
Use new naming convention for AppleXid
2023-01-11 08:37:21 -05:00
Uwe Klotz
bdf1547afb
mp4: Implement IntoIterator for Ilst
...
This is needed for merging tags.
2023-01-11 08:35:19 -05:00
Uwe Klotz
ad3f447bf4
mp4: Write integer bpm
2023-01-10 20:07:51 -05:00
Uwe Klotz
dca773401d
Use #[must_use] pub const fn new(...)
whenever possible
2023-01-10 20:06:05 -05:00
Uwe Klotz
f73783aa8a
id3v2: Use "XXX" if the actual language is unknown
2023-01-09 18:19:53 -05:00
Serial
fd1f9f62a0
FLAC: Store pictures separately from the VorbisComments
tag
2023-01-08 21:26:50 -05:00
Serial
53050039a5
FLAC: Add FlacProperties
2023-01-08 17:16:26 -05:00
Serial
a6b114b2e4
Tags: Improve handling of Year
tag
2023-01-08 16:14:37 -05:00
Uwe Klotz
53eb2184b8
id3v2: Do not require clients to use Cow in public API
2023-01-07 12:56:50 -05:00
Uwe Klotz
738d47fd4f
Reduce memory allocations for id3v2::FrameID
2023-01-07 12:56:50 -05:00
Serial
42908415b4
OGG: Stop using no_audiofile_impl
for LoftyFile
derives
2023-01-07 00:10:53 -05:00
Serial
4d792bb480
AudioFile: Add AudioFile::save_to{_path}
2023-01-07 00:10:53 -05:00
Uwe Klotz
0f480a26c5
mp4: Map FlagCompilation to text "0"/"1"
...
This is consistent with other tag types.
2023-01-06 22:05:06 -05:00
Uwe Klotz
cf5f29af2f
mp4: Use constant for advisory rating ident
2023-01-06 22:05:06 -05:00
Serial
366d6eb716
ItemKey: Add ItemKey::Color
2023-01-05 14:49:09 -05:00
Uwe Klotz
b265252dbd
Add Director item
2023-01-05 14:13:23 -05:00
Uwe Klotz
5858a90112
mp4: Add new item key AppleXID
2023-01-05 13:58:01 -05:00
Serial
823f931d31
Misc: Remove id3v2{_restrictions}
features
2023-01-05 00:43:04 -05:00
Serial
39c338e15b
Misc: Remove riff_info_list
feature
2023-01-05 00:43:04 -05:00
Serial
f9b97342d0
Misc: Remove aiff_text_chunks
feature
2023-01-05 00:43:04 -05:00
Serial
c62981fc81
Misc: Remove ape
feature
2023-01-05 00:43:04 -05:00
Serial
75d683a7bf
Misc: Remove id3v1
feature
2023-01-05 00:43:04 -05:00
Serial
2fc30f3b5a
Misc: Remove mp4_ilst
feature
2023-01-05 00:43:04 -05:00
Serial
4e87434cf2
Misc: Remove vorbis_comments
feature
2023-01-05 00:43:04 -05:00
Serial
75bcd6fac3
Docs: Remove mention of format features
2023-01-05 00:43:04 -05:00
Serial
e2253ff754
MP4: Implement TryFrom<ItemKey>
for AtomIdent
2023-01-05 00:42:44 -05:00
Serial
47278e4ead
ItemKey: Fix formatting in gen_map!
s
2023-01-04 23:19:05 -05:00
Uwe Klotz
d1bc6d436b
Allow to create AtomIdent constants with 'static lifetime
2023-01-04 23:14:38 -05:00
Uwe Klotz
5ef093539e
vorbis: Add MIXARTIST as variant for Remixer (DJ applications)
2023-01-04 13:15:29 -05:00
Uwe Klotz
d2d95d86ab
vorbis: Add Label variant as recommended by MusicBrainz
2023-01-04 13:15:29 -05:00
Uwe Klotz
1abce01cf8
vorbis: Add common EncodedBy variants
...
MusicBrainz recommends "ENCODEDBY"
2023-01-04 13:15:29 -05:00
Uwe Klotz
25e36637bf
mp4: Add replay gain items
2023-01-04 13:15:15 -05:00
Uwe Klotz
69cad746bb
mp4: Add InitialKey item
2023-01-04 13:15:15 -05:00
Uwe Klotz
6e79bd3b3a
mp4: Add support for precise (non-integer) BPM values
2023-01-04 13:15:15 -05:00
Serial
16a2419351
ID3v2: Support duplicate tags
...
Previously, if we were reading a file and encountered an ID3v2 tag after having already read one, we would overwrite the last one, losing all of its information. Now we preserve all of the information, overwriting frames as necessary.
2022-12-27 15:24:32 -05:00
Serial
939f3f2f0d
Clippy: Fix manual_is_ascii_check
2022-12-27 13:41:53 -05:00
Serial
ecdb7ff878
MP4: Stop validating flags for gnre
atom upgrade
2022-12-16 12:24:51 -05:00
Serial
4de9239af9
Clippy: Fix single_match
2022-12-12 14:00:26 -05:00
Serial
4c5538bba0
Accessor: Make text getters return Cow<str>
to allow for editing
...
This is an unfortunate compromise that needed to be made to make it possible to change the null separators in ID3v2.4 to slashes prior to returning the value.
2022-12-12 14:00:26 -05:00