Added Rainbet bet history scraping. Uses FlareSolverr to grab Cloudflare cookies then retrieves from the bet feed. Not perfect but mostly works.

This commit is contained in:
barelyprofessional
2024-08-06 00:07:08 +08:00
parent 508df3163b
commit a67641a14d
12 changed files with 575 additions and 7 deletions

View File

@@ -0,0 +1,18 @@
namespace KfChatDotNetBot.Models.DbModels;
public class RainbetBetsDbModel
{
public int Id { get; set; }
// Weird gibberish identifier given to users, may be hidden on bet feeds for users who opt out of the social shit
// Null if the user has opted out
public string? PublicId { get; set; }
// This is always set. Rainbet never omits the user's ID even if they're anonymous
public required int RainbetUserId { get; set; }
public required string GameName { get; set; }
public required float Value { get; set; }
public required float Payout { get; set; }
public required float Multiplier { get; set; }
public required long BetId { get; set; }
public required DateTimeOffset UpdatedAt { get; set; }
public required DateTimeOffset BetSeenAt { get; set; }
}

View File

@@ -0,0 +1,64 @@
using System.Text.Json.Serialization;
namespace KfChatDotNetBot.Models;
public class RainbetBetHistoryModel
{
[JsonPropertyName("id")]
public required int Id { get; set; }
[JsonPropertyName("value")]
public required float Value { get; set; }
[JsonPropertyName("payout")]
public required float Payout { get; set; }
[JsonPropertyName("multiplier")]
public required float Multiplier { get; set; }
[JsonPropertyName("updated_at")]
public required DateTimeOffset UpdatedAt { get; set; }
[JsonPropertyName("user")]
public required RainbetBetHistoryUserModel User { get; set; }
[JsonPropertyName("game")]
public required RainbetBetHistoryGameModel Game { get; set; }
}
public class RainbetBetHistoryGameModel
{
[JsonPropertyName("id")]
public required int Id { get; set; }
// It's actually a slug
[JsonPropertyName("url")]
public required string Url { get; set; }
[JsonPropertyName("name")]
public required string Name { get; set; }
}
public class RainbetBetHistoryUserRankModel
{
[JsonPropertyName("id")]
public required int Id { get; set; }
[JsonPropertyName("name")]
public required string Name { get; set; }
[JsonPropertyName("level")]
public required int Level { get; set; }
[JsonPropertyName("threshold")]
public required int Threshold { get; set; }
}
public class RainbetBetHistoryUserModel
{
// Can still uniquely identify users even if they're private. Bossman is ID 50
[JsonPropertyName("id")]
public required int Id { get; set; }
// Set to null on private-profiles
[JsonPropertyName("publicId")]
public string? PublicId { get; set; }
// Set to null on private profiles
[JsonPropertyName("username")]
public string? Username { get; set; }
[JsonPropertyName("wageredAmount")]
public required float WageredAmount { get; set; }
[JsonPropertyName("public_profile")]
public required int PublicProfile { get; set; }
// Null when they have no rank
[JsonPropertyName("rank")]
public RainbetBetHistoryUserRankModel? Rank { get; set; }
}