diff --git a/data/manifest.yaml b/data/manifest.yaml
index 7309fd3d..573747b9 100644
--- a/data/manifest.yaml
+++ b/data/manifest.yaml
@@ -28684,8 +28684,6 @@ Alone in the Dark 2:
gog:
id: 1207660963
id:
- gogExtra:
- - 1207658923
lutris: alone-in-the-dark-2
steam:
id: 548890
@@ -28699,8 +28697,6 @@ Alone in the Dark 3:
gog:
id: 1207660973
id:
- gogExtra:
- - 1207658923
lutris: alone-in-the-dark-3
steam:
id: 548900
@@ -56720,8 +56716,6 @@ Baldr Sky:
gog:
id: 1207658886
id:
- gogExtra:
- - 1207666353
lutris: baldurs-gate-the-original-saga
"Baldur's Gate 3":
files:
@@ -56832,8 +56826,6 @@ Baldr Sky:
gog:
id: 1207658893
id:
- gogExtra:
- - 1207666373
lutris: baldurs-gate-ii-complete
"Baldur's Gate III":
alias: "Baldur's Gate 3"
@@ -120463,7 +120455,6 @@ Cogmind:
id: 1207659633
id:
gogExtra:
- - 1207659633
- 1207659643
- 1207659653
- 1207659663
@@ -144291,9 +144282,6 @@ DRAG:
- config
when:
- os: windows
- id:
- steamExtra:
- - 773840
installDir:
DRAG: {}
launch:
@@ -174908,7 +174896,6 @@ Don Bradman Cricket 17:
- 1739447650
- 1742170347
steamExtra:
- - 1335800
- 1606220
installDir:
dont_forget_me: {}
@@ -180402,9 +180389,6 @@ Dragon of Legends:
steam:
id: 663530
"Dragon's Prophet":
- id:
- steamExtra:
- - 1380940
steam:
id: 1380940
"Dragon's Wake":
@@ -185065,9 +185049,6 @@ DrummingVR:
- save
when:
- os: windows
- id:
- steamExtra:
- - 1039290
installDir:
Drumpf 2 Lost But Not Forgotten: {}
launch:
@@ -186347,8 +186328,6 @@ Duke Nukem 3D:
id: 1207658730
id:
lutris: duke-nukem-3d
- steamExtra:
- - 225140
installDir:
Duke Nukem 3D: {}
launch:
@@ -192877,7 +192856,6 @@ EXceed - Gun Bullet Children:
- os: windows
id:
steamExtra:
- - 15960
- 59925
installDir:
eXceed - Gun Bullet Children: {}
@@ -199131,7 +199109,6 @@ Elven Legacy:
id:
lutris: elven-legacy
steamExtra:
- - 25850
- 25880
- 42930
- 42940
@@ -215597,7 +215574,6 @@ Fabula Mortis:
id:
steamExtra:
- 1310220
- - 2060550
installDir:
Fabular Once upon a Spacetime: {}
launch:
@@ -225994,8 +225970,6 @@ Final Doom:
gog:
id: 1435848742
id:
- gogExtra:
- - 1440161275
lutris: final-doom
installDir:
Final Doom: {}
@@ -265960,7 +265934,6 @@ Gremlins vs Automatons:
- 1615869028
- 1964148149
steamExtra:
- - 369990
- 458160
- 459850
- 459851
@@ -296346,7 +296319,6 @@ House Flipper:
steamExtra:
- 825570
- 942290
- - 1021110
- 1126050
- 1460920
- 1569190
@@ -304165,8 +304137,6 @@ Icewind Dale:
gog:
id: 1207658888
id:
- gogExtra:
- - 1207666683
lutris: icewind-dale-1-complete
Icewind Dale II:
files:
@@ -319174,7 +319144,6 @@ Jagged Alliance 2:
steamExtra:
- 2950
- 12370
- - 12380
- 545210
steam:
id: 1620
@@ -319192,9 +319161,6 @@ Jagged Alliance 2:
- os: windows
gog:
id: 1207658653
- id:
- steamExtra:
- - 1620
installDir:
Jagged Alliance 2 Gold Unfinished Business: {}
launch:
@@ -320331,8 +320297,6 @@ Jazz Jackrabbit 2:
gog:
id: 1917711239
id:
- gogExtra:
- - 1917711239
lutris: jazz-jackrabbit-2
"Jazz Lightning : Castle Dungeons":
installDir:
@@ -346833,8 +346797,6 @@ Leisure Suit Larry - Wet Dreams Dry Twice:
gog:
id: 1207662073
id:
- gogExtra:
- - 1207659158
lutris: leisure-suit-larry-5-passionate-patti-does-a-littl
installDir:
Larry Suit Larry 5 Passionate Patti Does a Little Undercover Work: {}
@@ -346889,8 +346851,6 @@ Leisure Suit Larry Goes Looking for Love (in Several Wrong Places):
gog:
id: 1207662053
id:
- gogExtra:
- - 1207659158
lutris: leisure-suit-larry-2-looking-for-love-in-several-w
installDir:
Leisure Suit Larry 2 Looking For Love (In Several Wrong Places): {}
@@ -346917,8 +346877,6 @@ Leisure Suit Larry Goes Looking for Love (in Several Wrong Places):
gog:
id: 1207662063
id:
- gogExtra:
- - 1207659158
lutris: leisure-suit-larry-3-passionate-patti-in-pursuit-o
installDir:
Leisure Suit Larry 3 Passionate Patti in Pursuit of the Pulsating Pectorals: {}
@@ -348615,9 +348573,6 @@ Level 22:
- os: windows
gog:
id: 1454602861
- id:
- steamExtra:
- - 293300
installDir:
Level22: {}
launch:
@@ -353370,7 +353325,6 @@ Little Nightmares:
gogExtra:
- 1185734803
- 1352220891
- - 1433377508
- 1675156362
- 1863057712
- 1866912153
@@ -356572,8 +356526,6 @@ Lords of the Realm II:
gog:
id: 1207663263
id:
- gogExtra:
- - 1207658780
lutris: lords-of-the-realm-ii
installDir:
Lords of the Realm II: {}
@@ -410863,8 +410815,6 @@ Neighbours Back from Hell:
id: 2053240278
id:
lutris: neighbours-back-from-hell
- steamExtra:
- - 1283190
installDir:
Neighbours back From Hell: {}
launch:
@@ -410903,8 +410853,6 @@ Neighbours from Hell:
gogExtra:
- 1207658765
lutris: neighbours-from-hell
- steamExtra:
- - 1283190
installDir:
Neighbours from Hell: {}
launch:
@@ -442512,9 +442460,6 @@ Papercraft:
when:
- os: windows
store: steam
- id:
- steamExtra:
- - 905660
installDir:
PaperWar: {}
launch:
@@ -466102,9 +466047,6 @@ Prison Planet:
steam:
id: 1148410
Prison Princess:
- id:
- steamExtra:
- - 1151740
installDir:
Prison Princess: {}
launch:
@@ -494918,8 +494860,6 @@ Return to Castle Wolfenstein:
gogExtra:
- 1441704976
lutris: return-to-castle-wolfenstein
- steamExtra:
- - 1379630
installDir:
Return to Castle Wolfenstein: {}
launch:
@@ -503539,9 +503479,6 @@ Rocket League:
steam:
id: 252950
Rocket Mania:
- id:
- steamExtra:
- - 1949810
installDir:
RocketMania: {}
launch:
@@ -504858,7 +504795,6 @@ Rogue Trooper Redux:
gogExtra:
- 1360356045
- 1639809483
- - 2076502816
steamExtra:
- 710410
installDir:
@@ -528659,7 +528595,6 @@ Shadow Warrior (2013):
id: 1207659573
id:
gogExtra:
- - 1429878383
- 1430392753
lutris: shadow-warrior
installDir:
@@ -549744,9 +549679,6 @@ Softened Cookie:
Softporn Adventure:
gog:
id: 1207662103
- id:
- gogExtra:
- - 1207659158
Software Inc.:
files:
"/Saves":
@@ -560551,8 +560483,6 @@ Spear of Destiny:
gog:
id: 1441705126
id:
- gogExtra:
- - 1441705226
lutris: wolfenstein-3d-spear-of-destiny
steamExtra:
- 9000
@@ -582947,8 +582877,6 @@ Sudden Strike 2:
gog:
id: 1421964930
id:
- gogExtra:
- - 1421964930
lutris: sudden-strike-2-gold
installDir:
Sudden Strike 2 Gold: {}
@@ -635608,7 +635536,6 @@ The Outer Worlds:
- 1393110
- 1393111
- 1425450
- - 1920490
installDir:
TheOuterWorlds: {}
steam:
@@ -637873,9 +637800,6 @@ The Raven Remastered:
- os: linux
gog:
id: 1749614448
- id:
- gogExtra:
- - 1749614448
installDir:
The Raven Remastered: {}
launch:
@@ -641626,7 +641550,6 @@ The Sinking City:
id: 1134504983
id:
gogExtra:
- - 1134504983
- 1281247417
- 1705130517
- 1801191124
@@ -660381,7 +660304,6 @@ Torimodosu:
- 1563444452
- 1700870503
- 1832019184
- - 1958306970
lutris: torment-tides-of-numenera
steamExtra:
- 342210
@@ -665397,7 +665319,6 @@ Train Simulator:
- 277747
- 277748
- 277749
- - 277751
- 277752
- 277753
- 277754
@@ -675404,9 +675325,6 @@ Two Worlds II Castle Defense:
- os: windows
gog:
id: 1207661843
- id:
- gogExtra:
- - 1207659214
installDir:
Two Worlds II Castle Defense: {}
launch:
@@ -683890,9 +683808,6 @@ Urban Empire:
store: steam
gog:
id: 1936881415
- id:
- gogExtra:
- - 1936881415
installDir:
Urban Empire: {}
launch:
@@ -693087,8 +693002,6 @@ Viscera Cleanup Detail:
gog:
id: 1429878383
id:
- gogExtra:
- - 1207659573
lutris: viscera-cleanup-detail-shadow-warrior
installDir:
Viscera Cleanup Detail Shadow Warrior: {}
@@ -710587,7 +710500,6 @@ Wildlife Park:
id:
steamExtra:
- 337970
- - 664120
installDir:
Wildlife Park: {}
launch:
@@ -724482,7 +724394,6 @@ Yooka-Laylee:
id:
gogExtra:
- 1354053863
- - 1445853962
steamExtra:
- 426750
installDir:
diff --git a/src/manifest.rs b/src/manifest.rs
index d9223a73..fd74ec91 100644
--- a/src/manifest.rs
+++ b/src/manifest.rs
@@ -4,7 +4,7 @@ use crate::{
path,
resource::ResourceFile,
steam::{self, SteamCache, SteamCacheEntry},
- wiki::{PathKind, WikiCache, WikiCacheEntry},
+ wiki::{PathKind, PrimaryIds, WikiCache, WikiCacheEntry},
Error,
};
@@ -153,13 +153,15 @@ impl Manifest {
) -> Result<(), Error> {
self.0.clear();
+ let primary_ids = wiki_cache.primary_ids();
+
for (title, info) in &wiki_cache.0 {
if overrides.0.get(title).map(|x| x.omit).unwrap_or(false) {
continue;
}
let mut game = Game::default();
- game.integrate_wiki(info, title);
+ game.integrate_wiki(info, title, &primary_ids);
for rename in &info.renamed_from {
if rename.to_lowercase() == title.to_lowercase() || self.0.contains_key(rename) {
continue;
@@ -213,14 +215,24 @@ pub struct Game {
}
impl Game {
- pub fn integrate_wiki(&mut self, cache: &WikiCacheEntry, title: &str) {
+ pub fn integrate_wiki(&mut self, cache: &WikiCacheEntry, title: &str, primary_ids: &PrimaryIds) {
self.steam = SteamMetadata { id: cache.steam };
self.gog = GogMetadata { id: cache.gog };
self.id = IdMetadata {
flatpak: None,
- gog_extra: cache.gog_side.clone(),
+ gog_extra: cache
+ .gog_side
+ .iter()
+ .filter(|x| !primary_ids.gog.contains(x))
+ .copied()
+ .collect(),
lutris: cache.lutris.clone(),
- steam_extra: cache.steam_side.clone(),
+ steam_extra: cache
+ .steam_side
+ .iter()
+ .filter(|x| !primary_ids.steam.contains(x))
+ .copied()
+ .collect(),
};
let paths = cache.parse_paths(title.to_string());
diff --git a/src/wiki.rs b/src/wiki.rs
index 6123727d..47ee88c3 100644
--- a/src/wiki.rs
+++ b/src/wiki.rs
@@ -1,4 +1,4 @@
-use std::collections::{BTreeMap, BTreeSet, HashMap};
+use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet};
use once_cell::sync::Lazy;
use regex::Regex;
@@ -92,6 +92,12 @@ async fn is_game_article(query: &str) -> Result {
Ok(false)
}
+#[derive(Debug, Default, Clone, PartialEq, Eq)]
+pub struct PrimaryIds {
+ pub steam: HashSet,
+ pub gog: HashSet,
+}
+
impl WikiCache {
pub async fn flag_recent_changes(&mut self, meta: &mut WikiMetaCache) -> Result<(), Error> {
struct RecentChange {
@@ -379,6 +385,21 @@ impl WikiCache {
Ok(())
}
+
+ pub fn primary_ids(&self) -> PrimaryIds {
+ let mut out = PrimaryIds::default();
+
+ for info in self.0.values() {
+ if let Some(id) = info.steam {
+ out.steam.insert(id);
+ }
+ if let Some(id) = info.gog {
+ out.gog.insert(id);
+ }
+ }
+
+ out
+ }
}
#[derive(Debug, Default, Clone, serde::Serialize, serde::Deserialize)]