mirror of
https://github.com/BubbaGumpShrump/AutoTrackR2.git
synced 2025-06-18 04:39:08 +00:00
Fix CSV parsing dates with commas. Fix UEE record scraping
This commit is contained in:
parent
d817b097ab
commit
3f892c6a37
3 changed files with 42 additions and 26 deletions
|
@ -146,11 +146,27 @@ public partial class HomePage : UserControl
|
||||||
EnemyPilot = actorDeathData.VictimPilot,
|
EnemyPilot = actorDeathData.VictimPilot,
|
||||||
EnemyShip = actorDeathData.VictimShip,
|
EnemyShip = actorDeathData.VictimShip,
|
||||||
OrgAffiliation = playerData?.OrgName,
|
OrgAffiliation = playerData?.OrgName,
|
||||||
|
Weapon = actorDeathData.Weapon,
|
||||||
|
Ship = LocalPlayerData.PlayerShip ?? "Unknown",
|
||||||
|
Method = actorDeathData.DamageType,
|
||||||
|
RecordNumber = playerData?.UEERecord,
|
||||||
|
GameVersion = LocalPlayerData.GameVersion ?? "Unknown",
|
||||||
|
TrackRver = UpdatePage.currentVersion.Replace("v", "") ?? "Unknown",
|
||||||
Enlisted = playerData?.JoinDate,
|
Enlisted = playerData?.JoinDate,
|
||||||
KillTime = DateTime.UtcNow.ToString("dd MMM yyyy HH:mm"),
|
KillTime = DateTime.UtcNow.ToString("dd MMM yyyy HH:mm"),
|
||||||
PFP = playerData?.PFPURL
|
PFP = playerData?.PFPURL ?? "https://cdn.robertsspaceindustries.com/static/images/account/avatar_default_big.jpg"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
switch (LocalPlayerData.CurrentGameMode)
|
||||||
|
{
|
||||||
|
case GameMode.PersistentUniverse:
|
||||||
|
killData.Mode = "pu";
|
||||||
|
break;
|
||||||
|
case GameMode.ArenaCommander:
|
||||||
|
killData.Mode = "ac";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
// Add kill to UI
|
// Add kill to UI
|
||||||
Dispatcher.Invoke(() =>
|
Dispatcher.Invoke(() =>
|
||||||
{
|
{
|
||||||
|
@ -160,7 +176,7 @@ public partial class HomePage : UserControl
|
||||||
// Only submit kill data if not in offline mode
|
// Only submit kill data if not in offline mode
|
||||||
if (ConfigManager.OfflineMode == 0)
|
if (ConfigManager.OfflineMode == 0)
|
||||||
{
|
{
|
||||||
await WebHandler.SubmitKill(actorDeathData, playerData);
|
await WebHandler.SubmitKill(killData);
|
||||||
}
|
}
|
||||||
|
|
||||||
_killHistoryManager.AddKill(killData);
|
_killHistoryManager.AddKill(killData);
|
||||||
|
@ -234,6 +250,8 @@ public partial class HomePage : UserControl
|
||||||
FontFamily = orbitronFontFamily,
|
FontFamily = orbitronFontFamily,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
killTextBlock.Inlines.Add(new Run($"{killData.RecordNumber}\n"));
|
||||||
|
|
||||||
killTextBlock.Inlines.Add(new Run("Kill Time: ")
|
killTextBlock.Inlines.Add(new Run("Kill Time: ")
|
||||||
{
|
{
|
||||||
Foreground = altTextColorBrush,
|
Foreground = altTextColorBrush,
|
||||||
|
@ -261,6 +279,11 @@ public partial class HomePage : UserControl
|
||||||
// Add the TextBlock to the first column of the Grid
|
// Add the TextBlock to the first column of the Grid
|
||||||
Grid.SetColumn(killTextBlock, 0);
|
Grid.SetColumn(killTextBlock, 0);
|
||||||
killGrid.Children.Add(killTextBlock);
|
killGrid.Children.Add(killTextBlock);
|
||||||
|
|
||||||
|
if (killData.PFP == "")
|
||||||
|
{
|
||||||
|
killData.PFP = "https://cdn.robertsspaceindustries.com/static/images/account/avatar_default_big.jpg";
|
||||||
|
}
|
||||||
|
|
||||||
// Create the Image for the profile
|
// Create the Image for the profile
|
||||||
var profileImage = new Image
|
var profileImage = new Image
|
||||||
|
|
|
@ -28,6 +28,9 @@ public class KillHistoryManager
|
||||||
File.WriteAllText(_killHistoryPath, _headers);
|
File.WriteAllText(_killHistoryPath, _headers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Remove comma from Enlisted
|
||||||
|
killData.Enlisted = killData.Enlisted?.Replace(",", string.Empty);
|
||||||
|
|
||||||
// Append the new kill data to the CSV file
|
// Append the new kill data to the CSV file
|
||||||
var csv = new StringBuilder();
|
var csv = new StringBuilder();
|
||||||
csv.AppendLine($"\"{killData.KillTime}\",\"{killData.EnemyPilot}\",\"{killData.EnemyShip}\",\"{killData.Enlisted}\",\"{killData.RecordNumber}\",\"{killData.OrgAffiliation}\",\"{killData.Player}\",\"{killData.Weapon}\",\"{killData.Ship}\",\"{killData.Method}\",\"{killData.Mode}\",\"{killData.GameVersion}\",\"{killData.TrackRver}\",\"{killData.Logged}\",\"{killData.PFP}\"");
|
csv.AppendLine($"\"{killData.KillTime}\",\"{killData.EnemyPilot}\",\"{killData.EnemyShip}\",\"{killData.Enlisted}\",\"{killData.RecordNumber}\",\"{killData.OrgAffiliation}\",\"{killData.Player}\",\"{killData.Weapon}\",\"{killData.Ship}\",\"{killData.Method}\",\"{killData.Mode}\",\"{killData.GameVersion}\",\"{killData.TrackRver}\",\"{killData.Logged}\",\"{killData.PFP}\"");
|
||||||
|
|
|
@ -27,7 +27,7 @@ public static class WebHandler
|
||||||
public static async Task<PlayerData?> GetPlayerData(string enemyPilot)
|
public static async Task<PlayerData?> GetPlayerData(string enemyPilot)
|
||||||
{
|
{
|
||||||
var joinDataPattern = new Regex("<span class=\"label\">Enlisted</span>\\s*<strong class=\"value\">([^<]+)</strong>");
|
var joinDataPattern = new Regex("<span class=\"label\">Enlisted</span>\\s*<strong class=\"value\">([^<]+)</strong>");
|
||||||
var ueePattern = new Regex("<p class=\"entry citizen-record\">\\s*<span class=\"label\">UEE Citizen Record<\\/span>\\s*<strong class=\"value\">#?(n\\/a|\\d+)<\\/strong>\\s*<\\/p>");
|
var ueePattern = new Regex("<p class=\"entry citizen-record\">\\n.*.<span class=\"label\">UEE Citizen Record<\\/span>\\n.*.<strong class=\"value\">#(?<UEERecord>\\d+)<\\/strong>");
|
||||||
var orgPattern = new Regex("\\/orgs\\/(?<OrgURL>[A-z0-9]+)\" .*\\>(?<OrgName>.*)<");
|
var orgPattern = new Regex("\\/orgs\\/(?<OrgURL>[A-z0-9]+)\" .*\\>(?<OrgName>.*)<");
|
||||||
var pfpPattern = new Regex("/media/(.*)\"");
|
var pfpPattern = new Regex("/media/(.*)\"");
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ public static class WebHandler
|
||||||
var ueeMatch = ueePattern.Match(content);
|
var ueeMatch = ueePattern.Match(content);
|
||||||
if (ueeMatch.Success)
|
if (ueeMatch.Success)
|
||||||
{
|
{
|
||||||
playerData.UEERecord = ueeMatch.Groups[1].Value == "n/a" ? "-1" : ueeMatch.Groups[1].Value;
|
playerData.UEERecord = ueeMatch.Groups["UEERecord"].Value == "n/a" ? "-1" : ueeMatch.Groups[1].Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
var orgMatch = orgPattern.Match(content);
|
var orgMatch = orgPattern.Match(content);
|
||||||
|
@ -78,33 +78,23 @@ public static class WebHandler
|
||||||
return playerData;
|
return playerData;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async Task SubmitKill(ActorDeathData deathData, PlayerData? enemyPlayerData)
|
public static async Task SubmitKill(KillData killData)
|
||||||
{
|
{
|
||||||
var killData = new APIKillData
|
var apiKillData = new APIKillData
|
||||||
{
|
{
|
||||||
victim_ship = deathData.VictimShip,
|
victim_ship = killData.EnemyShip,
|
||||||
victim = deathData.VictimPilot,
|
victim = killData.EnemyPilot,
|
||||||
enlisted = enemyPlayerData?.JoinDate,
|
enlisted = killData.Enlisted,
|
||||||
rsi = enemyPlayerData?.UEERecord,
|
rsi = killData.RecordNumber,
|
||||||
weapon = deathData.Weapon,
|
weapon = killData.Weapon,
|
||||||
method = deathData.DamageType,
|
method = killData.Method,
|
||||||
// loadout_ship = LocalPlayerData.PlayerShip ?? "Unknown",
|
// loadout_ship = LocalPlayerData.PlayerShip ?? "Unknown",
|
||||||
loadout_ship = LocalPlayerData.PlayerShip ?? "Unknown",
|
loadout_ship = killData.Ship,
|
||||||
game_version = LocalPlayerData.GameVersion ?? "Unknown",
|
game_version = killData.GameVersion,
|
||||||
trackr_version = UpdatePage.currentVersion.Replace("v", "") ?? "Unknown",
|
trackr_version = killData.TrackRver,
|
||||||
location = LocalPlayerData.LastSeenVehicleLocation ?? "Unknown"
|
location = "Unknown"
|
||||||
};
|
};
|
||||||
|
|
||||||
switch (LocalPlayerData.CurrentGameMode)
|
|
||||||
{
|
|
||||||
case GameMode.PersistentUniverse:
|
|
||||||
killData.gamemode = "pu";
|
|
||||||
break;
|
|
||||||
case GameMode.ArenaCommander:
|
|
||||||
killData.gamemode = "ac";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
var httpClient = new HttpClient();
|
var httpClient = new HttpClient();
|
||||||
string jsonData = JsonSerializer.Serialize(killData);
|
string jsonData = JsonSerializer.Serialize(killData);
|
||||||
httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + ConfigManager.ApiKey);
|
httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + ConfigManager.ApiKey);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue