Grant Shoshin Shangreaux <[email protected]> writes: > Another option might be to hook into the emms-info-native code and add > tag writing capabilities as well.
I wouldn’t recommend going this way, at least not yet. Some rationale: 1. There are already plenty of solid free implementations for writing metadata, so this would be reinventing the wheel, and probably badly in comparison. 2. Writing to a file always carries the risk of messing up that file. Users would better have backups of their precious audio files. This is true, of course, for all tag writing software, but especially so for a new implementation like this. 3. Adding support for writing tags is not straightforward as emms-info-native tends to cut corners due to its read-only nature. For example, it occasionally throws data away while decoding, including tags that EMMS does not recognize. To prevent data loss, this ought to be fixed if the data would be written back at some point. Also, emms-info-native does not work with files that have multiple (multiplexed) streams. It is questionable how many audio files do have more than one logical stream, but such files should be detected and any failures handled gracefully. 4. I’m looking forward to add MP3 (id3v2) support for emms-info-native but not more. Support for MP4, for instance, is pretty complex to do. With external tools we get much wider coverage for popular formats. I personally don’t care for nonfree formats, but others may. Personally I like the lightweight EMMS design that emphasizes the use of external programs instead of (re)implementing stuff by itself. Consequently, I see emms-info-native more like a simplistic stopgap solution for those (hopefully rare) use cases where there are no external metadata tools available or configured. For any serious metadata operations I would go with external tools. In my own setups I use emms-print-metadata and MPD, and MusicBrainz Picard for tagging. This does not mean that emms-info-native couldn’t be a "simplistic stopgap solution" for writing tags as well, but please consider the caveats listed above. Speaking of solutions, > 1. add a shim for TagLib to write to files (beyond me at the moment) this one is probably easy to do. The current Taglib shim (emms-print-metadata) can be extended to support tag updates as well. I can help with that if needed. Thanks, Petteri
