Skip to main content

Module scraper

Module scraper 

Source
Expand description

Parser de wikitext do PCGamingWiki para dados não disponíveis via Cargo API.

Extrai dois tipos de dados da wikitext bruta da página via action=parse:

  • System requirements — blocos {{System requirements}}, um por OS. Suporta parâmetros padrão (minCPU, recGPU, etc.), campos duplos (minCPU2, minGPU2 para alternativas AMD/Intel) e tiers extras (alt1Title/alt1CPU/etc., comuns em jogos AAA modernos como Witcher 3).

  • Game data paths — blocos {{Game data/config|OS|path}} e {{Game data/saves|OS|path}}.

§Estratégia de parsing

O wikitext não é parseado como árvore — isso seria frágil e lento. Em vez disso, identificamos blocos de template por nome ({{System requirements), extraímos o conteúdo até o }} de fechamento correspondente (respeitando aninhamento), e dentro do bloco extraímos parâmetros com regex simples |chave = valor.

§Normalização de valores

Todos os valores booleanos da PCGW (true, false, unknown, n/a, hackable, limited, always on) são preservados como Option<String> para que o frontend decida a semântica de exibição.

§Integração com fetch.rs

Este módulo é chamado em paralelo com as queries Cargo existentes. A busca do wikitext usa action=parse&prop=wikitext e requer uma chamada HTTP adicional — deve respeitar o mesmo rate limiting de 250ms.

Functions§

fetch_wikitext
Busca o wikitext bruto de uma página do PCGamingWiki pelo page_id.
parse_game_data_paths
Extrai todos os caminhos de save e config do wikitext.
parse_system_requirements
Extrai todos os blocos {{System requirements}} do wikitext.
scrape_pcgw_page
Faz o scraping completo de uma página do PCGamingWiki pelo page_id.