diff --git a/CSGencodes.Core/CSGencodes.Core.csproj b/CSGencodes.Core/CSGencodes.Core.csproj index 563712f9..355583ac 100644 --- a/CSGencodes.Core/CSGencodes.Core.csproj +++ b/CSGencodes.Core/CSGencodes.Core.csproj @@ -14,8 +14,8 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSGencodes.Core/Services/MarketplaceService.cs b/CSGencodes.Core/Services/MarketplaceService.cs new file mode 100644 index 00000000..83b58232 --- /dev/null +++ b/CSGencodes.Core/Services/MarketplaceService.cs @@ -0,0 +1,170 @@ +using CSGencodes.Core.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Web; + +namespace CSGencodes.Core.Services +{ + public class MarketplaceService + { + /// + /// Generates a Steam Community Market URL which searchs for all skins with the selected stickers. + /// + /// + public string GetSteamMarketUrl(List appliedStickers) + { + if (appliedStickers.Count == 0) + { + return string.Empty; + } + + StringBuilder sb = new(); + sb.Append("https://steamcommunity.com/market/search?q="); + + string query = HttpUtility.UrlEncode($"\"{string.Join(",", appliedStickers.Select(x => x.name))}\""); + + sb.Append(query); + sb.Append("&descriptions=1&category_730_ItemSet%5B%5D=any&category_730_Weapon%5B%5D=any&category_730_Quality%5B%5D=#p1_price_asc"); + + string url = sb.ToString(); + + return url; + } + public string GetSkinbidUrl(List appliedStickers) + { + if (appliedStickers.Count == 0) + { + return string.Empty; + } + + StringBuilder sb = new(); + sb.Append("https://skinbid.com/listings?Stickers=false,"); + + string query = $"{string.Join(",", appliedStickers.Select(x => x.gen_id))}"; + + sb.Append(query); + + string url = sb.ToString(); + + return url; + } + public string? GetBuff163Url(List appliedStickers) + { + // Example: https://buff.163.com/market/csgo#tab=selling&page_num=1&extra_tag_ids=16226,16226,16226,16226 + List searchIds = []; + if (appliedStickers.Count != 0) + { + foreach (var sticker in appliedStickers) + { + if (sticker.BuffStickerId is not null) + { + searchIds.Add((int)sticker.BuffStickerId); + } + } + } + + if (searchIds.Count == 0) + { + return null; + } + + return $"https://buff.163.com/market/csgo#tab=selling&page_num=1&extra_tag_ids={String.Join(",", searchIds)}"; + } + public string GetSkinportUrl(List appliedStickers) + { + if (appliedStickers.Count == 0) + { + return string.Empty; + } + + StringBuilder sb = new(); + sb.Append("https://skinport.com/market?sticker="); + + string query = $"{string.Join("%2C", appliedStickers.Select(x => x.name.Replace(" ", "+")))}"; + + sb.Append(query); + + sb.Append("&r=erdbeerchen02"); + + + string url = sb.ToString(); + + return url; + } + + + public string GetCsfloatDatabaseUrl(Weapon? selectedWeapon, List appliedStickers) + { + // Example: https://csfloat.com/db?defIndex=7&paintIndex=282&min=0.1&max=0.7&stickers=%5B%7B%22i%22:%225015%22%7D,%7B%22i%22:%225015%22%7D,%7B%22i%22:%225015%22%7D,%7B%22i%22:%225015%22%7D%5D + StringBuilder sb = new(); + sb.Append("https://csfloat.com/db?"); + + List parameters = new(); + + if (selectedWeapon is not null) + { + parameters.Add($"defIndex={selectedWeapon.weapon_id}"); + parameters.Add($"paintIndex={selectedWeapon.gen_id}"); + } + + if (appliedStickers.Count != 0) + { + // Example: [{"i":"5015"},{"i":"5015"},{"i":"5015"},{"i":"5015"}] + var stickers = appliedStickers.Take(4); + List sticker_values = new(); + foreach (var sticker in stickers) + { + sticker_values.Add($"{{\"i\":\"{sticker.gen_id}\"}}"); + } + + + parameters.Add($"stickers=[{string.Join(",", sticker_values)}]"); + } + + + if (parameters.Count == 0) + { + return string.Empty; + } + + sb.Append(string.Join("&", parameters)); + + return sb.ToString(); + } + + public string GetCsfloatUrl(List appliedStickers) + { + StringBuilder sb = new(); + sb.Append("https://csfloat.com/search?"); + + List parameters = new(); + + if (appliedStickers.Count != 0) + { + // Example: [{"i":"5015"},{"i":"5015"},{"i":"5015"},{"i":"5015"}] + var stickers = appliedStickers.Take(4); + List sticker_values = new(); + foreach (var sticker in stickers) + { + sticker_values.Add($"{{\"i\":\"{sticker.gen_id}\"}}"); + } + + + parameters.Add($"stickers=[{string.Join(",", sticker_values)}]"); + } + + + if (parameters.Count == 0) + { + return string.Empty; + } + + sb.Append(string.Join("&", parameters)); + + return sb.ToString(); + } + } +} diff --git a/CSGencodes/CSGencodes.csproj b/CSGencodes/CSGencodes.csproj index 6c7a09ea..c27f952c 100644 --- a/CSGencodes/CSGencodes.csproj +++ b/CSGencodes/CSGencodes.csproj @@ -8,9 +8,9 @@ - - - + + + diff --git a/CSGencodes/Client/Program.cs b/CSGencodes/Client/Program.cs index e58c50e8..ba941749 100644 --- a/CSGencodes/Client/Program.cs +++ b/CSGencodes/Client/Program.cs @@ -36,6 +36,7 @@ public static async Task Main(string[] args) builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); + builder.Services.AddScoped(); builder.Services.AddBlazorBootstrap(); await builder.Build().RunAsync(); diff --git a/CSGencodes/Pages/Changelog.razor b/CSGencodes/Pages/Changelog.razor index f17df9d8..52ae6ea3 100644 --- a/CSGencodes/Pages/Changelog.razor +++ b/CSGencodes/Pages/Changelog.razor @@ -9,6 +9,15 @@

Changelog

    +
  • + 2024-03-26 +
      +
    • Added search on Skinbid
    • +
    • Added search on csfloat market
    • +
    • Added dedicated button for csfloat database
    • +
    • Updated URLs from csgofloat to csfloat
    • +
    +
  • 2024-03-22
      diff --git a/CSGencodes/Pages/Index.razor b/CSGencodes/Pages/Index.razor index a8a1cb25..e4d27d01 100644 --- a/CSGencodes/Pages/Index.razor +++ b/CSGencodes/Pages/Index.razor @@ -3,6 +3,7 @@ @inject WeaponService weaponService @inject StickerService stickerService @inject InspectLinkService inspectService +@inject MarketplaceService marketplaceService CS2 Gencode Generator @@ -104,18 +105,24 @@
+ csfloat database

Search marketplace

- Steam market - csfloat - @if (!string.IsNullOrEmpty(GetBuff163Url())) + Steam market + csfloat + @if (!string.IsNullOrEmpty(marketplaceService.GetBuff163Url(SelectedStickers))) { - Buff163 + Buff163 } - @if (!string.IsNullOrEmpty(GetSkinportUrl())) + @if (!string.IsNullOrEmpty(marketplaceService.GetSkinportUrl(SelectedStickers))) { - Skinport + Skinport + } + + @if (!string.IsNullOrEmpty(marketplaceService.GetSkinbidUrl(SelectedStickers))) + { + Skinbid } } diff --git a/CSGencodes/Pages/Index.razor.cs b/CSGencodes/Pages/Index.razor.cs index 648c533c..4c1484c8 100644 --- a/CSGencodes/Pages/Index.razor.cs +++ b/CSGencodes/Pages/Index.razor.cs @@ -97,90 +97,11 @@ private void OnStickerClicked(Sticker sticker) } } - /// - /// Generates a Steam Community Market URL which searchs for all skins with the selected stickers. - /// - /// - private string GetSteamMarketUrl() - { - if (SelectedStickers.Count == 0) - { - return string.Empty; - } - - StringBuilder sb = new(); - sb.Append("https://steamcommunity.com/market/search?q="); - - string query = HttpUtility.UrlEncode($"\"{string.Join(",", SelectedStickers.Select(x => x.name))}\""); - - sb.Append(query); - sb.Append("&descriptions=1&category_730_ItemSet%5B%5D=any&category_730_Weapon%5B%5D=any&category_730_Quality%5B%5D=#p1_price_asc"); - - string url = sb.ToString(); - - return url; - } - - private string GetSkinportUrl() - { - if (SelectedStickers.Count == 0) - { - return string.Empty; - } - - StringBuilder sb = new(); - sb.Append("https://skinport.com/market?sticker="); - - string query = $"{string.Join("%2C", SelectedStickers.Select(x => x.name.Replace(" ", "+")))}"; - - sb.Append(query); - - sb.Append("&r=erdbeerchen02"); - - - string url = sb.ToString(); - - return url; - } - - private string GetCsgofloatUrl() - { - // Example: https://csgofloat.com/db?defIndex=7&paintIndex=282&min=0.1&max=0.7&stickers=%5B%7B%22i%22:%225015%22%7D,%7B%22i%22:%225015%22%7D,%7B%22i%22:%225015%22%7D,%7B%22i%22:%225015%22%7D%5D - StringBuilder sb = new(); - sb.Append("https://csgofloat.com/db?"); - - List parameters = new(); - - if (SelectedWeapon is not null) - { - parameters.Add($"defIndex={SelectedWeapon.weapon_id}"); - parameters.Add($"paintIndex={SelectedWeapon.gen_id}"); - } + - if (SelectedStickers.Count != 0) - { - // Example: [{"i":"5015"},{"i":"5015"},{"i":"5015"},{"i":"5015"}] - var stickers = SelectedStickers.Take(4); - List sticker_values = new(); - foreach (var sticker in stickers) - { - sticker_values.Add($"{{\"i\":\"{sticker.gen_id}\"}}"); - } - - - parameters.Add($"stickers=[{string.Join(",", sticker_values)}]"); - } + - - if (parameters.Count == 0) - { - return string.Empty; - } - - sb.Append(string.Join("&", parameters)); - - return sb.ToString(); - } + private void RemoveLastSticker() { @@ -193,28 +114,7 @@ private void SortSelectedStickers() SelectedStickers.Sort((x, y) => x.PosId.CompareTo(y.PosId)); } - private string? GetBuff163Url() - { - // Example: https://buff.163.com/market/csgo#tab=selling&page_num=1&extra_tag_ids=16226,16226,16226,16226 - List searchIds = []; - if (SelectedStickers.Count != 0) - { - foreach (var sticker in SelectedStickers) - { - if (sticker.BuffStickerId is not null) - { - searchIds.Add((int)sticker.BuffStickerId); - } - } - } - if (searchIds.Count == 0) - { - return null; - } - - return $"https://buff.163.com/market/csgo#tab=selling&page_num=1&extra_tag_ids={String.Join(",", searchIds)}"; - } private async Task OnStickerWearingChange(ChangeEventArgs e, AppliedSticker sticker) { @@ -223,8 +123,5 @@ private async Task OnStickerWearingChange(ChangeEventArgs e, AppliedSticker stic sticker.Scratched = newValue; } - private async Task OnStickerRotationChange(ChangeEventArgs e, AppliedSticker sticker) - { - } } } \ No newline at end of file