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...
Darts.4807 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...
Darts.4807 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...
Darts.4807 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...
Darts.4807 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