Release Elite Dangerous Market Connector (EDMC)

Elite Dangerous Market Connector ("EDMC") is a third-party application for use with Elite Dangerous. Its purpose is to facilitate supplying certain game data to, and in some cases retrieving it from, a number of websites and other tools.

To do this it utilises the Journal Files written by the game when played on a PC. It also makes use of Frontier's Companion API ("Frontier's CAPI"), accessible once you've authorised this application.

See the link above for more information about what it can do for you.

------------------------------------------------------------------------------------------------------
Problems Updating from 3.4.3.0/3.43

We've been made aware of an issue with the old 3.4.3.0/3.43 version (the last one that Marginal released) when checking for an update. It finds that there's a new version, but then crashes shortly after trying to offer it to the user (the changelog pane is blank and the entire window, along with the EDMarketConnector.exe process, disappears 2-3 seconds later).

For now we're advising all 3.4.3.0 users (who want to update, if you have any third-party plugins they'll likely need updating to work with 4.x versions) to follow the procedure outlined in this EDMC wiki Troubleshooting page. You really do want to update to the 4.x series, else you're missing out on all sorts of bug fixes and enhancements.

As per #804 - Update from 3.4.3.0/3.43 doesn't work I've contacted Marginal to see if he can change the redirect of the old update URL to point to a file I can directly control (rather than to the live GitHub one, where edits will affect all EDMC users). If he enacts that change then I'll experiment to see if changing the contents of the file will allow 3.4.3.0 to update.
---------------------------------------------------------
Release 4.1.6

We might have finally found the cause of the application hangs during shutdown. Note that this became easier to track down due to the downtime for migration of www.edsm.net around 2021-01-11. Before these fixes EDSM's API not being available would cause an EDMC hang on shutdown.

  • We've applied extra paranoia to some of the application shutdown code to ensure we're not still trying to handle journal events during this sequence.
    We also re-ordered the shutdown sequence, which might help avoid the shutdown hang.
    If you encounter a shutdown hang then please add a comment and log files to Application can leave a zombie process on shutdown #678 to help us track down the cause and fix it.
  • We now avoid making Tk event_generate() calls whilst the appliction is shutting down.
  • Plugins should actively avoid making any sort of Tk event_generate() call during application shutdown.
    This means using if not config.shutting_down: to gate any code in worker threads that might attempt this. Also, be sure you're not attempting such in your plugin_stop() function.
    See plugins/edsm.py and plugins/inara.py for example of the usage.
  • Any use of plug.show_error() won't actually change the UI status line during shutdown, but the text you tried to show will be logged instead.
  • Cargo tracking will now correctly count all instances of the same type of cargo for different missions. Previously it only counted the cargo for the last mission requiring that cargo type, as found in Cargo.json.
  • The loaded contents of Cargo.json can now be found in monitor.state['CargoJSON']. monitor.state is what is passed to plugins as state in the journal_entry() call.
  • Our logging code should now cope with logging from a property.
  • Logging from any name-mangled method should now work properly.
  • Miscellaneous updates to PLUGINS.md - mostly to clarify some things.
Release 4.1.5

This is a minor maintenance release, mostly addressing behaviour around process shutdown and startup, along with a couple of small enhancements that most users won't notice.

  • If there is already an EDMarketConnector.exe process running when trying to run another instance then that new process will no longer exit silently. Instead you'll get a pop-up telling you it's detected another process, and you need to close that pop-up in order for this additional process to then exit.
    This hopefully makes it obvious when you've got a hung EDMarketConnect.exe process that you need to kill in order to re-run the program.
  • In order to gather more information about how and why EDMarketConnector.exe sometimes doesn't shutdown properly we've added some extra debug logging to the sequence of clean-up calls performed during shutdown.
    Also, to make it more obvious if the process has hung during shutdown the UI window is no longer hidden at the start of this shutdown sequence. It will instead linger, with "Shutting down..." showing in the status line (translation for this small phrase will be added in a later release).
    If you encounter this shutdown hang then please add a comment to Application can leave a zombie process on shutdown #678 to help us track down the cause and fix it.
  • Cater for 'mangled name' class functions in our logging code. e.g. where you name a class member with a __ prefix in order to 'hide' it from out-of-class code.
  • To help track down the cause of Crashing On Startup #798 we've added some exception catching in our logging code. If this is triggered you will see ??:?? in logging output, instead of class and/or function names.
    If you encounter this then please comment on that bug report to aid us in tracking down the root cause!
  • Fixed logging from EDMC.exe so that the -debug log goes into EDMC-debug.log not EDMarketConnector-debug.log.
  • Fix EDMC.exe -j handling of file encodings. NB: This command-line argument isn't listed on EDMC.exe -h as it's intended for developer use only.
  • Fix the name of 'Void Opal(s)' so that output of market data to files is correct.
  • Fix URL in PLUGINS.md to refer to main, not master branch.
  • We're able to pull py2exe from PyPi now, so docs/Releasing.md has been update to reflect this.
Release 4.1.4

The only change from 4.1.3 is to insert some Windows version checks before even attempting to set a UTF-8 encoding. We'll now only attempt this if the user is not on Windows, or is on at least Windows 10 1903.

For unknown reasons no exception was being thrown under some circumstances (in this case running under an earlier Windows 10, but with EDMarketConnector.exe set to run in Windows 7 compatibility mode for some unknown reason).

Release 4.1.3
  • Revert to not setting gdiScaling in the application manifest. This should fix #734 and #739.
    A side effect will be that the radio buttons in Preferences > Appearance for the Theme selection will once more be improperly sized under any UI scaling. This is a Tcl/Tk bug which they have fixed in their code, but not yet made a new release containing that fix. We'll have it fixed when Tcl/Tk release a fixed version and Python releases a fixed version, that we use, that includes the fixed libraries.
  • Wraps some ctypes code in a try/except in order to fix #737. This should benefit anyone running EDMC under any Wine version that doesn't set the registry key we check for.
    Note, however, that we recommend running EDMarketConnector natively from source if using Linux.

Release 4.1.2
  • Minor fix to EDMC.py to revert broken logic trying to detect when there is neither commodities nor outfitting data for a station.
Release 4.1.1

This release should get the program running again for everyone who had issues with 4.1.0.

  • Catch any exception when we try to set UTF-8 encoding. We'll log where this fails but the program should continue running.
  • The use of the tkinter.filedialog code is now contingent on a UTF-8 encoding being set. If it isn't then we'll revert to the previous non-tkinter file dialog code. The older OSes that can't handle a UTF-8 encoding will get that slightly worse file dialog (that was previously always the case before 4.1.0). Everyone else gets to enjoy the more up to date file dialog with all the shortcuts etc.

Release 4.1.0

This release contains the result of a lot of code cleanup on several files and the addition of a proper logging paradigm, which should aid us in tracking down bugs.

None of the code cleanups should change actual program behaviour, but as we don't yet have the code in a state to have proper tests it's possible we've broken something.

  • The error 'list' object has no attribute 'values' should now be fixed.
  • This version will attempt to send empty market commodity lists over EDDN. The benefit of this is it will show when a Fleet Carrier no longer has any buy or sell orders active.
    At this time the EDDN Gateway will reject these messages. We're catching and suppressing that (but log a message at TRACE level). If/when the EDDN schema is updated and the Gateway starts using that this will mean, e.g. EDDB, can start better tracking Fleet Carrier markets.
  • We are now explicitly a Unicode application:
    1. A manifest setting in both EDMarketConnector.exe and EDMC.exe now specifies they're Unicode applications so that they default to using the UTF-8 codepage.
    2. We are now explicitly setting a UTF8 encoding at startup. NB: This is still necessary so that users running from source code are also using the UTF-8 encoding, there's no manifest in that scenario.
      This shouldn't have any side effects and has allowed us to switch to the native tkinter file dialogs rather than some custom code.
  • If you do encounter errors that might be related to this then it would be useful to see the logging output that details the Locale settings at various points during startup. Examples might include incorrect text being rendered for your language when you have it set, or issues with filenames and their content, but any of these are unlikely.
  • EDMarketConnector.exe now has gdiScaling set to true in its manifest. This results in better Windows OS scaling of the UI (radio buttons scale correctly now). This might negate the need for our own UI Scaling (see below), but we're leaving the functionality in for anyone who finds it useful.
  • New UI Scaling option! Find the setting on the 'Appearance' tab of Settings.
    1. This will only actually take effect after restarting the application.
    2. The 'Default' theme's menu names won't be resized due to using the default font. The other two themes work properly though as they use a custom font for those texts.
    3. As per the note next to the settings bar, "100" means "default", so set it to that if you decide you don't need the UI scaling.
    4. If you select 0 it will become 100 on the next startup.
  • Plugin Authors: If you are doing per-pixel things in your UI then you'll want to check config.get('ui_scale') and adjust accordingly. 100 means default scaling with other values being a percentage relative to that (so 150 means you need to scale everything x1.5).
  • Code dealing with Frontier's CAPI was cleaned up, so please report any issues related to that (mostly when just docked or when you press the Update button).
  • We now have proper logging available, using the python module of that name. Plugin Authors, please change your code to using proper logging, as per the new 'Logging' section of PLUGINS.md, rather than simple print(...) statements.
    1. We have a TRACE level of log output. By default this is turned off. Run either EDMarketConnector or EDMC with --trace flag to enable. This is intended for use where we need finer-grained tracing to track down a bug, but the output would be too spammy in normal use.
      To make it easy for users to run with TRACE logging there's a new file EDMarketConnector - TRACE.bat. Running this should result in the program running with tracing. Recommended use is to navigate a Windows File Explorer window to where EDMarketConnector.exe is installed then double-click this .bat file.
    2. EDMC.py has a new --loglevel command-line argument. See EDMC.py -h for the possible values. It defaults to 'INFO', which, unless there's an error, should yield the same output as before.
    3. EDMC.exe will now log useful startup state information if run with the --loglevel DEBUG arguments.
    4. EDMarketConnector has a new 'Loglevel' setting on the 'Configuration' tab to change the loglevel. Default is 'INFO' and advised for normal use. If reporting a bug it will be very helpful to change this to 'DEBUG' and then reproduce the bug. Changes to this will take effect immediately, no need for a restart.
    5. Both programs not only log to their old locations (console for EDMC, and %TEMP%\EDMarketConnector.log for the main application), but now also to a size-limited and rotated logfile inside the folder %TEMP%\EDMarketConnector\.
      1. The base filename inside there is EDMarketConnector-debug.log for the main program and EDMC-debug.log for the command-line program.
      2. A new file is only started if/when it reaches the 1 MiB size limit.
      3. We'll keep at most 10 backups of each file, so the maximum disk space used by this will be 22 MiB.
      4. Only actually logged output goes to these files, which currently is far from all the traditional output that goes to the old file/console. Anything using print(...) will not appear in these new files.
      5. These files always default to DEBUG level, whereas the old log file continues to follow the user-set logging level.
    6. Default logging level for plugins is DEBUG. This won't change what's actually logged, it just ensures that everything gets through to the two channels that then decide what is output.
  • There's a little extra DEBUG logging at startup so we can be sure of some things like Python version used (pertinent if running from source).
  • Minor tweak to EDDN plugin logging so we know what message we tried to send if it fails.
  • More logging added to companion.py to aid diagnosing Frontier Auth issues.
  • Extra TRACE level logging added for when we process Location, Docked, t puFSDJump and CarrierJump events for EDSM. This was added to help track down the cause of #713.
Translators: There are new strings to translate related to Log Levels and the new UI Scaling. Thanks to those who already updated!

There was a series of betas and release candidates between 4.0.6 and 4.1.0, see their individual changelogs on GitHub EDMarketConnector Releases. All the pertinent changes in them were folded into the text above.
 
Last edited:
Release 3.46
This should be the final release of EDMC based on Python 2.7. The next release after this, assuming this one doesn't introduce new bugs, will be based on Python 3.7. Any plugins that users have installed will need to have been updated to work under Python 3.7 by the time that next version of EDMC is released. During EDMC startup, at most once per day, you might see a popup with the text:

One or more of your enabled plugins do not yet have support for Python 3.x. Please see the list on the 'Plugins' tab of 'File' > 'Settings'. You should check if there is an updated version available, else alert the developer that they will need to update the code when EDMC moves to Python 3.x
A small bug means that popup will never appear, but you can still check File > Settings > Plugins tab and see what plugins are listed in the section with the text Plugins Without Python 3.x Support.
If any of your plugins are listed in that section then they will need updating, by you or the original developer, to work with Python 3.7. See Migrating to python 3.7 for more information.
Anyone who wishes to try out the forthcoming Python 3.7-based version should see Release 3.51 beta0, but please do not install that unless you're technically savvy enough to make coherent bug reports, thankyou.
Changes in this version:
  • The CAPI CLIENT_ID has been changed to one under Athanasius' account, so when users are asked to (re-)authenticate with Frontier they'll see Elite Dangerous Market Connector (EDCD/Athanasius) as the application asking for permission. There's been no change to the use of the data Frontier then gives access to.
  • Updated translations (as of 2019-09-26 in general and 2019-11-04 for Polish).
  • Linux: Should now appear on task bar whilst in dark mode theme.
  • INARA: Send correct opponentName for Interdicted and Interdiction events.
  • Send SAASignalsFound events to EDDN.
  • Add Agronomic Treatment introduced for a community goal.
  • Fix Detailed Surface Scanner rating.
  • Fix for the "Inara 400 The reputation value exceeds the valid range" error.
  • Minimum interval between checks for a new version of EDMC has been reduced from 47 hours to 8 hours.
  • There is a new option, within the 'Configuration' tab, 'Disable Automatic Application Updates Check when in-game' which when active should prevent update checks from showing a popup whilst you're in-game. You can still use Help > Check for updates to trigger a manual check.
  • Support added for the journal CarrierJump event, triggered when you're docked on a Fleet Carrier as it performs a jump. This is now sent to: EDDN, Inara, EDSM. NB: EDSM doesn't yet support this event at the time of writing, so will still not track such Carrier Jumps in your Flight Log or current location. Generally when EDSM is updated to handle such new events it will back-process stored unrecognised events.

NB: There's some issue with 3.44 updating to this new 3.46. If you use the in-app prompt to install it will kill the old running EDMarketConnector.exe and attempt to run the new installer, but that then fails in some manner and you're left with 3.44 still installed. I'm investigating now.
 
Last edited:
I'd neglected to properly edit the update feeds file, so it was still pointing to the 3.44 installer file despite saying it was for 3.46. Fixed!
 
One small bug I didn't catch, that popup warning about Python 3.x and plugins won't ever happen. But if you look on File > Settings > Plugins you will see any plugin without Python 3.x support listed in an appropriate section.
 
I've also spotted a puzzling issue with the EDMarketConnector.exe not showing the correct icon. This worked fine for the 3.44 build, yet doing that afresh exhibits the same "no icon" problem. It's currently working OK on my Python 3.7 build environment so I'm inclined to just let this slide until the next, Python 3.7 based, release.

It's py2exe that builds the .exe and is meant to take care of incorporating the icon, and nothing has changed about how that is being specified, nor are any errors thrown during the ubild process so <insert shrugging emoji>.
 
Last edited:
This 3.46 EDMarketConnector.exe icon thing... some of us are seeing the icon, some of us not. I've just checked a fresh build of the 3.44 .exe, which for me doesn't show the icon, and it has an identical SHA256 checksum to the github .msi 3.44 file which does show the icon for me. So this is Windows 10 doing something bizarre.

I've already tried removing %LOCALAPPDATA%\IconCache.db and rebooting, it made no difference.

So, I'm definitely inclined to leave this be given things are still working sanely for me with the python3 branch built using Python 3.7.7.
 
There are some new phrases awaiting translations on https://marginal.oneskyapp.com/collaboration/project/52710 if anyone has the skills for the supported languages. If you find anything you think is wrong and can't edit then poke me to 'Unfinalize' the translation(s). I can also look at adding new languages if there's a volunteer to make a new translation.

Any work ready to go when I make the next release will be included :) .
 
NB: If you're helping with translations you only need to care about the ones under the "EDMarketConnector / Miscellaneous" project and not the "EliteOCR / EliteOCR" one!

I'm pretty sure the EliteOCR project has been dead for many years now, made moot by the Journals and CAPI as data sources.
 
Hi all !

Now I'm forced to flood the logs from the game with my hands on Inara. Can I use your program by giving her access only from Inara ? So she can fill in the logs from the game on Inara.

Without providing any logins and passwords from the game itself.

Thank you.

Example:
1. Specify in the EDMS settings where the logs and the key to Inara's website should be stored.
2. Start EDMS and it will automatically fill in the logs on Inara's website.
 
Last edited:
Now I'm forced to flood the logs from the game with my hands on Inara. Can I use your program by giving her access only from Inara ? So she can fill in the logs from the game on Inara.

Without providing any logins and passwords from the game itself.

Thank you.

Example:
1. Specify in the EDMS settings where the logs and the key to Inara's website should be stored.
2. Start EDMS and it will automatically fill in the logs on Inara's website.
Yes, EDMC supports Frontier Authentication, it hasn't asked for your game login details for a long time now.

You can then set the options in EDMC so that it only sends to Inara (don't enter an EDSM API Key, and if you really don't want to then disable the options for sending to EDDN). You'll obviously then need to always be running EDMC when you play the game.
 
If anyone has had 3.50 or 3.51 installed (or running from source) in order to test against Python 3.7 then could you please switch to 3.99.0.0 or the beta branch of the source code. See the first link for Release Notes. If you're feeling particularly brave you could use the develop branch which will have the latest code I've merged in from Work-In-Progress branches.

Check the open Issues before reporting any problems you see. I'll likely be making a 3.99.1.0 pre-release today or tomorrow to fix a few more things.

If all goes well with that then expect the actual 4.0.0.0 release of Python 3.7 based EDMC some time next week.
 
The next full release of EDMC will be 4.0.0.0. As well as fixing some bugs and including some other enhancements this will be the big move from Python 2.7 to Python 3.7. So, with that in mind, I'd like as many users as possible to install and test this 3.99.2.0 pre-release to help find any new bugs before that big change is offered to everyone.

You can get it from Pre-Release 3.99.2.0 . Install by simply running it. It's the same as if EDMC offered you a new version and you went through with installing it.
As always, please report any issues on GitHub. If you want to discuss or check anything first then find us in the #edmc channel of the EDCD Discord Server.
You should read all of the changelogs for 3.99.0.0, 3.99.1.0 and 3.99.2.0. I'll make the easy by pasting them here:
3.99.0.0

  • This release is based on Python 3.7, not 2.7, so a user might find some of their plugins stop working. If you have any that do not have the proper support you'll see a popup about this, at most once every 24 hours, when you start the program. As directed on that popup you can check the status of your plugins on 'File' > 'Settings' > 'Plugins' in the new 'Plugins Without Python 3.x Support:' section. If the popup gets annoying then follow the directions to Disable a plugin. For any plugins without Python 3.x support you should first ensure you're using the latest version of that plugin. If that hasn't been updated then you might want to contact the plugin developer to see if they'll update the plugin. For some plugins check this list.
  • Translations updated:
  • New languages: Serbian (Latin, Bosnia and Herzegovina) (175/175), Slovenian (Slovenia) (144/175).
  • New phrases were added and the only 100% translated languages are now: French, German, Ukrainian, Spanish, Russian, Czech, Japanese, Serbian (Latin), Portugese (Portugal), Serbian (Latin, Bosnia and Herzegovina). Please do contribute on the OneSkyApp project if you are able to.
  • Fixes a bug where certain combinations of 'Output' and 'EDDN' options would lead to both reverting to their defaults.
  • EDDB plugin now uses a system's SystemAddress to construct the URL to view the system on eddb.io. This removes the need for the systems.p file. That file will be removed in a future version, plugin authors should not be relying on its presence.
  • EDDB plugin now uses a station's MarketID to construct a URL to view the station on eddb.io. This removes the need for stations.p. That file will be removed in a future version, plugin authors should not be relying on its presence. NB: It's now using the system's "Population" data from Journal messages to determine if the system has stations or not. This allows for the × as station name to be clickable to open the eddb.io page for system when you're not docked. It's known that some systems with stations have a Population of "0" and thus won't allow this functionality. This is Frontier's issue, not EDMC's. If you logged out in a populated system, run EDMC afresh, and use the 'Update' button you won't see the × until you login fully to the game.
  • New 'Help' > 'About E:D Market Connector' menu item to show the currently running version. Includes a link to the release notes.
3.99.1.0

  • Fix a bug where if you copied a Journal file to the live location, resulting in a "Journal.YYMMDDHHMMss.XX - Copy.log" file, the application would pick it up as 'new' and potentially re-send duplicate data to all of EDDN, EDSM and Inara. Now the only files the application will take note of must:
  1. Start with Journal. or JournalBeta.
  2. Have the 12-digit date/timestamp, followed by a .
  3. Have the 2 digit serial number, followed by a .
  4. Nothing else before the trailing log.
  • Fix the 'Release Note' URL in the 'About' popup to use the correct format.
  • Fix the location of Registry keys for the update checker, WinSparkle, to be under EDMarketConnector instead of EDMarketConnector.py.
3.99.2.0

  • Added Swedish to the translated languages. Thanks to Gurra.
  • Will throw an exception, rather than a Segmentation Fault, if run on Linux without DISPLAY properly set.
  • Corrects setting of WinSparkle (updates checking) options to be under the new 'EDCD' Registry key.
 
Hi Athan,

the usage of EDMC.exe (which TCE is using) from the V3.99.2.0 installation producing an error on any command line parameter (-o/-m/-l etc.).
The error message is "Can't read Journal file: b"name 're' is not defined".
Also the -v parameter reports the version 39.92, which is also wrong.
EDMC 3.51beta is working properly.

Hopefully you find the issue before release, otherwise the TCE users will take out their torches :)

I can't report it on Github actually, cause my account there has an issue, so I can't login. Hope this get fixed by Github any time soon.
 
Last edited:
Hopefully you find the issue before release, otherwise the TCE users will take out their torches :)

I can't report it on Github actually, cause my account there has an issue, so I can't login. Hope this get fixed by Github any time soon.
I've opened this issue for it and will take a look in the next day or so latest.
 
I can't report it on Github actually, cause my account there has an issue, so I can't login. Hope this get fixed by Github any time soon.
I've made a new release with just these fixes and an updated Swedish translation: Release 3.99.3.0


Pre-Release 3.99.3.0
Consider this as 'beta3' for the following full '4.0.0.0' release.

* Fix up EDMC.exe (command line tool):
* Correctly report the version with -v.​
* Don't error out on checking Journal filenames.​
* Updated Swedish translation.
 
Last edited:
installed 3.99.3 allways get the "server down" message, is the server actually down or is a bug too?

edmc gives no server down message
 
Top Bottom