GODh.3892 Posted September 20, 2020 Share Posted September 20, 2020 I am playing a bit with the gw2 API and i am building a tool that allows me to search for pshyical items (in my bank, bags, equipment, material storage, etc). The result also shows a link to the item on wikipedia. But that sometimes fails, because i am using the item's name that the API gives me. That often works well, but sometimes it does not... Example: (name according to API) Cosmic Mining Tool --> replace spaces with underscores -> Cosmic_Mining_Tool --> wikipedia (english): https://wiki.guildwars2.com/wiki/Cosmic_Mining_Tool (correct) But for some items, especially skins, this goes wrong: Example: (name according to API) Exalted Shoulders --> replace spaces with underscores -> Exalted_Shoulders --> wikipedia (english): https://wiki.guildwars2.com/wiki/Exalted_Shoulders (fails) The last example fails as the correct page for Exalted Shoulders is https://wiki.guildwars2.com/wiki/Exalted_Shoulders_Skin (_Skin added) A more safe way to find an item is via searching via the gamelink (like [&AgGaXwEA]) but afaik you cant do that while combining it with https://wiki.guildwars2.com/wiki/, so https://wiki.guildwars2.com/wiki/[&AgGaXwEA] fails... :s Anyone knows a good way to do this correctly? Thanks in advance <3 Link to comment Share on other sites More sharing options...
WIR BRAUCHEN ONE EIGHTY.42 Posted September 20, 2020 Share Posted September 20, 2020 > @"GODh.3892" said: > A more safe way to find an item is via searching via the gamelink (like [&AgGaXwEA]) but afaik you cant do that while combining it with https://wiki.guildwars2.com/wiki/, so https://wiki.guildwars2.com/wiki/[&AgGaXwEA] fails... :s > > Anyone knows a good way to do this correctly? > > Thanks in advance <3 Something like this: https:/ /wiki.guildwars2.com/index.php?title=Special%3ASearch&search=%5B%26AgGaXwEA%5D&go=Go Link to comment Share on other sites More sharing options...
GODh.3892 Posted September 20, 2020 Author Share Posted September 20, 2020 That seems to work, thank you <3 This does not solve all my wiki problems as that gamelink is not always available (especially when item is transmuted and i want the link for the new skin), but at least its solves a part of my problems :3 Link to comment Share on other sites More sharing options...
WIR BRAUCHEN ONE EIGHTY.42 Posted September 20, 2020 Share Posted September 20, 2020 > @"GODh.3892" said: > That seems to work, thank you <3 > > This does not solve all my wiki problems as that gamelink is not always available (especially when item is transmuted and i want the link for the new skin), but at least its solves a part of my problems :3 I think this could help, but you need to do a bit of math to get skin link separately: https://wiki.guildwars2.com/wiki/Chat_link_format#Wardrobe_skins_and_upgrades Link to comment Share on other sites More sharing options...
GODh.3892 Posted September 20, 2020 Author Share Posted September 20, 2020 Thank you. I think i have the skins covered but the API does not provide a gamelink for skins. Link to comment Share on other sites More sharing options...
GODh.3892 Posted September 20, 2020 Author Share Posted September 20, 2020 Ok, i think i got it working (no guarantees, but so far, i dont see any wrong wiki pages anymore). Thanks for the help <3 Link to comment Share on other sites More sharing options...
WIR BRAUCHEN ONE EIGHTY.42 Posted September 20, 2020 Share Posted September 20, 2020 > @"GODh.3892" said: > Ok, i think i got it working (no guarantees, but so far, i dont see any wrong wiki pages anymore). Thanks for the help <3 Ok, glad it worked. Just for information, you can get chatlink from item/skin number from api. For example: Skin number - 7490, in hex 1D42, it's a skin so first byte is 0x0A (Wardrobe link), so full hex string is 0A 42 1D 00 00, convert it to base64 - CkIdAAA=, chat link is [&CkIdAAA=] Link to comment Share on other sites More sharing options...
GODh.3892 Posted September 20, 2020 Author Share Posted September 20, 2020 > @"WIR BRAUCHEN ONE EIGHTY.4257" said: > Skin number - 7490, in hex 1D42, it's a skin so first byte is 0x0A (Wardrobe link), so full hex string is 0A 42 1D 00 00, convert it to base64 - CkIdAAA=, chat link is [&CkIdAAA=] Ok, that sounds interesting, but i have little experience in that direction (C#). In my app i know its a skin and i know it's skin-id, but after that i kinda lost you :'( Link to comment Share on other sites More sharing options...
WIR BRAUCHEN ONE EIGHTY.42 Posted September 20, 2020 Share Posted September 20, 2020 > @"GODh.3892" said: > Ok, that sounds interesting, but i have little experience in that direction (C#). In my app i know its a skin and i know it's skin-id, but after that i kinda lost you :'( I wrote some code in C#: > int skin_id = 5583; > skin_id <<= 8; > skin_id |= 0X0A; > > byte[] bytes = BitConverter.GetBytes(skin_id); > > string chat_link; > > int addition = 0; > > if(skin_id > 0XFFFF) > addition = 2; > if(skin_id > 0XFF) > addition = 1; > > byte[] newBytes = new byte[bytes.Length + addition]; > bytes.CopyTo(newBytes, 0); > chat_link = Convert.ToBase64String(newBytes); Tried it with online compiler and it's working. Don't expect it to be perfect, I'm C++ programmer and have very little knowledge of C#. Link to comment Share on other sites More sharing options...
GODh.3892 Posted September 20, 2020 Author Share Posted September 20, 2020 Thank you very much! This seems to work perfectly <3 Part of my log: 20:10:18: DEBUG created chatlink for item: 8319 name: 'Springer Kit Backpack' chatlink: [&Cn8gAAA=] 20:10:18: DEBUG created chatlink for item: 1253 name: 'Flamekissed Vest' chatlink: [&CuUEAAA=] 20:10:18: DEBUG created chatlink for item: 1255 name: 'Flamekissed Shoes' chatlink: [&CucEAAA=] 20:10:18: DEBUG created chatlink for item: 1257 name: 'Flamekissed Gloves' chatlink: [&CukEAAA=] 20:10:19: DEBUG created chatlink for item: 1258 name: 'Flamekissed Mask' chatlink: [&CuoEAAA=] 20:10:19: DEBUG created chatlink for item: 1254 name: 'Flamekissed Pants' chatlink: [&CuYEAAA=] 20:10:19: DEBUG created chatlink for item: 1256 name: 'Flamekissed Mantle' chatlink: [&CugEAAA=] 20:10:20: DEBUG created chatlink for item: 4666 name: 'Kraitkin' chatlink: [&CjoSAAA=] I think i am decent with data, but this bit/byte stuff is a bit above my head. Your help is very appreciated :3 Link to comment Share on other sites More sharing options...
GODh.3892 Posted September 20, 2020 Author Share Posted September 20, 2020 I still see a "small" problem. If the chatlink contains a + sign then the link looks ok (with the plus), but once in wiki (search mode) then the + is gone (it looks like it got replaced by a space) and wiki can't find it. Is there a way to avoid this? :'( Link to comment Share on other sites More sharing options...
GODh.3892 Posted September 21, 2020 Author Share Posted September 21, 2020 Replacing + with %B2 did the trick :# Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now