The current flow for Oracle looks like this:
This flow has _lots_ of problems:
I suggest reworking Oracle so that it has a flow like this:
We could also query @tritoch's spoilers with oracle and include them in the future, to stop the mess with custom sets and the need to delete them later once available on mtgjson.
If you check that, it'll include them into cards.xml. That way, if we prioritize the AllSets.json data, they get just included if not already found in mtgjson (aka released on gatherer).
Will make the process for users easier, lower their waiting time and explanations needed in main chat or questions on reddit. :D
I'm not sure we should do that, at least for now. Let's focus on cleaning up what we have, maybe we can consider that change later
If we do end up adding spoiler support in future, I don't think they should get merged directly into cards.xml. It'd be better to add them as a separate spoilers.xml in the customsets folder.
@skwerlman
While that is the better way to deal with it, we then need to tell Cockatrice to not prioritize a spoiler.xml file over information in cards.xml, as we do with other custom sets.
I created a mock-up taking the steps from above, but also adding some other ideas:
I suggest reworking Oracle so that it has a flow like this:
- Select language, and whether you want card or token data, or both
- Select where to fetch card/token/both data from, and where to save the resulting files
- have the fields for both there, but grey out any which are unwanted- Download and import the wanted data
- Show a finished screen
- A log is shown here
- Any errors in the last step are presented to the user here
1) Select language + select wanted updates (any combination of card updates, tokens, spoilers...)

Note: It should be more clear that the language selector is just for the displayed interface language in Oracle. We could also remove it completely and just take the same language setting we use in Cockatrice. The normal work flow now is to open Cockatrice first anyway and then open Oracle from within the app. Not run it as a completely separate program.
2) Give links to online sources or provide local files for each of the selected sources from step 1

3) Downloading+parsing starts. Tokens are greyed out here (in case you deselect them in step 1)

4) Shows the result of the former operation (successful or errors) + allows to see log and file locations

Edit: Updated the step 1 picture
Actually I think we can even get rid of step 2... in case there are problems with the hosted files or people want/need to customize things (which isn't the default at all!), we have another tickbox in the step 1 saying: Customize sources or something. It's the same as anybody knows from app installations which say "Change default installation settings" which doesn't shortcut the installation, but gives you the option to adjust the install directory and such.
So default would be a shortcut from step 1 to step 3 and a option to modify links or provide local files with a tickbox in step 1 for example (--> show step 2).
Edit2: Added step 4
That looks great. The only thing lost is
I see you can view the file directly, but that may be ill-advised for an 8MB file - could choke some text editors.
I've also been pushing for a move towards foreign card files, and have even generated json files that contain foreign card images where available. Can you prototype where such an option might be added for future?
The only thing lost is changing destination for xml files
Jep, I don't think it's needed. It should be in the advanced screen (step 2) though, if at all.
I guess if you want the file in a special location you just open the folder at the end and cut/move it where you want it to be.
But in general you just need to change the location if you adjusted your default location in Cockatrice settings I think? Oracle should just pick up that custom location from the settings.ini instead... to keep Oracle as simple as possible.
If you still need the file in a different place, you can open the location and move the file around. We offer help to open the locations from within the client and in my mock-up in Oracle as well.
I see you can view the file directly, but that may be ill-advised for an 8MB file - could choke some text editors.
It should better be named "Show location" for sure, not "Show file". Since it shouldn't open the file! Just opening the corresponding folder.
I think we planned on integrating foreign pictures in the client without the need of dealing with several .json files etc. There is also a ticket.
But that will take some time since mtgjson needs to include this information for all sets first, before we can parse it with Oracle and offer options in Cockatrice to download different pictures. It's also ticketed on the mtgjson repo and he started working on it. I guess the information is already there for some sets.
For now, I think people need to deal with customizing stuff if other pictures are needed.
If it has to be/is going to be in Oracle it could replace the language setting we use right now to change the displayed langauge within Oracle in step 1. The displayed language can just mirror the one which is selected in Cockatrice instead. But this means that the user has a language specific card database with language specific picture links... the way we wanted to do it you could change the displayed card art (language wise) in the client and other pictures are downloaded without a database change because the names of each card for other languages are already known.
Oracle should also validate any xml that is imported and throw useful errors (Token, Spoiler...): #2065
Same for the json files in case users use sources other than mtgjson.
Actually, Oracle could be our general update tool and also check for Cockatrice updates. That way we make users check more frequently on every card update too (if they want) and lower general confusions.
Has to be the first check in that case, then suggest to run update first (since it updates Oracle as well), start new Oracle again and ideally uncheck Cockatrice check for this automated run.
"Oracle Importer" --> "Oracle Updater" (it could also just be "Cockatrice Updater")
We want to get rid of Oracle at some point, in favor of distributing databases (See #4109) as such I don't find playing with this option worth our time
Most helpful comment
If we do end up adding spoiler support in future, I don't think they should get merged directly into
cards.xml. It'd be better to add them as a separatespoilers.xmlin thecustomsetsfolder.