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
Serial
d971615952
ID3v2: Properly handle solidus character (U+002F) in text frames
...
V2 and V3 allow for the separation of multiple values with the solidus (/) character, while in V4 the separator is null (0). This was not accounted for previously, and would break valid V4 strings ("Foo / Bar" would be split into "Foo " and " Bar").
closes #82
2022-12-12 14:00:26 -05:00
Serial
21a4996226
Clippy: Fix unnecessary_lazy_evaluations
2022-12-10 12:27:27 -05:00
Serial
6df1a462b9
Misc: Switch enum Default
impls to derives
2022-12-10 12:25:20 -05:00
Serial
42761e6bad
TaggedFile: Add temporary fix for save_to
breakage due to tag order
...
Depending on the order of the tags in a `TaggedFile`, since we write the tags independently of each other, they could step on each other's toes and leave the file in position where it cannot be probed. This wouldn't break the file, nor cause partial writes of tags, however there is a chance not *all* of the tags stored in the `TaggedFile` would be written.
2022-12-10 12:18:34 -05:00
Serial
c5bddba0cf
file: Add BoundTaggedFile
...
closes #73
2022-12-10 12:18:34 -05:00
Serial
7573f60a0c
TaggedFile: Split methods out into TaggedFileExt
trait
2022-12-10 12:18:34 -05:00
Serial
81e52ce347
lofty_attr: Expose LoftyFile
derive through main crate
2022-12-10 10:54:58 -05:00
Serial
ce4e2b1715
ogg_pager: Document Packets::{paginate, write_to}
2022-12-07 01:01:12 -05:00
Serial
56e1ec6b02
OGG: Remove unused code
2022-12-07 01:01:12 -05:00
Serial
62c2b72ad3
OGG: Only read necessary number of packets for format
2022-12-07 01:01:12 -05:00
Serial
2cc96f618b
OGG/Opus: Fix property reading
2022-12-07 01:01:12 -05:00
Serial
365b5c1ce3
Vorbis Comments: Fix vorbis_comments_re_read
test
2022-12-07 01:01:12 -05:00
Serial
4256bb254b
OGG: Make use of packets when writing
2022-12-07 01:01:12 -05:00
Serial
1a866c0c32
Clippy: Apply new nightly lints
2022-11-24 15:12:56 -05:00
Serial
8051fafbc8
OGG: Read entire packets instead of pages
...
This makes the handling of OGG files a lot more spec-compliant, and simpler overall.
2022-11-24 14:24:57 -05:00
Serial
a08088ddf8
FileResolver: Fix link to Probe
in docs
2022-11-24 14:24:57 -05:00
Serial
742eaa680f
Ilst: Add AtomData::Bool
for flag atoms
2022-11-09 14:14:17 -05:00
Serial
e4c0ea5579
TaggedFile: Rename take
method to remove
2022-11-09 14:12:30 -05:00
Serial
544aa7a411
TagExt: Add TagExt::contains
2022-11-05 09:54:37 -04:00
Serial
4515bf3ae2
AACProperties: Specify possible MpegVersion
variants
2022-10-28 22:18:29 -04:00
Serial
ec20ea7681
ItemKey: Fix wrong Comment
key in AIFF_TEXT_MAP
2022-10-20 23:29:00 -04:00
Serial
a50bfe911f
ItemKey: Use spaces for alignment in gen_map!
2022-10-20 23:26:46 -04:00
Serial
0039c86182
docs: Make a slightly better comment for *Properties::duration
2022-10-15 10:27:21 -04:00
Serial
c675a5eb05
docs: Stop putting doc comments below attributes
2022-10-15 10:23:35 -04:00
Serial
e579aff672
TaggedFile: Unignore some doc tests
2022-10-15 10:14:41 -04:00
hummuseater44
6415c7e67c
Fixed Capitalization On AtomData::UTF16
( #72 )
2022-10-14 22:02:39 -04:00
Ben Atkinson
49623cb570
ID3v2: populate popularimeter tag from frame value ( #64 )
...
Co-authored-by: Serial <69764315+Serial-ATA@users.noreply.github.com>
2022-10-14 09:23:33 -04:00
Alex
02f1314005
Add support for AAC ( #71 )
2022-10-14 09:06:27 -04:00
Serial
78723a7dd0
lofty_attr: Make it even harder to bypass the internal write module check
2022-10-14 08:22:53 -04:00
Serial
afe78368c2
iff: Separate wav
and aiff
into their own modules
2022-10-14 08:08:12 -04:00
Serial
b2da52196a
ID3v2: Export TextEncoding
in crate root
2022-10-14 08:01:00 -04:00
Serial
be6662ea90
VorbisComments: Make use of new supported formats list
2022-10-14 07:53:37 -04:00
Serial
fcd9cee50f
Error: Add ErrorKind::SizeMismatch
2022-10-13 19:49:32 -04:00
Serial
2ff86e6e00
ID3v2: Prevent read only tag bypass with ID3v2Tag::write_to
2022-10-13 19:37:59 -04:00
Serial
2780bf2607
docs: Split supported formats out into its own file
2022-10-11 19:51:49 -04:00
Serial
efab7ca276
lofty_attr: Add tag
attribute macro to generate some docs
2022-10-11 19:47:54 -04:00
Serial
f3d9176a48
Clippy: Satisfy uninlined_format_args
2022-10-11 04:05:27 -04:00
Serial
238b40c486
MP4: Remove trak
module
2022-10-11 03:51:13 -04:00
Serial
510079c94e
MP4: Cleanup return
2022-10-11 03:47:12 -04:00
Serial
0819b83f32
FLAC: Decouple write handling from OGG formats
2022-10-04 00:49:30 -04:00
Serial
3a4b4f243e
lofty_attr: Add supported_formats attribute for tags
2022-10-04 00:34:20 -04:00
Serial
82a498f670
lofty_attr: Infer FileType::Custom
when using non-internal names
2022-10-01 18:49:17 -04:00
Serial
f1ab92733a
Resolve: Move panic into lookup_resolver
2022-09-30 07:09:58 -04:00
Serial
0d4b907e31
Misc: Add debug logging via log
crate
2022-09-30 07:05:33 -04:00
Serial
ac420960de
FileType: Remove feature dependent returns
2022-09-29 18:20:57 -04:00
Serial
8b8f355d89
MPEG: Remove write module
2022-09-29 18:11:24 -04:00
Serial
0a628df62c
ID3v1: Cleanup tag stripping
2022-09-29 15:52:05 -04:00
Serial
3b58f16996
lofty_attr: Generate internal write modules
2022-09-24 05:25:42 -04:00
Serial
5cd1dfc99c
lofty_attr: Remove #[lofty(always_present)]
2022-09-24 03:25:46 -04:00
Alex
ba6ef4f400
Probe: Add minimal ParseOptions ( #70 )
2022-09-24 02:34:22 -04:00
Serial
08082436e2
ID3v2: Use Option<T>
for optional extra flag data
2022-09-14 21:31:29 -04:00
Serial
899f4e4664
Misc: Add decode_err!
macro to cleanup FileDecodingError
creation
2022-09-11 23:03:32 -04:00
Serial
ddffb169f7
MPEG: Fix unclear comments in BITRATES constant
2022-09-09 01:20:38 -04:00
Serial
3fa73f5065
FileProperties: Add new
method
2022-09-09 01:13:14 -04:00
Serial
14a8548e4c
docs: Remove formats table from lib.rs
2022-09-09 01:10:23 -04:00
Serial
80f21fa61d
docs: Fix links to resolve::register_custom_resolver
2022-09-09 00:59:36 -04:00
Leonid Parfentev
b347ee0fd5
MP3: Improve validation of frame headers ( #67 )
2022-09-06 17:25:58 -04:00
Serial
c9c8a5f9f3
VorbisComments: Add get_all
...
closes : #66
2022-09-04 13:42:31 -04:00
Serial
859d084dbf
ID3v2: Handle tag-wide unsynchronisation flag
2022-09-02 23:37:03 -04:00
Serial
80f29cafef
WAV: Restrict visibility of some functions
2022-08-22 22:37:45 -04:00
Serial
4eb31023a3
fmt: Fix imports
2022-08-22 22:29:01 -04:00
Serial
9e82df3893
ID3v2: Extract out util::text_utils
...
This is used in multiple other places, makes sense to just make these utils global.
2022-08-22 22:26:42 -04:00
Serial
f25ed9b6c7
ID3v2: Simply parse_popularimeter
2022-08-21 12:29:11 -04:00
Serial
1b546700d5
MPEG: Change remaining references to mp3
to mpeg
2022-08-10 14:14:21 -04:00
Jack Purvis
dbb93fbc05
Fix typo in InitialKey
key ( #61 )
2022-08-03 17:41:15 -04:00
Serial
f3a7e4d5f1
Vorbis Comments: Don't rely on the case of METADATA_BLOCK_PICTURE
...
closes : #60
2022-08-03 08:33:39 -04:00
Serial
81a8a616c1
Clippy: Revert assertions_on_result_states
2022-08-02 21:58:13 -04:00
Serial
a08b47bf31
Resolve: Remove remove_custom_resolver
2022-08-02 21:48:50 -04:00
Serial
390512bda3
MP4: Add Atom::push_data
2022-07-30 19:47:47 -04:00
Serial
c4fa8f99d8
MP4: Return all values in Atom::data
2022-07-30 19:41:13 -04:00
Serial
ec4fb07042
ID3v2: Expose {synch_u32, unsynch_u32}
2022-07-26 21:55:58 -04:00
Serial
efedf0f443
Resolve: FileResolver::guess
docs
2022-07-26 21:09:52 -04:00
Serial
f54481026e
lofty_attr: Use full path for TagType
2022-07-24 16:36:23 -04:00
Serial
0805e6683b
MP3: Rename MP3File
to MPEGFile
2022-07-24 16:28:28 -04:00
Serial
da45191187
ID3v2: Change LanguageFrame.lang
's type to [u8; 3]
2022-07-24 16:21:18 -04:00
Serial
790e175b30
TaggedFile: Stop taking references to TagType
2022-07-24 16:14:42 -04:00
Alex
f48014fda8
Implement custom file resolvers ( #40 )
2022-07-24 16:08:46 -04:00
Serial
85ad435898
ID3v2: Update ID3v2Tag
docs
2022-07-22 11:55:29 -04:00
Serial
edc9f6ac14
Revert "Clippy: Fix unnecessary_lazy_evaluations
"
...
This reverts commit f5153b9318
.
2022-07-21 16:31:40 -04:00
Serial
f5153b9318
Clippy: Fix unnecessary_lazy_evaluations
2022-07-21 16:23:03 -04:00
Serial
8d8158e105
ID3v2: Don't allow empty strings in Accessor::set_*
2022-07-21 16:15:43 -04:00
Serial
079885eefe
ID3v2: Properly handle TXXX/WXXX frames in Tag
-> ID3v2Tag
conversion
2022-07-21 16:11:41 -04:00
Serial
97f081fb48
Tags: Support ReplayGain keys
...
ID3v2: Properly store user defined frames after `Tag` conversion
2022-07-21 15:33:57 -04:00
Serial
69436e5c0a
Misc: Add tests and extension detection for MP1 and MP2
2022-07-18 16:04:21 -04:00
Serial
903531e07f
Tag: Add missing return
2022-07-17 13:58:27 -04:00
Serial
7f71053e52
OGG: Add length validation to Vorbis Comments reading
2022-07-12 21:17:18 -04:00
Serial
19cef0400e
FLAC: Return early when encountering invalid zero-sized blocks
2022-07-12 21:01:12 -04:00
Serial
5e35896dff
Misc: Add err!
macro
2022-07-12 14:46:30 -04:00