These forums have been archived and are now read-only.

The new forums are live and can be found at https://forums.eveonline.com/

EVE Technology Lab

 
  • Topic is locked indefinitely.
 

Requesting some data from anyone who uses EveMon

Author
HotDogRebel
Sebiestor Tribe
Minmatar Republic
#1 - 2013-04-08 20:32:09 UTC
Hey guys, I'm working on something regarding notifications and the API. As some of you may know, the NotificationTexts.xml file doesn't store the full message for a notification like the MailBodies.xml file does. It stores data in (I think?) yaml and it's full of IDs and variable names that are hard to predict that vary based on notification type.

For the project I'm working on, I'm trying to make the raw-ish data in the notification texts a little more readable by doing some lookups on the IDs that are provided. The difficult thing is knowing what the variable names in those messages are.

SO, for anyone who uses EveMon, if you'd be willing to go to the notifications section and double click on one of each type of notification you have there, and copy+paste the text (as well the type of notification it is) to me in a private message (or here), I'd be very grateful.

If you're worried that there may be data in there that you don't want to share, I'd still be happy to receive the names of the variables without the values associated with them.

Also, once I'm done with this project, I'm going to somehow get it on wiki.eve-id.net to complement this page: http://wiki.eve-id.net/APIv2_Char_Notifications_XML because as far as I can tell, no collection of the parameters for each notification id exists.
Tonto Auri
Vhero' Multipurpose Corp
#2 - 2013-04-08 21:51:11 UTC
I think, you can get more direct results straight from EVEMon code.

Two most common elements in the universe are hydrogen and stupidity. -- Harlan Ellison

Ydnari
Estrale Frontiers
#3 - 2013-04-08 22:32:32 UTC
Tonto Auri wrote:
I think, you can get more direct results straight from EVEMon code.


He wants data, that's not in the code. Unless a trunk version of EVEMon has added templates for all of the notification types. The release version certainly doesn't.

--

Ydnari
Estrale Frontiers
#4 - 2013-04-08 22:34:47 UTC
HotDogRebel wrote:
Hey guys, I'm working on something regarding notifications and the API. As some of you may know, the NotificationTexts.xml file doesn't store the full message for a notification like the MailBodies.xml file does. It stores data in (I think?) yaml and it's full of IDs and variable names that are hard to predict that vary based on notification type.


Excellent, particularly if you are going to contribute this back to the community on that wiki page. It's sad that the list of even notification types, let alone the data, has to be reverse engineered by the community.

I have a fair few notification XML files archived, I'll see if I can extract any useful anonymised data out of it for you in the next few days. I definitely don't have all the notification types though so hopefully others will chip in too.

--

ItsmeHcK1
Immortalis Inc.
Shadow Cartel
#5 - 2013-04-13 00:48:55 UTC
I ran into the same problem while developing my API checker.
Here's what I got so far: (nowhere near complete)

ID's:
Quote:
{2, "Character deleted"},
{3, "Give medal to character"},
{4, "Alliance maintenance bill"},
{5, "Alliance war declared"},
{6, "Alliance war surrender"},
{7, "Alliance war retracted"},
{8, "Alliance war invalidated by Concord"},
{9, "Bill issued to a character"},
{10, "Bill issued to corporation or alliance"},
{11, "Bill not paid because there's not enough ISK available"},
{12, "Bill, issued by a character, paid"},
{13, "Bill, issued by a corporation or alliance, paid"},
{14, "Bounty claimed"},
{15, "Clone activated"},
{16, "New corp member application"},
{17, "Corp application rejected"},
{18, "Corp application accepted"},
{19, "Corp tax rate changed"},
{20, "Corp news report, typically for shareholders"},
{21, "Player leaves corp"},
{22, "Corp news, new CEO"},
{23, "Corp dividend/liquidation, sent to shareholders"},
{24, "Corp dividend payout, sent to shareholders"},
{25, "Corp vote created"},
{26, "Corp CEO votes revoked during voting"},
{27, "Corp declares war"},
{28, "Corp war has started"},
{29, "Corp surrenders war"},
{30, "Corp retracts war"},
{31, "Corp war invalidated by Concord"},
{32, "Container password retrieval"},
{33, "Contraband or low standings cause an attack or items being confiscated"},
{34, "First ship insurance"},
{35, "Ship destroyed, insurance payed"},
{36, "Insurance contract invalidated/runs out"},
{37, "Sovereignty claim fails (alliance)"},
{38, "Sovereignty claim fails (corporation)"},
{39, "Sovereignty bill late (alliance)"},
{40, "Sovereignty bill late (corporation)"},
{41, "Sovereignty claim lost (alliance)"},
{42, "Sovereignty claim lost (corporation)"},
{43, "Sovereignty claim acquired (alliance)"},
{44, "Sovereignty claim acquired (corporation)"},
{45, "Alliance anchoring alert"},
{46, "Alliance structure turns vulnerable"},
{47, "Alliance structure turns invulnerable"},
{48, "Sovereignty disruptor anchored"},
{49, "Structure won/lost"},
{50, "Corp office lease expiration notice"},
{51, "Clone contract revoked by station manager"},
{52, "Corp member clones moved between stations"},
{53, "Clone contract revoked by station manager"},
{54, "Insurance contract expired"},
{55, "Insurance contract issued"},
{56, "Jump clone destroyed"},
{57, "Jump clone destroyed"},
{58, "Corporation joining factional warfare"},
{59, "Corporation leaving factional warfare"},
{60, "Corporation kicked from factional warfare on startup because of too low standing to the faction"},
{61, "Character kicked from factional warfare on startup because of too low standing to the faction"},
{62, "Corporation in factional warfare warned on startup because of too low standing to the faction"},
{63, "Character in factional warfare warned on startup because of too low standing to the faction"},
{64, "Character loses factional warfare rank"},
{65, "Character gains factional warfare rank"},
{66, "Agent has moved"},
{67, "Mass transaction reversal message"},
{68, "Reimbursement message"},
{69, "Agent locates a character"},
{70, "Research mission becomes available from an agent"},
{71, "Agent mission offer expires"},
{72, "Agent mission times out"},
{73, "Agent offers a storyline mission"},
{74, "Tutorial message sent on character creation"},
{75, "Tower alert"},
{76, "Tower resource alert"},
{77, "Station aggression message"},
{78, "Station state change message"},
{79, "Station conquered message"},
{80, "Station aggression message"},
{81, "Corporation requests joining factional warfare"},
{82, "Corporation requests leaving factional warfare"},
{83, "Corporation withdrawing a request to join factional warfare"},
{84, "Corporation withdrawing a request to leave factional warfare"},
{85, "Corporation liquidation"},
{86, "Territorial Claim Unit under attack"},
{87, "Sovereignty Blockade Unit under attack"},
{88, "Infrastructure Hub under attack"},
{89, "Contact notification"},
{93, "Customs office has been attacked"},
{94, "Customs office has entered reinforced"},
{95, "Customs office has been transferred "},
{112, "Bounty placed"},
{115, "Kill right made available"},
{116, "Kill right made available to all"},
{119, "Kill right made unavailable"}



ItsmeHcK1
Immortalis Inc.
Shadow Cartel
#6 - 2013-04-13 00:50:18 UTC  |  Edited by: ItsmeHcK1
As for the text part, I'm not entirely sure about the format, but I guess YAML is as close as it's gonna get without an official answer.
I parse it using regular expressions with ([a-zA-Z]+): (.+)
Notable exception being ID 16 - corp application, which contains a variable called applicationText, which may span multiple lines, but isn't the last variable in the list.
Also, some values may end up as null, even though there's no possible scenario when those should be null. I just flat out ignore those cases.

As for the body, there's a LOT of variables, most I haven't even encountered yet. Since I'm a lazy bastard and it's a LOT of stuff, I have simply copied my C# code, available here.
The comments next to each switch case explain the names and types of the variables involved.

P.S.: Note that some variables are complete and utter ****. For example, the war notifications all have delayHours and hostileState variables, which seem to just be random at most times. (you can see in my code which ones I ignore)
Same thing for insurance; unless you have a proper record of previous assets, you'll never know what the itemID means.
aa bbcc
Republic University
Minmatar Republic
#7 - 2013-04-13 12:52:41 UTC  |  Edited by: aa bbcc
This is a JOIN of charNotifications and charNotificationsTexts from my Yapeal database:
Quote:
[
{
'ownerID' : xxxxxxx,
'notificationID' : 401366958,
'read' : 1,
'senderID' : xxxxxxx,
'sentDate' : '2013-01-11 15:28:00',
'typeID' : 5,
'ownerID' : xxxxxxx,
'notificationID' : 401366958,
'text' : 'againstID: xxxxxxx\ncost: 0\ndeclaredByID: xxxxxxx\ndelayHours: 24\nhostileState: 0\n'
},
{
'ownerID' : xxxxxxx,
'notificationID' : 401703067,
'read' : 1,
'senderID' : xxxxxxx,
'sentDate' : '2013-01-13 23:16:00',
'typeID' : 5,
'ownerID' : xxxxxxx,
'notificationID' : 401703067,
'text' : 'againstID: xxxxxxx\ncost: 0\ndeclaredByID: xxxxxxx\ndelayHours: 24\nhostileState: 0\n'
},
{
'ownerID' : xxxxxxx,
'notificationID' : 408077114,
'read' : 0,
'senderID' : xxxxxxx,
'sentDate' : '2013-03-03 00:06:00',
'typeID' : 5,
'ownerID' : xxxxxxx,
'notificationID' : 408077114,
'text' : 'againstID: xxxxxxx\ncost: 0\ndeclaredByID: xxxxxxx\ndelayHours: 24\nhostileState: 0\n'
},
{
'ownerID' : xxxxxxx,
'notificationID' : 401422520,
'read' : 1,
'senderID' : xxxxxxx,
'sentDate' : '2013-01-11 23:59:00',
'typeID' : 7,
'ownerID' : xxxxxxx,
'notificationID' : 401422520,
'text' : 'againstID: xxxxxxx\ncost: null\ndeclaredByID: xxxxxxx\ndelayHours: null\nhostileState: null\n'
},
{
'ownerID' : xxxxxxx,
'notificationID' : 402548119,
'read' : 0,
'senderID' : xxxxxxx,
'sentDate' : '2013-01-20 23:26:00',
'typeID' : 8,
'ownerID' : xxxxxxx,
'notificationID' : 402548119,
'text' : 'againstID: xxxxxxx\ncost: null\ndeclaredByID: xxxxxxx\ndelayHours: null\nhostileState: null\n'
},
{
'ownerID' : xxxxxxx,
'notificationID' : 409002356,
'read' : 1,
'senderID' : xxxxxxx,
'sentDate' : '2013-03-10 00:33:00',
'typeID' : 8,
'ownerID' : xxxxxxx,
'notificationID' : 409002356,
'text' : 'againstID: xxxxxxx\ncost: null\ndeclaredByID: xxxxxxx\ndelayHours: null\nhostileState: null\n'
},
{
'ownerID' : xxxxxxx,
'notificationID' : 359060688,
'read' : 1,
'senderID' : xxxxxxx,
'sentDate' : '2011-11-03 12:57:00',
'typeID' : 16,
'ownerID' : xxxxxxx,
'notificationID' : 359060688,
'text' : 'applicationText: \'\'\ncharID: xxxxxxx\ncorpID: xxxxxxx\n'
},
{
'ownerID' : xxxxxxx,
'notificationID' : 359060703,
'read' : 1,
'senderID' : xxxxxxx,
'sentDate' : '2011-11-03 12:57:00',
'typeID' : 18,
'ownerID' : xxxxxxx,
'notificationID' : 359060703,
'text' : 'applicationText: \'\'\ncharID: xxxxxxx\ncorpID: xxxxxxx\n'
},
{
'ownerID' : xxxxxxx,
'notificationID' : 358677784,
'read' : 1,
'senderID' : xxxxxxx,
'sentDate' : '2011-10-30 01:12:00',
'typeID' : 34,
'ownerID' : xxxxxxx,
'notificationID' : 358677784,
'text' : 'isHouseWarmingGift: 1\nshipTypeID: 601\n'
},
{
'ownerID' : xxxxxxx,
'notificationID' : 358676758,
'read' : 1,
'senderID' : xxxxxxx,
'sentDate' : '2011-10-30 00:56:00',
'typeID' : 35,
'ownerID' : xxxxxxx,
'notificationID' : 358676758,
'text' : 'amount: xxxxxxxx\nitemID: xxxxxxxx\npayout: 1\n'
},
{
'ownerID' : xxxxxxx,
'notificationID' : 399643586,
'read' : 1,
'senderID' : xxxxxxx,
'sentDate' : '2012-12-28 05:01:00',
'typeID' : 52,
'ownerID' : xxxxxxx,
'notificationID' : 399643586,
'text' : 'charsInCorpID: xxxxxxx\ncorpID: xxxxxxx\nnewStationID: xxxxxxx\nstationID: xxxxxxx\n'
},
{
'ownerID' : xxxxxxx,
'notificationID' : 367102137,
'read' : 1,
'senderID' : xxxxxxx,
'sentDate' : '2012-01-28 18:49:00',
'typeID' : 73,
'ownerID' : xxxxxxx,
'notificationID' : 367102137,
'text' : '{}\n'
},
{
'ownerID' : xxxxxxx,
'notificationID' : 365551434,
'read' : 1,
'senderID' : xxxxxxx,
'sentDate' : '2012-01-12 20:48:00',
'typeID' : 89,
'ownerID' : xxxxxxx,
'notificationID' : 365551434,
'text' : 'level: 10\nmessage: \'\'\n'
},
{
'ownerID' : xxxxxxx,
'notificationID' : 367506078,
'read' : 1,
'senderID' : xxxxxxx,
'sentDate' : '2012-02-01 23:37:00',
'typeID' : 89,
'ownerID' : xxxxxxx,
'notificationID' : 367506078,
'text' : 'level: 0\nmessage: \'\'\n'
},
{
'ownerID' : xxxxxxx,
'notificationID' : 403678072,
'read' : 0,
'senderID' : xxxxxxx,
'sentDate' : '2013-01-29 18:38:00',
'typeID' : 89,
'ownerID' : xxxxxxx,
'notificationID' : 403678072,
'text' : 'level: 10\nmessage: \'\'\n'
},
{
'ownerID' : xxxxxxx,
'notificationID' : 411517815,
'read' : 1,
'senderID' : xxxxxxx,
'sentDate' : '2013-03-29 22:11:00',
'typeID' : 112,
'ownerID' : xxxxxxx,
'notificationID' : 411517815,
'text' : 'bounty: 100000.0\nbountyPlacerID: xxxxxxx\n'
},
{
'ownerID' : xxxxxxx,
'notificationID' : 404612691,
'read' : 1,
'senderID' : xxxxxxx,
'sentDate' : '2013-02-05 12:25:00',
'typeID' : 112,
'ownerID' : xxxxxxx,
'notificationID' : 404612691,
'text' : 'bounty: 100000.0\nbountyPlacerID: xxxxxxx\n'
},
{
'ownerID' : xxxxxxx,
'notificationID' : 410958504,
'read' : 1,
'senderID' : xxxxxxx,
'sentDate' : '2013-03-25 15:37:00',
'typeID' : 117,
'ownerID' : xxxxxxx,
'notificationID' : 410958504,
'text' : 'charID: xxxxxxx\n'
},
{
'ownerID' : xxxxxxx,
'notificationID' : 411400357,
'read' : 1,
'senderID' : xxxxxxx,
'sentDate' : '2013-03-29 04:40:00',
'typeID' : 118,
'ownerID' : xxxxxxx,
'notificationID' : 411400357,
'text' : 'charID: xxxxxxx\n'
}
]

Hope it helps