Fix lessThan functions

This commit is contained in:
Samuel Webb 2025-03-24 00:46:26 -04:00
parent 4779e105d1
commit 4e95f395e2
3 changed files with 5 additions and 52 deletions

View file

@ -45,7 +45,7 @@ pub const Recording = struct {
const bdtyr = std.fmt.parseInt(u32, bdtstr[0..4], 10) catch 0;
if (adtyr != bdtyr) {
return adtyr < bdtyr;
} else if (adtstr.len > 7) {
} else if (adtstr.len >= 7) {
if (bdtstr.len < 7) return true; // a provides more information
const adtmn = std.fmt.parseInt(u32, adtstr[5..7], 10) catch 0;
const bdtmn = std.fmt.parseInt(u32, bdtstr[5..7], 10) catch 0;
@ -90,7 +90,7 @@ pub const Release = struct {
const bdtyr = std.fmt.parseInt(u32, bdtstr[0..4], 10) catch 0;
if (adtyr != bdtyr) {
return adtyr < bdtyr;
} else if (adtstr.len > 7) {
} else if (adtstr.len >= 7) {
if (bdtstr.len < 7) return true; // a provides more information
const adtmn = std.fmt.parseInt(u32, adtstr[5..7], 10) catch 0;
const bdtmn = std.fmt.parseInt(u32, bdtstr[5..7], 10) catch 0;

View file

@ -139,28 +139,6 @@ pub const searchMetadata = struct {
an: []const u8,
};
//pub fn percentEncode(alloc: std.mem.Allocator, smd: searchMetadata) !searchMetadata {
// var output: searchMetadata = undefined;
// inline for (std.meta.fields(searchMetadata)) |k| {
// var encoded = std.ArrayList(u8).init(alloc);
// errdefer encoded.deinit();
// for (@field(smd, k.name)) |v| {
// if ((v >= 'A' and v <= 'Z') or (v >= 'a' and v <= 'z') or (v >= '0' and v <= '9') or v == '-' or v == '_' or v == '.' or v == '~') {
// try encoded.append(v);
// } else if (v == ' ') {
// try encoded.append('+');
// } else {
// const hex = try std.fmt.allocPrint(alloc, "%{x}", .{v});
// defer alloc.free(hex);
// try encoded.appendSlice(hex);
// }
// }
// @field(output, k.name) = try encoded.toOwnedSlice();
// }
//
// return output;
//}
pub const searchIDs = union {
id: []const u8,
ids: struct {
@ -169,29 +147,3 @@ pub const searchIDs = union {
song_id: ?[]const u8,
},
};
//test "pe_jethro_tull" {
// const test_alloc = std.testing.allocator;
// const jt = searchMetadata{ .tn = "Aqualung ", .rn = "Aqualung", .an = "Jethro Tull" };
// const jt_enc = try percentEncode(test_alloc, jt);
// defer test_alloc.free(jt_enc);
// //defer jt.deinit();
// try testing.expect(std.mem.eql(u8, jt_enc.an, "Jethro+Tull"));
//}
//
//test "pe_aphex_twin" {
// const test_alloc = std.testing.allocator;
// var at = searchMetadata{ .alloc = test_alloc, .tn = .{ .dec = "#3" }, .rn = .{ .dec = "Selected Ambient Works Volume II" }, .an = .{ .dec = "Aphex Twin" } };
// try at.percentEncode();
// defer at.deinit();
// try testing.expect(std.mem.eql(u8, at.tn.enc, "%233"));
//}
//
//test "pe_bon_iver" {
// const test_alloc = std.testing.allocator;
// var bi = searchMetadata{ .alloc = test_alloc, .tn = .{ .dec = "21 M♢♢N WATER" }, .rn = .{ .dec = "22, a Million" }, .an = .{ .dec = "Bon Iver" } };
// try bi.percentEncode();
// defer bi.deinit();
// try testing.expect(std.mem.eql(u8, bi.tn.enc, "21+M%e2%99%a2%e2%99%a2N+WATER"));
//}
//

View file

@ -19,19 +19,20 @@ pub fn mbSearch(alloc: std.mem.Allocator, smd: MBQ.searchMetadata) !MBQ.Result {
try code.append('+');
} else {
const hex = try std.fmt.allocPrint(alloc, "%{x}", .{v});
defer alloc.free(hex);
try code.appendSlice(hex);
}
}
@field(encoded, k.name) = try code.toOwnedSlice();
}
// Might consider making just one of these and passing it around
var client = Client{ .allocator = alloc };
errdefer client.deinit();
const query: []const u8 = try std.fmt.allocPrint(alloc, "https://musicbrainz.org/ws/2/recording/?query=\"{s}\"%20AND%20artist:\"{s}\"%20AND%20release:\"{s}\"&fmt=json", .{ encoded.tn, encoded.an, encoded.rn });
errdefer alloc.free(query);
var ar = std.ArrayList(u8).init(alloc);
errdefer ar.deinit();
const response: Client.FetchResult = try client.fetch(.{ .response_storage = .{ .dynamic = &ar }, .location = .{ .url = query }, .method = .GET, .headers = .{ .user_agent = .{ .override = user_agent } } });