summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-06-23 21:32:47 +1000
committerjacqueline <me@jacqueline.id.au>2023-06-23 21:33:14 +1000
commit072c2c23e58d2ef9620c9f4bd7e8d522afdc5cd9 (patch)
treef7035f78449177b4c573367fd782b430217ce081
parent245d9ff4b9cde1f487beed76085a52f3f2d6d26c (diff)
downloadtangara-fw-072c2c23e58d2ef9620c9f4bd7e8d522afdc5cd9.tar.gz
Parse and zero-pad track numbers
-rw-r--r--src/database/tag_parser.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/database/tag_parser.cpp b/src/database/tag_parser.cpp
index 49febe27..b2d206d2 100644
--- a/src/database/tag_parser.cpp
+++ b/src/database/tag_parser.cpp
@@ -8,7 +8,10 @@
#include <esp_log.h>
#include <ff.h>
+#include <stdint.h>
#include <tags.h>
+#include <cstdlib>
+#include <iomanip>
namespace database {
@@ -74,7 +77,14 @@ static void tag(Tagctx* ctx,
Aux* aux = reinterpret_cast<Aux*>(ctx->aux);
auto tag = convert_tag(t);
if (tag) {
- aux->tags->set(*tag, v);
+ std::string value{v};
+ if (*tag == Tag::kAlbumTrack) {
+ uint32_t as_int = std::atoi(v);
+ std::ostringstream oss;
+ oss << std::setw(4) << std::setfill('0') << as_int;
+ value = oss.str();
+ }
+ aux->tags->set(*tag, value);
}
}