Comments (2)
ID3 has support for split values in text frames. In v2.2 and v2.3 the separator is a slash while in v2.4 it is a null byte.
I intended the library to have a uniform ID3v2.4 interface, so everything that it reads is normalized to use null bytes. But I must admit that this leaves much to desire...
Splitting happens at a very low level, just after decoding at src/stream/frame/content.rs:449
It might be worth considering making the split functions of TagLike
version aware so at least the underlying content remains untouched unless desired
from rust-id3.
After seeing these:
I understand the issue better now. But still I think assuming the slash /
character as separator for multiple entries for ID3 v2.2 or v2.3 might end up messing with a few artist names. One of these cases is my first example, calling tag.artists()
will get you Some(["Alan Walker, Au", "Ra, Tomine Harket"])
.
At least, I think the null/slash substitute definitely should not apply for all text fields, for example album name and track name. And tag.artist()
should return the expected result, without null terminator character.
from rust-id3.
Related Issues (20)
- Unified ID3v1/ID3v2 API HOT 6
- v1.1.2 no rules expected / `Flags` build errors HOT 2
- Buffering
- id3::frame::EncapsulatedObject: Encoding is inaccessible HOT 2
- Chapters TOC HOT 2
- Tokio support HOT 2
- In the "Creating a new tag, overwriting any old tag" example, why using both set_album() and add_frame()?? HOT 1
- Support for "comment" tag HOT 1
- Refactor the content.rs file HOT 2
- Allow operating on mp3 files in-memory HOT 9
- Consider making `Tag::read_from[...]` functions return `Result<Option<Tag>>` HOT 2
- Writing tags to aiff results in broken files on Apple Silicon HOT 8
- build error below latest stable-1 ? HOT 1
- MSRV Policy & CI HOT 4
- Metadata is not applied to files HOT 6
- Readme Update - running tests depends on installed ffmpeg HOT 1
- Proper attribution HOT 1
- Ignore NULL byte following TXXX frame? HOT 2
- Support for UFID frames HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rust-id3.