Commit Graph

138 Commits

Author SHA1 Message Date
Martchus a4665456d6 Fix warnings in Id3v2Frame 2019-06-01 22:26:16 +02:00
Martchus 69c72909e8 Fix some Doxygen warnings 2019-06-01 15:07:48 +02:00
Martchus c17db5f2f6 Apply cmake-format and clang-format 2019-05-04 21:03:09 +02:00
Martchus 7efa7a0d5a Adapt to c++utilities v5 2019-05-04 16:04:21 +02:00
Martchus dbce74444a Deprecate unused methods in Id3v2Frame 2019-02-13 21:44:19 +01:00
Martchus e93a7c53b3 Fix warnings in ID3v2Frame 2019-02-13 21:43:56 +01:00
Martchus 3d3bc94e39 Prevent warning "Cannot make an empty frame" 2019-02-13 20:19:46 +01:00
Martchus 5140b76f08 Treat 255 as empty ID3v1 genre index 2019-02-13 18:56:03 +01:00
Martchus 6afcd0f8d3 Support album artist and fix/improve grouping 2019-01-01 23:47:18 +01:00
Martchus f1382bd286 Make message about empty frames only a warning
Empty frames don't cause any trouble in general. They only
*might* indicate that something went wrong.
2018-11-15 22:09:10 +01:00
Martchus a775ee61a2 Remove debug messages that the padding has been reached
This is true for most MP3 files and therefore not really helpful.
2018-11-15 22:07:07 +01:00
Martchus e74645e833 Handle unknown short IDs correctly when comparing ID3v2 frame IDs 2018-07-13 12:37:21 +02:00
Martchus 7d709ce9af Add Tag::supportsMultipleValues() 2018-07-13 12:25:00 +02:00
Martchus 341c7bbfd0 Fix setting ID in Id3v2Tag::internallySetValues() for new fields 2018-07-12 12:35:33 +02:00
Martchus e75a8d25c5 Adjust values()/setValues() to handle multiple values per text frame
See https://github.com/Martchus/tagparser/issues/10
2018-07-12 12:34:38 +02:00
Martchus af4b43ff79 Replace typedef with using 2018-07-12 12:34:38 +02:00
Martchus 8d89954cd3 Remove frameIdString() 2018-07-12 12:34:38 +02:00
Martchus e81c6bb169 Implement small TODOs for v8 2018-07-12 12:34:38 +02:00
Martchus 9361e0bc13 Use constexpr where possible 2018-07-12 12:34:38 +02:00
Martchus 1a97d91b27 Preserve multiple strings in ID3v2 text frames 2018-07-12 12:34:38 +02:00
Martchus f27dbd8934 Update documentation 2018-07-09 12:42:14 +02:00
Martchus d64084ec78 Refactor formatting list of values 2018-07-01 22:11:34 +02:00
Martchus 943123afa1 Warn about ID3v2 text frame with multiple strings
First step to support multiple strings within ID3v2 text
frame.

See
* https://github.com/Martchus/tagparser/issues/10
* https://github.com/Martchus/tageditor/issues/38
2018-07-01 02:04:29 +02:00
Martchus 3265e0bea4 Fix documentation which was still using the old namespace 2018-06-03 20:38:32 +02:00
Martchus a065412d98 Add support for disk position in ID3v2.0 2018-06-02 23:08:38 +02:00
Martchus 0a640c9f7f Fix warnings, mostly about implicit int conversions
This should fix all non-erros, leaving only warnings which
are indeed potential problems.

The following warnings should be safe to ignore:

* Conversions of various offsets from uint64 to
  std::streamoff/int64 are safe because such offsets have
  been obtained via tellg() and other functions
  returning std::streamoff in the first place.
* It also works vice-versa since tellg() should not
  return negative offsets with exceptions enabled.
* Conversions from char to unsigned char are also ok.
* Unused diag arguments can be ignored (those might be
  useful later).
* Annotate all intended fallthoughs.
2018-06-02 23:04:53 +02:00
Martchus 404e4f751f Improve comments and accessing the value in Id3v2FrameMaker 2018-06-02 19:34:07 +02:00
Martchus 710b7b420a Prevent writing float/e-notation to Id3v2 duration field 2018-06-02 19:31:39 +02:00
Martchus 878b3a3c4e Make diag msg on conversion error in Id3v2FrameMaker more specific 2018-06-02 19:29:43 +02:00
Martchus ba23b49d39 Ensure iostream is included in id3v2tag.cpp 2018-06-02 19:27:29 +02:00
Martchus bf7428d066 Fix warnings, improve coding style 2018-05-31 00:25:32 +02:00
Martchus a3bf8267ac Fix treating short and long ID3v2 frame IDs as equal 2018-05-31 00:25:06 +02:00
Martchus 047e9f7fd0 ID3v2: Warn if specified string is no valid position 2018-05-31 00:23:01 +02:00
Martchus 38da0c796b ID1v1: Allow conversion from int/string to position 2018-05-31 00:21:54 +02:00
Martchus ca0b8e4d8c Improve coding style 2018-03-11 22:28:15 +01:00
Martchus 59024a66a0 Don't clear field before parsing by default 2018-03-11 22:27:12 +01:00
Martchus b35fc2ff0d Improve some structure layouts 2018-03-11 16:14:42 +01:00
Martchus 0215b89057 Improve Id3v2Frame 2018-03-11 16:03:22 +01:00
Martchus c0336ed4bb Apply clang-format 2018-03-07 01:17:50 +01:00
Martchus a0986ad4a9 Fix style issues 2018-03-07 01:11:42 +01:00
Martchus 0e15c74103 Move everything into namespace TagParser 2018-03-06 23:09:15 +01:00
Martchus 36511fcc13 Add progress feedback and diagnostics replacing status provider 2018-03-06 22:44:01 +01:00
Martchus 7a02e8a325 Uniform/simplify typedefs in templates
* Begin type names with capital letter
* Remove typedefs for implementation type
* Remove useless/obsolete comments
* Simplify relevant code
2018-03-06 22:44:01 +01:00
Martchus 0daabba17a Use static polymorphism in FieldMapBasedTag 2018-03-06 22:44:01 +01:00
Martchus 138fa32f29 Restructure FieldMapBasedTag to use CRTP 2018-03-06 22:44:01 +01:00
Martchus 6a62ef7fc2 Fix typo 2018-01-29 16:33:55 +01:00
Martchus f65b90885a Improve coding style 2017-10-09 21:49:04 +02:00
Martchus 8ae3dd6f6f Specify behaviour of Id3Genres::indexFromString() in error case 2017-06-03 21:00:36 +02:00
Martchus 6b705d5652 Mind encoding when converting TagValue to pos 2017-06-03 21:00:26 +02:00
Martchus 79845b96dc Remove friend class from Id3v2Frame 2017-05-29 14:36:22 +02:00
Martchus 0d39a70b5f Improve making picture/comment frames 2017-05-29 14:05:15 +02:00
Martchus 8f5f61c85e Fix finding termination in ID3v2 description
This check is only to prevent writing bad frame
when given description contains termination
2017-05-21 00:09:09 +02:00
Martchus e925e15533 Improve handling of Unicode and BOM in ID3v2
* Convert UTF-8 text fields automatically to UTF-16
  when version is ID3v2.3 or below
  -> so conversion from ID3v2.4 to ID3v2.3 or below
     doesn't require manual conversion of possibly
     UTF-8 encoded fields
* Don't use magic numbers for ID3v2 encoding byte
* Don't warn about UTF-16 Big Endian with BOM
2017-05-20 23:34:45 +02:00
Martchus 23e84886d4 Id3v2Frame: Write BOM explicitely
* Instead of leaving this up to the application
* So the BOM isn't missing anymore when using
  CLI of Tag Editor
2017-05-18 02:27:08 +02:00
Martchus 909d21c076 Don't treat TXXX ID3v2 frames as text frames 2017-05-18 02:27:08 +02:00
Martchus c3394acdb2 Fix typos 2017-03-01 18:21:00 +01:00
Martchus 424b238539 Make context static const where possible 2017-02-06 18:53:09 +01:00
Martchus add833f87f Fix conversion of ID3v2 length frame using UTF-16 2017-02-05 22:51:27 +01:00
Martchus b97192abd3 Use std::make_unique provided by C++14 2017-02-05 21:02:40 +01:00
Martchus 5037713071 Remove numberToString() where possible 2017-01-30 00:42:35 +01:00
Martchus 230a14fcf1 Use string builder rather than stringstream 2017-01-27 21:27:24 +01:00
Martchus 541f14039b Make use of string builder 2017-01-27 18:59:22 +01:00
Martchus b4e167bd71 Ease dealing with native field IDs
In particular, this allow conversion from native field IDs
to readible string representation and vice verca
2017-01-23 00:25:53 +01:00
Martchus e13263143d Consider long and short ID3v2 IDs equal 2016-12-27 23:57:21 +01:00
Martchus e9166c19a5 Don't allow using UTF-8 in ID3v1 2016-12-21 00:41:53 +01:00
Martchus 1ddaa4f693 Fix indentation in id3v2frame.cpp 2016-11-13 23:57:59 +01:00
Martchus 633d68f4c9 Ensure parseWideString() returns host byte order 2016-11-13 23:56:49 +01:00
Martchus f39d8abcd4 Don't use UTF-8 for ID3 v2.3 or older
Support for UTF-8 is not mentioned in specification
for ID3v2.3 (only in ID3v2.4).

http://id3.org/id3v2.3.0#Text_information_frames
http://id3.org/id3v2.4.0-structure
2016-11-12 16:24:37 +01:00
Martchus 0cf30edbff Fix decoration for static builds 2016-08-29 15:43:05 +02:00
Martchus d5c8086230 Improve misc details 2016-08-05 01:46:31 +02:00
Martchus 1e17bf47d3 Fix size calculation of ID3v2.2 frames 2016-08-05 01:30:46 +02:00
Martchus 817a8e25e6 Improve documentation and consistency 2016-08-04 00:16:19 +02:00
Martchus 7e058f289c Improve API doc 2016-06-15 22:53:39 +02:00
Martchus 2c5d463a9f Improve API doc 2016-06-10 23:08:01 +02:00
Martchus a84ac37dbe Add support for raw FLAC streams 2016-05-16 20:56:53 +02:00
Martchus 12000f826e ID3v2: don't consider comment frame without actual text incomplete 2016-05-06 21:59:19 +02:00
Martchus 899e2a97fe small improvements
- fixed some mostly ID3/MP3 related bugs
- added convenience methods/operators
2016-03-18 21:43:09 +01:00
Martchus 617679e001 improved parsing ID3 genres 2016-02-23 20:33:00 +01:00
Martchus 6f0adce661 make use of padding when applying changes to MP3 files 2015-12-22 23:54:35 +01:00
Martchus 979427beb3 improved ID3v2 implementation 2015-12-22 17:01:25 +01:00
Martchus ee09a50915 removed useless destructors 2015-12-21 18:35:47 +01:00
Martchus eaf2223585 fixed spelling mistakes 2015-10-16 21:46:36 +02:00
Martchus 05aef3a831 fixed reading/writing ID3v2.2 picture frames 2015-09-19 22:34:07 +02:00
Martchus aa50c2d8b3 fixed includes 2015-09-06 19:57:33 +02:00
Martchus b1eb6faba6 fixed includes 2015-09-06 15:42:18 +02:00
Martchus 8b91b41801 updated readme 2015-08-26 20:01:32 +02:00
Martchus 09fcb37442 small adjustments 2015-07-27 23:10:35 +02:00
Martchus 033e313c74 First commit 2015-04-22 19:22:01 +02:00