Fix LastFM uploadig error
I figured it out; if you have a song currently being played, then it doesn't have a date
This commit is contained in:
parent
5697f95355
commit
614607ae71
2 changed files with 25 additions and 23 deletions
|
|
@ -147,7 +147,7 @@ pub fn post(request: *jetzig.Request) !jetzig.View {
|
|||
2 => {
|
||||
if (params.getT(.string, "username")) |username| {
|
||||
_ = username;
|
||||
const query: []const u8 = "https://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=VAOTM&api_key=b0c410a48a6078a651e0832699e3cd41&limit=200&format=json";
|
||||
const query: []const u8 = "https://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=VAOTM&api_key=b0c410a48a6078a651e0832699e3cd41&limit=1000&format=json";
|
||||
const user_agent: []const u8 = "Zuletzt/0.0.1";
|
||||
var client = Client{ .allocator = request.allocator };
|
||||
var ar = std.ArrayList(u8).init(request.allocator);
|
||||
|
|
@ -155,12 +155,13 @@ pub fn post(request: *jetzig.Request) !jetzig.View {
|
|||
const first_response = try ar.toOwnedSlice();
|
||||
const json = try std.json.parseFromSliceLeaky(Data.LastFMWeb, request.allocator, first_response, .{ .ignore_unknown_fields = true });
|
||||
|
||||
for (json.recenttracks.track) |scrobble| {
|
||||
appends: for (json.recenttracks.track) |scrobble| {
|
||||
if (scrobble.date == null) continue :appends;
|
||||
const pre_formatted_scrobble = Data.ImportedScrobble{
|
||||
.track = scrobble.name,
|
||||
.album = if (scrobble.album) |album| album.@"#text".? else "",
|
||||
.artist = scrobble.artist.@"#text".?,
|
||||
.date = try std.fmt.parseInt(i64, scrobble.date.uts, 10),
|
||||
.album = if (scrobble.album) |album| album.@"#text" else "Not Provided",
|
||||
.artist = scrobble.artist.@"#text",
|
||||
.date = try std.fmt.parseInt(i64, scrobble.date.?.uts, 10),
|
||||
};
|
||||
|
||||
const formatted_scrobble = if (rule_list) |rl|
|
||||
|
|
@ -195,18 +196,19 @@ pub fn post(request: *jetzig.Request) !jetzig.View {
|
|||
}
|
||||
const max_pages = (try std.fmt.parseInt(usize, json.recenttracks.@"@attr".totalPages, 10)) + 1;
|
||||
for (2..max_pages) |page| {
|
||||
const rest_query: []const u8 = try std.fmt.allocPrint(request.allocator, "https://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=VAOTM&api_key=b0c410a48a6078a651e0832699e3cd41&limit=200&page={}&format=json", .{page});
|
||||
const rest_query: []const u8 = try std.fmt.allocPrint(request.allocator, "https://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=VAOTM&api_key=b0c410a48a6078a651e0832699e3cd41&limit=1000&page={}&format=json", .{page});
|
||||
std.log.debug("{s}", .{rest_query});
|
||||
_ = try client.fetch(.{ .response_storage = .{ .dynamic = &ar }, .location = .{ .url = rest_query }, .method = .GET, .headers = .{ .user_agent = .{ .override = user_agent } } });
|
||||
const response = try ar.toOwnedSlice();
|
||||
const json2 = try std.json.parseFromSliceLeaky(Data.LastFMWeb, request.allocator, response, .{ .ignore_unknown_fields = true });
|
||||
|
||||
for (json2.recenttracks.track) |scrobble| {
|
||||
appends: for (json2.recenttracks.track) |scrobble| {
|
||||
if (scrobble.date == null) continue :appends;
|
||||
const pre_formatted_scrobble = Data.ImportedScrobble{
|
||||
.track = scrobble.name,
|
||||
.album = if (scrobble.album) |album| album.@"#text".? else "",
|
||||
.artist = scrobble.artist.@"#text".?,
|
||||
.date = try std.fmt.parseInt(i64, scrobble.date.uts, 10),
|
||||
.album = if (scrobble.album) |album| album.@"#text" else "Not Provided",
|
||||
.artist = scrobble.artist.@"#text",
|
||||
.date = try std.fmt.parseInt(i64, scrobble.date.?.uts, 10),
|
||||
};
|
||||
|
||||
const formatted_scrobble = if (rule_list) |rl|
|
||||
|
|
|
|||
|
|
@ -50,34 +50,34 @@ pub const LastFMWeb = struct {
|
|||
album: ?LastFMWebHyperlinkData = null,
|
||||
name: []const u8,
|
||||
mbid: ?[]const u8 = null,
|
||||
image: ?[]struct {
|
||||
image: []struct {
|
||||
size: []const u8,
|
||||
@"#text": []const u8,
|
||||
} = null,
|
||||
date: struct {
|
||||
},
|
||||
date: ?struct {
|
||||
uts: []const u8,
|
||||
@"#text": []const u8,
|
||||
},
|
||||
@"@attr": ?struct {
|
||||
nowplaying: ?[]const u8 = null,
|
||||
} = null,
|
||||
url: ?[]const u8 = null,
|
||||
@"@attr": ?struct {
|
||||
nowplaying: []const u8,
|
||||
} = null,
|
||||
url: []const u8,
|
||||
},
|
||||
@"@attr": LastFMWebAttr,
|
||||
},
|
||||
};
|
||||
|
||||
pub const LastFMWebAttr = struct {
|
||||
perPage: ?[]const u8 = null,
|
||||
perPage: []const u8,
|
||||
totalPages: []const u8,
|
||||
page: ?[]const u8 = null,
|
||||
user: ?[]const u8 = null,
|
||||
total: ?[]const u8 = null,
|
||||
page: []const u8,
|
||||
user: []const u8,
|
||||
total: []const u8,
|
||||
};
|
||||
|
||||
pub const LastFMWebHyperlinkData = struct {
|
||||
mbid: ?[]const u8 = null,
|
||||
@"#text": ?[]const u8 = null,
|
||||
mbid: []const u8,
|
||||
@"#text": []const u8,
|
||||
};
|
||||
|
||||
pub const Rule = struct {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue