Skip to content

Commit fcf287b

Browse files
committed
support for (JUE) and (UE) in filename region detection
1 parent 1a151c6 commit fcf287b

2 files changed

Lines changed: 29 additions & 9 deletions

File tree

src/abstractscraper.cpp

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -633,20 +633,24 @@ void AbstractScraper::detectRegionFromFilename(const QFileInfo &info) {
633633
// loop over region infos from filename
634634
while (matchIter.hasNext()) {
635635
QString regionString = matchIter.next().captured().toLower();
636-
// keep (e), (u), (j) due to startsWith(fn_regio) later, else remove
637-
// parenthesis
638-
if (regionString != "(e)" && regionString != "(j)" &&
639-
regionString != "(u)") {
636+
if (regionString == "(jue)") {
637+
regionString = "japan|usa|europe";
638+
} else if (regionString == "(ue)") {
639+
regionString = "usa|europe";
640+
} else if (regionString != "(e)" && regionString != "(j)" &&
641+
regionString != "(u)") {
640642
// remove parenthesis
641643
regionString = regionString.mid(1, regionString.length() - 2);
642644
}
643645
while (!regionString.isEmpty()) {
646+
bool detectedRegion = false;
644647
QListIterator<QPair<QString, QString>> iter(regionMap());
645648
while (iter.hasNext()) {
646649
QPair<QString, QString> e = iter.next();
647650
QString fn_regio = e.first;
648651
QString sky_regio_key = e.second;
649652
if (regionString.startsWith(fn_regio)) {
653+
qDebug() << "matched" << fn_regio;
650654
// map to Skyscraper's short-names (sky_regio_key)
651655
if (regionsInline) {
652656
if (!regionPrios.contains(sky_regio_key) &&
@@ -662,13 +666,18 @@ void AbstractScraper::detectRegionFromFilename(const QFileInfo &info) {
662666
regionString = regionString.replace(fn_regio, "");
663667
if (!regionString.isEmpty()) {
664668
// remove possible separators (comma et al.) if
665-
// regionString was "Europe, Japan" -> retain "Japan"
669+
// regionString was "europe, japan" -> retain "japan"
666670
regionString = regionString.replace(
667671
QRegularExpression("^([^a-z]+)?"), "");
668672
}
673+
detectedRegion = true;
669674
break;
670675
}
671676
}
677+
if (!detectedRegion) {
678+
// no match was found in regionMap()
679+
break;
680+
}
672681
}
673682
}
674683

@@ -795,10 +804,10 @@ QVariantMap AbstractScraper::readJson(const QString &filename) {
795804
"fix.\nNot scraping...\n\033[0m",
796805
filename.toUtf8().constData());
797806
} else if (jsonObj.isEmpty()) {
798-
ncprintf(
799-
"\033[1;31mFile '%s' has insky_regio_keyid JSON format. Please fix.\nNot "
800-
"scraping...\n\033[0m",
801-
filename.toUtf8().constData());
807+
ncprintf("\033[1;31mFile '%s' has insky_regio_keyid JSON format. "
808+
"Please fix.\nNot "
809+
"scraping...\n\033[0m",
810+
filename.toUtf8().constData());
802811
}
803812
return m;
804813
}

test/abstractscraper/test_abstractscraper.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,17 @@ private slots:
104104
// "wor" should be last as there is no match in regionPrios
105105
regionPriosExp = settings.regionPrios + QStringList({"wor"});
106106
matchRegion("Game C (USA, World, Europe).zip", regionPriosExp);
107+
108+
settings.regionPrios = QStringList({"jp", "eu"});
109+
regionPriosExp = QStringList({"jp", "eu", "us"});
110+
matchRegion("Game D (UE).zip", regionPriosExp);
111+
settings.regionPrios = QStringList({"eu"});
112+
regionPriosExp = QStringList({"eu", "jp", "us"});
113+
matchRegion("Game D' (JUE).zip", regionPriosExp);
114+
115+
settings.regionPrios = QStringList({"eu"});
116+
regionPriosExp = QStringList({"eu", "us"});
117+
matchRegion("Game X (USA, xyz).zip", regionPriosExp);
107118
}
108119

109120
void testDetectRegionsFromFilenameIssue242OptionFirst() {

0 commit comments

Comments
 (0)