Open Deterous opened 2 months ago
Strongly request a toggle in options to include them anyway. I'd like to still have them and having it off by default will let the mods be happy.
Is there a preferred order to the "accepted" labels? Like does Windows always take precedence over Joliet? Or if they match (ignoring case), is it always the one that includes at least one lower-case character?
Windows > UDF > ISO > Joliet Windows probably is UDF anyway. Honestly I've only seen bad results from the joliet label. Maybe it's coded wrong for DIC log parsing..? (my fault if so)
The current formatting code doesn't take into account where the labels are coming from when formatting. It just assumes that they're organized properly. That is, there is no actual distinction between UDF, ISO, and Joliet when the formatting happens. If we go with the hierarchy, that will require special checking cases. Also worth noting that it actually doesn't do any sort of comparisons between labels at the moment.
As discussed in Discord, part of the issue here is needing to rebuild the current mapping dictionary based on the "correct" labels. For a human user, this is nearly trivial to point out, regardless of what the source of the label is. For a computer, it's a bit harder, since either the key in the dictionary needs to be normalized OR a separate mapping needs to be made from the key to the "real label". Neither of these are trivial to implement and neither scales particularly well.
Currently, labels
exists as a mapping of actual volume labels to zero or more filesystem names ("ISO", "Joliet", "UDF", "UNKNOWN")
It should be possible to compare the volume labels and pick the one with the better filesystem. There is no need to determine which is better through heuristics (which has case sensitivity, etc).
For example:
labels
= a mapping of "EXAMPLE_DISC" = (ISO, Joliet) and "Example Disc" = (UDF)
string.Equals(a, b, StringComparison.OrdinalIgnoreCase)
Note: this logic should occur here: https://github.com/SabreTools/MPF/blob/83a189a5d399ae81a8accc77eed2419073e3911d/MPF.Frontend/Tools/SubmissionGenerator.cs#L414 i.e. after checking that at least one label exists, but before the check for only one label.
You're proposing a static readonly list that defines the hierarchy. It also seems like you're suggesting the "highest ranked" out of each set of label sources would be considered.
Another request as part of this: don't put any volume labels in submissionInfo for Xbox/Xbox360.
Currently MPF outputs ISO volume labels that are useless, e.g.
[T:VOL] Young, YOUNG (ISO)
or[T:VOL] LIVINGFACTORY (ISO), LivingFactory (Joliet)
TODO: Add logic to delete useless volume labels. Compare them after removing spaces/underscores and normalising case. Drop empty volume labels after this. And ensure that if only one volume label is left, don't add the brackets
e.g. the output after this should be
[T:VOL] Young
and`[T:VOL] LivingFactory