public SearchResultItem(ItemDetails.ItemSearchResult item) { this.Name = item.Name; this.Id = item.Tag; this.Type = "item"; var isPet = IsPet(item); if (!item.Tag.StartsWith("POTION") && !isPet && !item.Tag.StartsWith("RUNE")) { IconUrl = "https://sky.lea.moe/item/" + item.Tag; } else { this.IconUrl = item.IconUrl; } if (isPet && !Name.Contains("Pet")) { this.Name += " Pet"; } this.HitCount = item.HitCount + ITEM_EXTRA_IMPORTANCE; if (ItemReferences.RemoveReforgesAndLevel(Name) != Name) { this.HitCount -= NOT_NORMALIZED_PENILTY; } }
public int GetOrCreateItemIdForAuction(SaveAuction auction, HypixelContext context) { var clearedName = ItemReferences.RemoveReforgesAndLevel(auction.ItemName); var tag = GetIdForName(auction.Tag ?? clearedName); if (tag != null && TagLookup.TryGetValue(tag, out int value)) { return(value); } Console.WriteLine($"Creating item {clearedName} ({auction.ItemName},{auction.Tag})"); // doesn't exist yet, create it var itemByTag = context.Items.Where(item => item.Tag == auction.Tag).FirstOrDefault(); if (itemByTag != null) { // new alternative name if (clearedName != null) { this.ReverseNames[clearedName] = auction.Tag; } TagLookup.Add(auction.Tag, itemByTag.Id); var exists = context.AltItemNames .Where(name => name.Name == clearedName && name.DBItemId == itemByTag.Id) .Any(); if (!exists) { context.AltItemNames.Add(new AlternativeName() { DBItemId = itemByTag.Id, Name = clearedName }); } return(itemByTag.Id); } Console.WriteLine($"!! completely new !! {JsonConvert.SerializeObject(auction)}"); // new Item //var tempAuction = new Hypixel.NET.SkyblockApi.Auction(){Category=auction.Category,}; //AddNewItem(tempAuction,auction.ItemName,auction.Tag,null); var item = new DBItem() { Tag = auction.Tag, Name = auction.ItemName, Names = new List <AlternativeName>() { new AlternativeName() { Name = auction.ItemName } } }; if (item.Tag == null) { // unindexable item return(MAX_MEDIUM_INT); } ToFillDetails[item.Tag] = item; return(AddItemToDB(item)); //throw new CoflnetException("can_add","can't add this item"); }
public void AddOrIgnoreDetails(Auction a) { var id = NBT.ItemID(a.ItemBytes); if (id == null) { if (a.ItemName == "Revive Stone") { // known item, has no tag, nothing to do return; } Logger.Instance.Error($"item has no tag {JsonConvert.SerializeObject(a)}"); return; } var name = ItemReferences.RemoveReforgesAndLevel(a.ItemName); if (ToFillDetails.TryRemove(id, out DBItem i)) { Console.WriteLine("Filling details for " + i.Tag + i.Id); AddNewItem(a, name, id, i); return; } if (Items.ContainsKey(id)) { var tragetItem = Items[id]; if (tragetItem.AltNames == null) { tragetItem.AltNames = new HashSet <string>(); } // try to get shorter lore if (Items[id]?.Description?.Length > a?.ItemLore?.Length && a.ItemLore.Length > 10) { Items[id].Description = a.ItemLore; } tragetItem.AltNames.Add(name); return; } // legacy item names if (Items.ContainsKey(name)) { var item = Items[name]; item.Id = id; if (item.AltNames == null) { item.AltNames = new HashSet <string>(); } item.AltNames.Add(name); Items[id] = item; Items.Remove(name); return; } // new item, add it AddNewItem(a, name, id, i); }
public static void Save(ItemReferences item) { if (item == null) { // silent return; } FileController.SaveAs("items/" + item.Name, item); }
static string RemoveReforgesAndEnchanted(string input) { var fullName = ItemReferences.RemoveReforgesAndLevel(input); if (fullName.StartsWith("Enchanted")) { fullName = fullName.Substring("Enchanted".Length); } return(fullName); }
public ItemIndexElement(SaveAuction auction) : this( auction.Uuid, auction.End, auction.HighestBidAmount, ItemReferences.GetReforges(auction.ItemName), auction.Enchantments, auction.Count, (short)auction.Bids.Count) { }
public string GetIdForName(string name) { if (name == null) { return("NULL"); } var normalizedName = ItemReferences.RemoveReforgesAndLevel(name); return(ReverseNames.GetValueOrDefault(normalizedName, normalizedName)); }
private static IEnumerable <ItemSearchResult> ToSearchResult(List <DBItem> items, string search) { var clearedSearch = ItemReferences.RemoveReforgesAndLevel(search); return(items .Select(item => new ItemSearchResult() { Name = (item.Names .Where(n => n?.Name != null && n.Name.ToLower().StartsWith(clearedSearch.ToLower())) .FirstOrDefault()?.Name) ?? (item.Name == item.Tag ? TagToName(item.Tag) : item.Name), Tag = item.Tag, IconUrl = item.IconUrl, HitCount = item.HitCount })); }
public void Load() { try { if (FileController.Exists("itemDetails")) { Items = FileController.LoadAs <Dictionary <string, Item> >("itemDetails"); } } catch (Exception) { FileController.Move("itemDetails", "corruptedItemDetails" + DateTime.Now.Ticks); } if (Items == null) { Items = new Dictionary <string, Item>(); } // correct keys foreach (var item in Items.Keys.ToList()) { if (Items[item].Id != item) { Items.TryAdd(Items[item].Id, Items[item]); Items.Remove(item); } } foreach (var item in Items) { if (item.Value.AltNames == null) { continue; } item.Value.AltNames = item.Value.AltNames?.Select(s => ItemReferences.RemoveReforgesAndLevel(s)).ToHashSet(); foreach (var name in item.Value.AltNames) { if (!ReverseNames.TryAdd(name, item.Key)) { // make a good guess, anyone? } } } }
/// <summary> /// Tries to find and return an item by name /// </summary> /// <param name="fullName">Full Item name</param> /// <returns></returns> public DBItem GetDetails(string fullName) { if (Items == null) { LoadFromDB(); } var cleanedName = ItemReferences.RemoveReforgesAndLevel(fullName); /*if (ReverseNames.TryGetValue(name, out string key) && * Items.TryGetValue(key, out Item value)) * { * return value; * }*/ using (var context = new HypixelContext()) { var id = GetItemIdForName(cleanedName, false); if (id == 0) { id = context.AltItemNames.Where(name => name.Name == fullName || name.Name == cleanedName) .Select(name => name.DBItemId).FirstOrDefault(); } if (id > 1) { var item = context.Items.Include(i => i.Names).Where(i => i.Id == id).First(); if (item.Names != null) { item.Names = item.Names.OrderBy(n => GetScoreFor(n)).ToList(); } item.Name = fullName; // cooler icons //if (!item.Tag.StartsWith("POTION") && !item.Tag.StartsWith("PET") && !item.Tag.StartsWith("RUNE")) // item.IconUrl = "https://sky.lea.moe/item/" + item.Tag; return(item); } } return(new DBItem() { Tag = "Unknown", Name = fullName }); }
public static ItemReferences GetOrCreateItemRef(string name, bool noWrite = false) { name = ItemReferences.RemoveReforgesAndLevel(name); if (TryFromCache <ItemReferences>(name, out ItemReferences result)) { return(result); } var path = "items/" + name; if (FileController.Exists(path)) { try{ var items = LoadAsLock <ItemReferences> (path, name); if (noWrite) { SaveToCache <ItemReferences>(name, items, s => {}); } else { SaveToCache <ItemReferences>(name, items, Save); } return(items); } catch (Exception) { // move it Console.WriteLine(name); Console.WriteLine(name); throw; } } else { var items = new ItemReferences() { Name = name }; SaveToCache <ItemReferences>(name, items, Save); return(items); } }