Removed inline else from upload.zig
If I can figure out a way to get an array of a union instead of a union of arrays, we're in business to make this even better, but this is fine right now. The inline else was just a dumb way to keep the for on the outside
This commit is contained in:
parent
aab61631a3
commit
f59eec79a8
1 changed files with 59 additions and 49 deletions
|
|
@ -81,58 +81,68 @@ pub fn post(request: *jetzig.Request) !jetzig.View {
|
||||||
|
|
||||||
// Not sure if I should be proud or feel sick
|
// Not sure if I should be proud or feel sick
|
||||||
switch (imported_scrobbles) {
|
switch (imported_scrobbles) {
|
||||||
inline else => |scrobbles| {
|
.LastFMStats => |scrobbles| {
|
||||||
appends: for (scrobbles) |scrobble| {
|
appends: for (scrobbles) |scrobble| {
|
||||||
const filtered_scrobble: Data.Scrobble = blk: switch (@TypeOf(scrobble)) {
|
if (scrobble.date > latest_timestamp * 1_000 or scrobble.date < earliest_timestamp * 1_000) {
|
||||||
Data.IgnorantScrobble => {
|
limited_tracks += 1;
|
||||||
if (scrobble.date > latest_timestamp * 1_000 or scrobble.date < earliest_timestamp * 1_000) {
|
continue :appends;
|
||||||
limited_tracks += 1;
|
}
|
||||||
continue :appends;
|
const filtered_scrobble = Data.Scrobble{
|
||||||
}
|
.album = scrobble.album,
|
||||||
break :blk Data.Scrobble{
|
.artists_album = &[_][]const u8{scrobble.artist},
|
||||||
.album = scrobble.album,
|
.track = scrobble.track,
|
||||||
.artists_album = &[_][]const u8{scrobble.artist},
|
.artists_track = &[_][]const u8{scrobble.artist},
|
||||||
.track = scrobble.track,
|
.date = scrobble.date * 1_000,
|
||||||
.artists_track = &[_][]const u8{scrobble.artist},
|
|
||||||
.date = scrobble.date * 1_000,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
Data.SpotifyScrobble => {
|
|
||||||
if (scrobble.ms_played < 30_000 and (scrobble.reason_end == null or !std.mem.eql(u8, scrobble.reason_end.?, "trackdone"))) {
|
|
||||||
skipped_tracks += 1;
|
|
||||||
continue :appends;
|
|
||||||
}
|
|
||||||
if (scrobble.master_metadata_album_artist_name == null or scrobble.master_metadata_track_name == null) {
|
|
||||||
skipped_tracks += 1;
|
|
||||||
continue :appends;
|
|
||||||
}
|
|
||||||
|
|
||||||
const iso_ts = try zeit.Time.fromISO8601(scrobble.ts);
|
|
||||||
if ((iso_ts.after(latest_date) or iso_ts.before(earliest_date))) {
|
|
||||||
limited_tracks += 1;
|
|
||||||
continue :appends;
|
|
||||||
}
|
|
||||||
|
|
||||||
break :blk Data.Scrobble{
|
|
||||||
.album = scrobble.master_metadata_album_album_name.?,
|
|
||||||
.artists_album = &[_][]const u8{scrobble.master_metadata_album_artist_name.?},
|
|
||||||
.track = scrobble.master_metadata_track_name.?,
|
|
||||||
.artists_track = &[_][]const u8{scrobble.master_metadata_album_artist_name.?},
|
|
||||||
.date = (try zeit.instant(.{ .source = .{ .iso8601 = scrobble.ts } })).unixTimestamp() * 1_000_000,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
Data.LastFMWebScrobble => {
|
|
||||||
break :blk Data.Scrobble{
|
|
||||||
.album = if (scrobble.album) |album| album.@"#text" else "Not Provided",
|
|
||||||
.artists_album = &[_][]const u8{scrobble.artist.@"#text"},
|
|
||||||
.track = scrobble.name,
|
|
||||||
.artists_track = &[_][]const u8{scrobble.artist.@"#text"},
|
|
||||||
.date = try std.fmt.parseInt(i64, scrobble.date.?.uts, 10) * 1_000_000,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
else => unreachable,
|
|
||||||
};
|
};
|
||||||
|
const complete_scrobble = if (rule_list) |rl| try rules.applyScrobbleRule(request.allocator, filtered_scrobble, rl) else filtered_scrobble;
|
||||||
|
|
||||||
|
const row = try Utils.scrobbleToRow(request.allocator, complete_scrobble);
|
||||||
|
|
||||||
|
try view_params.append(row);
|
||||||
|
try job_params.append(complete_scrobble);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.LastFMWeb => |scrobbles| {
|
||||||
|
for (scrobbles) |scrobble| {
|
||||||
|
const filtered_scrobble = Data.Scrobble{
|
||||||
|
.album = if (scrobble.album) |album| album.@"#text" else "Not Provided",
|
||||||
|
.artists_album = &[_][]const u8{scrobble.artist.@"#text"},
|
||||||
|
.track = scrobble.name,
|
||||||
|
.artists_track = &[_][]const u8{scrobble.artist.@"#text"},
|
||||||
|
.date = try std.fmt.parseInt(i64, scrobble.date.?.uts, 10) * 1_000_000,
|
||||||
|
};
|
||||||
|
const complete_scrobble = if (rule_list) |rl| try rules.applyScrobbleRule(request.allocator, filtered_scrobble, rl) else filtered_scrobble;
|
||||||
|
|
||||||
|
const row = try Utils.scrobbleToRow(request.allocator, complete_scrobble);
|
||||||
|
|
||||||
|
try view_params.append(row);
|
||||||
|
try job_params.append(complete_scrobble);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.Spotify => |scrobbles| {
|
||||||
|
appends: for (scrobbles) |scrobble| {
|
||||||
|
if (scrobble.ms_played < 30_000 and (scrobble.reason_end == null or !std.mem.eql(u8, scrobble.reason_end.?, "trackdone"))) {
|
||||||
|
skipped_tracks += 1;
|
||||||
|
continue :appends;
|
||||||
|
}
|
||||||
|
if (scrobble.master_metadata_album_artist_name == null or scrobble.master_metadata_track_name == null) {
|
||||||
|
skipped_tracks += 1;
|
||||||
|
continue :appends;
|
||||||
|
}
|
||||||
|
|
||||||
|
const iso_ts = try zeit.Time.fromISO8601(scrobble.ts);
|
||||||
|
if ((iso_ts.after(latest_date) or iso_ts.before(earliest_date))) {
|
||||||
|
limited_tracks += 1;
|
||||||
|
continue :appends;
|
||||||
|
}
|
||||||
|
|
||||||
|
const filtered_scrobble = Data.Scrobble{
|
||||||
|
.album = scrobble.master_metadata_album_album_name.?,
|
||||||
|
.artists_album = &[_][]const u8{scrobble.master_metadata_album_artist_name.?},
|
||||||
|
.track = scrobble.master_metadata_track_name.?,
|
||||||
|
.artists_track = &[_][]const u8{scrobble.master_metadata_album_artist_name.?},
|
||||||
|
.date = (try zeit.instant(.{ .source = .{ .iso8601 = scrobble.ts } })).unixTimestamp() * 1_000_000,
|
||||||
|
};
|
||||||
const complete_scrobble = if (rule_list) |rl| try rules.applyScrobbleRule(request.allocator, filtered_scrobble, rl) else filtered_scrobble;
|
const complete_scrobble = if (rule_list) |rl| try rules.applyScrobbleRule(request.allocator, filtered_scrobble, rl) else filtered_scrobble;
|
||||||
|
|
||||||
const row = try Utils.scrobbleToRow(request.allocator, complete_scrobble);
|
const row = try Utils.scrobbleToRow(request.allocator, complete_scrobble);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue