Aggiornamento alla versione 4.0.0

* Aggiunto `BooleanToOpacityConverter` per gestire opacità dinamica.
* Introdotto nuovo sistema di timing con `BidBeforeDeadlineMs`.
* Aggiunta opzione `CheckAuctionOpenBeforeBid` per maggiore sicurezza.
* Implementato polling adattivo (10ms-1000ms) e cooldown di 800ms.
* Migliorata gestione pulsanti globali con supporto `AUTO-START`/`AUTO-STOP`.
* Fix per il tasto `Canc` e focus automatico sul `DataGrid`.
* Fix per avvio singola asta senza necessità di "Avvia Tutti".
* Aggiornati formati CSV/JSON/XML con nuovi campi.
* Migliorata gestione cookie con endpoint unico `buy_bids.php`.
* Miglioramenti UI/UX: tooltip, formattazione prezzi, feedback visivo.
* Aggiornata documentazione e changelog per la versione 4.0.0.
This commit is contained in:
Alberto Balbo
2025-11-19 18:43:40 +01:00
parent 6036896f7d
commit f017ec0364
27 changed files with 2281 additions and 1069 deletions

View File

@@ -16,8 +16,18 @@ namespace AutoBidder.Models
public string OriginalUrl { get; set; } = ""; // URL completo dell'asta (per referer)
// Configurazione asta
public int TimerClick { get; set; } = 0; // Secondo del timer per click (default 0)
public int DelayMs { get; set; } = 50; // Ritardo aggiuntivo in ms (per compensare latenza)
/// <summary>
/// Millisecondi prima della scadenza (deadline) per inviare la puntata.
/// Es: 200ms = punta 200ms prima che il timer raggiunga 0.
/// </summary>
public int BidBeforeDeadlineMs { get; set; } = 200;
/// <summary>
/// Se true, verifica che l'asta sia ancora aperta prima di piazzare la puntata.
/// Aggiunge una chiamata API extra ma aumenta la sicurezza.
/// </summary>
public bool CheckAuctionOpenBeforeBid { get; set; } = false;
public double MinPrice { get; set; } = 0;
public double MaxPrice { get; set; } = 0;
public int MinResets { get; set; } = 0; // Numero minimo reset prima di puntare
@@ -40,8 +50,6 @@ namespace AutoBidder.Models
public List<BidHistory> BidHistory { get; set; } = new List<BidHistory>();
public Dictionary<string, BidderInfo> BidderStats { get; set; } = new(StringComparer.OrdinalIgnoreCase);
// Legacy (deprecato) - removed `Bidders` dictionary; use `BidderStats` instead
// Log per-asta (non serializzato)
[System.Text.Json.Serialization.JsonIgnore]
public List<string> AuctionLog { get; set; } = new();
@@ -50,17 +58,12 @@ namespace AutoBidder.Models
[System.Text.Json.Serialization.JsonIgnore]
public bool IsAttackInProgress { get; set; } = false;
// Quando viene considerato il "final attack" (secondi)
// Se il timer dell'asta scende sotto questo valore, viene eseguita la puntata finale.
// Default 0.8s per anticipare leggermente rispetto al valore precedente di 0.5s.
public double FinalAttackThresholdSec { get; set; } = 0.8;
/// <summary>
/// Aggiunge una voce al log dell'asta
/// </summary>
public void AddLog(string message)
{
var entry = $"{DateTime.Now:HH:mm:ss} - {message}";
var entry = $"{DateTime.Now:HH:mm:ss.fff} - {message}";
AuctionLog.Add(entry);
// Mantieni solo ultimi 500 log

View File

@@ -3,7 +3,7 @@ using System;
namespace AutoBidder.Models
{
/// <summary>
/// Sessione Bidoo con token di autenticazione
/// Sessione Bidoo con token di autenticazione e dati utente completi
/// </summary>
public class BidooSession
{
@@ -24,11 +24,31 @@ namespace AutoBidder.Models
/// </summary>
public string Username { get; set; } = "";
/// <summary>
/// Email dell'utente
/// </summary>
public string Email { get; set; } = "";
/// <summary>
/// Numero di telefono dell'utente
/// </summary>
public string Phone { get; set; } = "";
/// <summary>
/// ID numerico univoco dell'utente
/// </summary>
public int UserId { get; set; } = 0;
/// <summary>
/// Puntate rimanenti sull'account
/// </summary>
public int RemainingBids { get; set; } = 0;
/// <summary>
/// Credito disponibile nel Bidoo Shop (€)
/// </summary>
public double ShopCredit { get; set; } = 0.0;
/// <summary>
/// Timestamp ultimo aggiornamento info account
/// </summary>
@@ -46,3 +66,4 @@ namespace AutoBidder.Models
}
}