SPB Git forge
38commits 1branches 0releases
338.7 MBsize
maindefault branch
3 h agolast push
HTML 53.9% TypeScript 44.5% JavaScript 0.6% SQL 0.5%
3.4 KB

# digitalrealty — Digital Realty facilities

Config config/connectors/digitalrealty.yaml
Parser apps/worker/src/connectors/operators1/digitalrealty.ts → digitalrealty_facility_v1
Kind / priority operator / 1
License / attribution Publicly accessible operator pages; factual data only; © Digital Realty Trust, Inc.
Cadence facility pages weekly · newsroom daily · index monthly · sitemap weekly

# What is crawled

  • Sitemap https://www.digitalrealty.com/en-sitemap.xml only (the root index lists 6 locale mirrors — de/fr/es/ko/zh/it — of the same facilities).
  • Facility pages /data-centers/<region>/<metro>/<code> (259), metro pages /data-centers/<region>/<metro> and region pages → index.
  • Press releases /about/newsroom/press-releases/<id>/<slug> (503) → newsroom (GenericConnector news fallback; no RSS exists — /rss.xml, /feed, /about/newsroom/rss.xml are 404).
  • robots.txt disallows /taxonomy/, /node/ only.

# Access

Open site; bot UA at L1 works (0 credits). maxLevel: 4 kept for resilience, maxCreditsPerRun: 40.

# Fields (method)

The page is Next.js; __NEXT_DATA__.props.pageProps.data is the Drupal node (content_type: "location"):

  • code ← field_site_code_location (IAD12, FRA1, JB1+JB3); name ← h1.hero-title ("Northern Virginia IAD12").
  • address/city/regionName/postalCode ← field_address_location parsed (NA "…, Ashburn, VA 20147"; EU "…, 60314 Frankfurt am Main, Germany" / "…, Vienna, 1210, Austria"). City falls back to metro when the address has no city (except market names like "Northern Virginia").
  • countryIso2 ← country ("USA", "Germany"); fallback address, then intro/description text (BOG1 has country: "Bogota" — junk in the source).
  • lat/lng ← field_latitude / field_longitude → exact.
  • buildingSqm ← field_total_building_size_in_m2 (or ft² × 0.0929).
  • pue ← field_design_pue; certifications ← field_certifications_compliance[].name + field_certifications_sustainabil[].name; cloudProviders ← field_available_clouds[].name ("(Physical)" suffix stripped).
  • renewableClaim ← field_carbon_free_energy / field_renewable_energy percentages, phrased "45% carbon-free energy; 5% renewable energy (operator-reported)".
  • description ← field_meta_tags.description + "UPS redundancy: 2N. Cooling redundancy: N+1."
  • Not used: field_utility_power_capacity — units are inconsistent across pages (16000 for IAD12 vs 120 for FRA1), so no MW is emitted rather than guessing.
  • Key digitalrealty:<CODE>; externalIds.digitalrealty_node, digitalrealty_site_code.

# Verification (2026-09-11)

  • Discovery: 826 URLs → facility_pages=259, newsroom=502, index=65.
  • --url IAD12: 43881 Devin Shafron Drive (Bldg B), Ashburn, VA 20147, US, geo 39.00203/-77.48344, 13,900 m², PUE 1.56, 7 certifications incl. LEED Gold — matches the live page.
  • --url FRA1: Hanauer Landstrasse 302, 60314 Frankfurt am Main, DE, geo 50.11951/8.73549, 1,100 m², clouds Azure/Google/IBM/Oracle.
  • Sweep of 8 spread pages (PAR13, BOG1, CT1, FRA14, JB1+JB3, MIA10, SFO10, VIE2): 8/8 valid, all with coordinates + building size. Newsroom sample 4/4 valid news events. Credits: 0.

# Gaps / TODO

  • BOG1: country still null (source says "Bogota"; intro text has no country name) — ingest can resolve from coordinates.
  • No MW per facility (see utility field note).