OOKNET                             [ /  search the index  ]  
──────────────────────────────────────────────────────────────────────────────────────
══════════════════════════════════════════════════════════════════════════════════════
OOKNET   [ /  search  ]  
────────────────────────────────────────────────
════════════════════════════════════════════════
 
HASH      0152effce98c
DATE      2025-08-08
SUBJECT   web: enable eu realms, merge old records in
FILES     2 CHANGED
HASH      0152effce98c
DATE      2025-08-08
SUBJECT   web: enable eu realms, merge old
          records in
FILES     2 CHANGED
 

diff --git a/nix/api/realm.nix b/nix/api/realm.nix
index 6ae59c9..804bcb4 100644
--- a/nix/api/realm.nix
+++ b/nix/api/realm.nix
@@ -28,32 +28,32 @@ in {
   angerforge = mkRealm 4795 "us" "Andgerforge";
   eranikus = mkRealm 4800 "us" "Eranikus";
 
-  # EU Realms - TEMPORARILY DISABLED due to Blizzard API issues
-  # everlook = mkRealm 4440 "eu" "Everlook";
-  # auberdine = mkRealm 4441 "eu" "Auberdine";
-  # lakeshire = mkRealm 4442 "eu" "Lakeshire";
-  # chromie = mkRealm 4452 "eu" "Chromie";
-  # pyrewoodVillage = mkRealm 4453 "eu" "Pyrewood Village";
-  # mirageRaceway = mkRealm 4454 "eu" "Mirage Raceway";
-  # razorfen = mkRealm 4455 "eu" "Razorfen";
-  # nethergardeKeep = mkRealm 4456 "eu" "Nethergarde Keep";
-  # sulfuron = mkRealm 4464 "eu" "Sulfuron";
-  # golemagg = mkRealm 4465 "eu" "Golemagg";
-  # patchwerk = mkRealm 4466 "eu" "Patchwerk";
-  # firemaw = mkRealm 4467 "eu" "Firemaw";
-  # flamegor = mkRealm 4474 "eu" "Flamegor";
-  # gehennas = mkRealm 4476 "eu" "Gehennas";
-  # venoxis = mkRealm 4477 "eu" "Venoxis";
-  # hydraxianWaterlords = mkRealm 4678 "eu" "Hydraxian Waterlords";
-  # mograine = mkRealm 4701 "eu" "Mograine";
-  # amnennar = mkRealm 4703 "eu" "Amnennar";
-  # ashbringer = mkRealm 4742 "eu" "Ashbringer";
-  # transcendence = mkRealm 4745 "eu" "Transcendence";
-  # earthshaker = mkRealm 4749 "eu" "Earthshaker";
-  # giantstalker = mkRealm 4811 "eu" "Giantstalker";
-  # mandokir = mkRealm 4813 "eu" "Mandokir";
-  # thekal = mkRealm 4815 "eu" "Thekal";
-  # jindo = mkRealm 4816 "eu" "Jin'do";
+  # EU Realms - Smart merging enabled to preserve historical data
+  everlook = mkRealm 4440 "eu" "Everlook";
+  auberdine = mkRealm 4441 "eu" "Auberdine";
+  lakeshire = mkRealm 4442 "eu" "Lakeshire";
+  chromie = mkRealm 4452 "eu" "Chromie";
+  pyrewoodVillage = mkRealm 4453 "eu" "Pyrewood Village";
+  mirageRaceway = mkRealm 4454 "eu" "Mirage Raceway";
+  razorfen = mkRealm 4455 "eu" "Razorfen";
+  nethergardeKeep = mkRealm 4456 "eu" "Nethergarde Keep";
+  sulfuron = mkRealm 4464 "eu" "Sulfuron";
+  golemagg = mkRealm 4465 "eu" "Golemagg";
+  patchwerk = mkRealm 4466 "eu" "Patchwerk";
+  firemaw = mkRealm 4467 "eu" "Firemaw";
+  flamegor = mkRealm 4474 "eu" "Flamegor";
+  gehennas = mkRealm 4476 "eu" "Gehennas";
+  venoxis = mkRealm 4477 "eu" "Venoxis";
+  hydraxianWaterlords = mkRealm 4678 "eu" "Hydraxian Waterlords";
+  mograine = mkRealm 4701 "eu" "Mograine";
+  amnennar = mkRealm 4703 "eu" "Amnennar";
+  ashbringer = mkRealm 4742 "eu" "Ashbringer";
+  transcendence = mkRealm 4745 "eu" "Transcendence";
+  earthshaker = mkRealm 4749 "eu" "Earthshaker";
+  giantstalker = mkRealm 4811 "eu" "Giantstalker";
+  mandokir = mkRealm 4813 "eu" "Mandokir";
+  thekal = mkRealm 4815 "eu" "Thekal";
+  jindo = mkRealm 4816 "eu" "Jin'do";
 
   # kr
   shimmeringFlats = mkRealm 4417 "kr" "Shimmering Flats";

diff --git a/nix/api/realm.nix b/nix/api/rea
lm.nix
index 6ae59c9..804bcb4 100644
--- a/nix/api/realm.nix
+++ b/nix/api/realm.nix
@@ -28,32 +28,32 @@ in {
   angerforge = mkRealm 4795 "us" "Andgerfor
ge";
   eranikus = mkRealm 4800 "us" "Eranikus";
 
-  # EU Realms - TEMPORARILY DISABLED due to
 Blizzard API issues
-  # everlook = mkRealm 4440 "eu" "Everlook"
;
-  # auberdine = mkRealm 4441 "eu" "Auberdin
e";
-  # lakeshire = mkRealm 4442 "eu" "Lakeshir
e";
-  # chromie = mkRealm 4452 "eu" "Chromie";
-  # pyrewoodVillage = mkRealm 4453 "eu" "Py
rewood Village";
-  # mirageRaceway = mkRealm 4454 "eu" "Mira
ge Raceway";
-  # razorfen = mkRealm 4455 "eu" "Razorfen"
;
-  # nethergardeKeep = mkRealm 4456 "eu" "Ne
thergarde Keep";
-  # sulfuron = mkRealm 4464 "eu" "Sulfuron"
;
-  # golemagg = mkRealm 4465 "eu" "Golemagg"
;
-  # patchwerk = mkRealm 4466 "eu" "Patchwer
k";
-  # firemaw = mkRealm 4467 "eu" "Firemaw";
-  # flamegor = mkRealm 4474 "eu" "Flamegor"
;
-  # gehennas = mkRealm 4476 "eu" "Gehennas"
;
-  # venoxis = mkRealm 4477 "eu" "Venoxis";
-  # hydraxianWaterlords = mkRealm 4678 "eu"
 "Hydraxian Waterlords";
-  # mograine = mkRealm 4701 "eu" "Mograine"
;
-  # amnennar = mkRealm 4703 "eu" "Amnennar"
;
-  # ashbringer = mkRealm 4742 "eu" "Ashbrin
ger";
-  # transcendence = mkRealm 4745 "eu" "Tran
scendence";
-  # earthshaker = mkRealm 4749 "eu" "Earths
haker";
-  # giantstalker = mkRealm 4811 "eu" "Giant
stalker";
-  # mandokir = mkRealm 4813 "eu" "Mandokir"
;
-  # thekal = mkRealm 4815 "eu" "Thekal";
-  # jindo = mkRealm 4816 "eu" "Jin'do";
+  # EU Realms - Smart merging enabled to pr
eserve historical data
+  everlook = mkRealm 4440 "eu" "Everlook";
+  auberdine = mkRealm 4441 "eu" "Auberdine"
;
+  lakeshire = mkRealm 4442 "eu" "Lakeshire"
;
+  chromie = mkRealm 4452 "eu" "Chromie";
+  pyrewoodVillage = mkRealm 4453 "eu" "Pyre
wood Village";
+  mirageRaceway = mkRealm 4454 "eu" "Mirage
 Raceway";
+  razorfen = mkRealm 4455 "eu" "Razorfen";
+  nethergardeKeep = mkRealm 4456 "eu" "Neth
ergarde Keep";
+  sulfuron = mkRealm 4464 "eu" "Sulfuron";
+  golemagg = mkRealm 4465 "eu" "Golemagg";
+  patchwerk = mkRealm 4466 "eu" "Patchwerk"
;
+  firemaw = mkRealm 4467 "eu" "Firemaw";
+  flamegor = mkRealm 4474 "eu" "Flamegor";
+  gehennas = mkRealm 4476 "eu" "Gehennas";
+  venoxis = mkRealm 4477 "eu" "Venoxis";
+  hydraxianWaterlords = mkRealm 4678 "eu" "
Hydraxian Waterlords";
+  mograine = mkRealm 4701 "eu" "Mograine";
+  amnennar = mkRealm 4703 "eu" "Amnennar";
+  ashbringer = mkRealm 4742 "eu" "Ashbringe
r";
+  transcendence = mkRealm 4745 "eu" "Transc
endence";
+  earthshaker = mkRealm 4749 "eu" "Earthsha
ker";
+  giantstalker = mkRealm 4811 "eu" "Giantst
alker";
+  mandokir = mkRealm 4813 "eu" "Mandokir";
+  thekal = mkRealm 4815 "eu" "Thekal";
+  jindo = mkRealm 4816 "eu" "Jin'do";
 
   # kr
   shimmeringFlats = mkRealm 4417 "kr" "Shim
mering Flats";
 

diff --git a/nix/apps/challenge-mode-leaderboard.nix b/nix/apps/challenge-mode-lea
derboard.nix
index 659719c..7c3fa63 100644
--- a/nix/apps/challenge-mode-leaderboard.nix
+++ b/nix/apps/challenge-mode-leaderboard.nix
@@ -101,6 +101,35 @@
               return None
 
 
+      def merge_leaderboard_data(existing_path, new_data):
+          """Merge new leaderboard data with existing data, preserving historical
 entries."""
+          if not os.path.exists(existing_path):
+              return new_data
+          
+          try:
+              with open(existing_path, 'r', encoding='utf-8') as f:
+                  existing_data = json.load(f)
+              
+              # Get existing and new leading groups
+              existing_groups = existing_data.get('leading_groups', [])
+              new_groups = new_data.get('leading_groups', [])
+              
+              # Merge the leading groups (append new to existing)
+              merged_groups = existing_groups + new_groups
+              
+              # Use new data as base (has current metadata) but with merged group
s
+              merged_data = new_data.copy()
+              merged_data['leading_groups'] = merged_groups
+              
+              print(f"    Merged {len(existing_groups)} existing + {len(new_group
s)} new = {len(merged_groups)} total entries")
+              
+              return merged_data
+              
+          except (json.JSONDecodeError, KeyError) as e:
+              print(f"    ERROR reading existing file, using new data only: {e}")
+              return new_data
+
+
       def main():
           if not API_TOKEN:
               print(
@@ -142,8 +171,15 @@
                       f"{realm_slug}-{dungeon['slug']}-leaderboard.json"
                   )
                   os.makedirs(os.path.dirname(output_path), exist_ok=True)
+                  
+                  # For EU realms, merge with existing data to preserve historica
l records
+                  if realm_info['region'] == 'eu':
+                      final_data = merge_leaderboard_data(output_path, leaderboar
d)
+                  else:
+                      final_data = leaderboard
+                  
                   with open(output_path, 'w', encoding='utf-8') as f:
-                      json.dump(leaderboard, f, indent=2)
+                      json.dump(final_data, f, indent=2)
 
               print("\nDone.")
 

diff --git a/nix/apps/challenge-mode-leaderb
oard.nix b/nix/apps/challenge-mode-leaderboa
rd.nix
index 659719c..7c3fa63 100644
--- a/nix/apps/challenge-mode-leaderboard.ni
x
+++ b/nix/apps/challenge-mode-leaderboard.ni
x
@@ -101,6 +101,35 @@
               return None
 
 
+      def merge_leaderboard_data(existing_p
ath, new_data):
+          """Merge new leaderboard data wit
h existing data, preserving historical entri
es."""
+          if not os.path.exists(existing_pa
th):
+              return new_data
+          
+          try:
+              with open(existing_path, 'r',
 encoding='utf-8') as f:
+                  existing_data = json.load
(f)
+              
+              # Get existing and new leadin
g groups
+              existing_groups = existing_da
ta.get('leading_groups', [])
+              new_groups = new_data.get('le
ading_groups', [])
+              
+              # Merge the leading groups (a
ppend new to existing)
+              merged_groups = existing_grou
ps + new_groups
+              
+              # Use new data as base (has c
urrent metadata) but with merged groups
+              merged_data = new_data.copy()
+              merged_data['leading_groups']
 = merged_groups
+              
+              print(f"    Merged {len(exist
ing_groups)} existing + {len(new_groups)} ne
w = {len(merged_groups)} total entries")
+              
+              return merged_data
+              
+          except (json.JSONDecodeError, Key
Error) as e:
+              print(f"    ERROR reading exi
sting file, using new data only: {e}")
+              return new_data
+
+
       def main():
           if not API_TOKEN:
               print(
@@ -142,8 +171,15 @@
                       f"{realm_slug}-{dunge
on['slug']}-leaderboard.json"
                   )
                   os.makedirs(os.path.dirna
me(output_path), exist_ok=True)
+                  
+                  # For EU realms, merge wi
th existing data to preserve historical reco
rds
+                  if realm_info['region'] =
= 'eu':
+                      final_data = merge_le
aderboard_data(output_path, leaderboard)
+                  else:
+                      final_data = leaderbo
ard
+                  
                   with open(output_path, 'w
', encoding='utf-8') as f:
-                      json.dump(leaderboard
, f, indent=2)
+                      json.dump(final_data,
 f, indent=2)
 
               print("\nDone.")
 
 
[ BACK TO LOG ]
──────────────────────────────────────────────────────────────────────────────────────
OOKNET
────────────────────────────────────────────────
OOKNET