Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions functions/src/functions/scraping-functions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ export async function scrapingsFunction(

const responseCuencaCatalana = await embalsesRepository.actualizarCuencaCatalana();

const responseCuencaDuero = await embalsesRepository.actualizarCuencaDuero();

if (responseCuencaMediterranea) {
context.log(
"scrapings-function: Se han actualizado los embalses de la cuenca Mediterránea",
Expand All @@ -52,6 +54,13 @@ export async function scrapingsFunction(
"No se han podido actualizar los embalses de la cuenca Catalana"
);
}

if (responseCuencaDuero) {
context.log(`Se han actualizado los embalses de la cuenca Duero`);
} else {
context.log(
"No se han podido actualizar los embalses de la cuenca Duero")
}
} catch (error) {
context.error("scrapings-function: ERROR", error);
throw error;
Expand Down
6 changes: 3 additions & 3 deletions integrations/arcgis/src/embalse-provincias.ts
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ export const embalseProvincias = new Map<string, string>([
["castrelo", "Ourense"],
["castro", "Lugo"],
["castro-de-las-cogotas", "Ávila"],
["castro-el", "Ourense"],
["castro-el", "Zamora"],
["catllar", "Tarragona"],
["cavallers", "Lleida"],
["cazalegas", "Toledo"],
Expand Down Expand Up @@ -315,7 +315,7 @@ export const embalseProvincias = new Map<string, string>([
["san-anton", "Navarra"],
["san-bartolome", "Huelva"],
["san-clemente", "Huelva"],
["san-jose", "Almería"],
["san-jose", "Valladolid"],
["san-juan", "Madrid"],
["san-lorenzo", "Huelva"],
["san-martino", "Pontevedra"],
Expand All @@ -336,7 +336,7 @@ export const embalseProvincias = new Map<string, string>([
["sau", "Barcelona"],
["saucelle", "Salamanca"],
["sequeiros", "Ourense"],
["serones", "Almería"],
["serones", "Ávila"],
["sichar", "Huesca"],
["sierra-boyera", "Córdoba"],
["sierra-brava", "Cáceres"],
Expand Down
14 changes: 11 additions & 3 deletions integrations/scraping-cuenca-duero/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,22 @@
"version": "1.0.0",
"private": true,
"type": "module",
"exports": "./src/index.ts",
"exports": {
".": "./dist/index.js"
},
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"scripts": {
"start": "tsx --watch ./src/console-runner.ts",
"test": "echo \"Error: no test specified\" && exit 1"
"build": "run-p clean type-check build:scraping-cuenca-duero",
"build:scraping-cuenca-duero": "tsc",
"clean": "rimraf dist",
"type-check": "tsc --noEmit --preserveWatchOutput"
},
"dependencies": {
"axios": "^1.11.0",
"cheerio": "^1.1.2"
"cheerio": "^1.1.2",
"db-model": "^1.0.0"
},
"devDependencies": {
"ts-node": "^10.9.2",
Expand Down
2 changes: 1 addition & 1 deletion integrations/scraping-cuenca-duero/src/console-runner.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getEstadoCuencaDuero } from './integration';
import { getEstadoCuencaDuero } from './integration.js';

// We log a message in English to know what's happening
console.log('Fetching status for Duero basin...');
Expand Down
1 change: 1 addition & 0 deletions integrations/scraping-cuenca-duero/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from "./integration.js";
2 changes: 1 addition & 1 deletion integrations/scraping-cuenca-duero/src/integration.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import { describe, it, expect, vi, type Mock } from "vitest";

import axios from "axios";
import { getEstadoCuencaDuero } from "./integration";
import { getEstadoCuencaDuero } from "./integration.js";

vi.mock("axios");

Expand Down
3 changes: 1 addition & 2 deletions integrations/scraping-cuenca-duero/src/integration.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
// integration.ts (Versión Final Correcta)
import axios from 'axios';
import { EmbalseDuero } from './api/cuenca.model';
import { parseReservoirsFromHtml, getCurrentDate, mapToEmbalseUpdateSAIH } from './scraper';
import { parseReservoirsFromHtml, getCurrentDate, mapToEmbalseUpdateSAIH } from './scraper/index.js';
import { EmbalseUpdateSAIHEntity } from "db-model";

// Define the URL we are going to scrape
Expand Down
2 changes: 1 addition & 1 deletion integrations/scraping-cuenca-duero/src/scraper/business.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { EmbalseDuero } from "../api/cuenca.model";
import { EmbalseDuero } from "../api/cuenca.model.js";
import { load } from "cheerio";

// Función auxiliar para parsear string a number o null
Expand Down
4 changes: 2 additions & 2 deletions integrations/scraping-cuenca-duero/src/scraper/index.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
export * from './business';
export * from './mapper';
export * from './business.js';
export * from './mapper.js';
2 changes: 1 addition & 1 deletion integrations/scraping-cuenca-duero/src/scraper/mapper.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { EmbalseDuero } from '../api/cuenca.model';
import { EmbalseDuero } from '../api/cuenca.model.js';
import { EmbalseUpdateSAIHEntity } from "db-model";

/**
Expand Down
2 changes: 1 addition & 1 deletion integrations/scraping-cuenca-duero/src/test-scraper.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getEstadoCuencaDuero } from './integration';
import { getEstadoCuencaDuero } from './integration.js';

(async () => {
const data = await getEstadoCuencaDuero();
Expand Down
32 changes: 14 additions & 18 deletions integrations/scraping-cuenca-duero/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,20 +1,16 @@
{
"compilerOptions": {
"target": "ES2020",
"module": "ESNext",
"moduleResolution": "bundler",
"skipLibCheck": true,
"isolatedModules": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"resolveJsonModule": true,
"outDir": "dist",
"baseUrl": "./",
"paths": {
"@/*": ["src/*"],
"@/api/*": ["src/api/*"],
"@/scraper/*": ["src/scraper/*"]
}
},
"include": ["src"]
"compilerOptions": {
"target": "ESNext",
"module": "nodenext",
"moduleResolution": "nodenext",
"outDir": "dist",
"skipLibCheck": true,
"isolatedModules": true,
"esModuleInterop": true,
"verbatimModuleSyntax": false,
"declaration": true,
"baseUrl": "./"
},
"include": ["src/**/*"],
"exclude": ["dist", "node_modules"]
}
4 changes: 3 additions & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion packages/db/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
"prompts": "^2.4.2",
"scraping-cuenca-mediterranea": "*",
"scraping-cuenca-cantabrico": "*",
"scraping-cuenca-catalana": "*"
"scraping-cuenca-catalana": "*",
"scraping-cuenca-duero": "*"
}
}
26 changes: 26 additions & 0 deletions packages/db/src/dals/embalses/embalses.mappers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,3 +73,29 @@ export const mapperFromCuencasCatalanaToArcgis = new Map<
[250753004, { nombre: "Sant Pons", idArcgis: 280 }],

]);

// OJO Aguilar de Campoo, Cernadilla, Puente Porto, Ricobayo, Rábanos, Saucelle, Valparaíso, Las Vencías, Villagonzalo, Villalcampo, Nª Sª de Agavanzal, Aldeadávila, Almendra, Burgomillodo, Casares de Arbas, Aguilar, Serones, San José

export const mapperFromCuencasDueroToArcgis = new Map<
number,
InfoDestinoArcgis
>([
[1, { nombre: "Villameca", idArcgis: 344 }],
[2, { nombre: "Barrios de Luna", idArcgis: 42 }],
[3, { nombre: "Porma", idArcgis: 232 }],
[4, { nombre: "Riaño", idArcgis: 254 }],
[7, { nombre: "Camporredondo", idArcgis: 74 }],
[8, { nombre: "Compuerto", idArcgis: 105 }],
[11, { nombre: "Cervera-Ruesga", idArcgis: 98 }], // OJO puede ser Cervera
[12, { nombre: "La Requejada", idArcgis: 250 }],
[16, { nombre: "Arlanzón", idArcgis: 30 }],
[17, { nombre: "Úzquiza", idArcgis: 324 }],
[20, { nombre: "Cuerda del Pozo", idArcgis: 116 }],
[22, { nombre: "Linares del Arroyo", idArcgis: 185 }],
[23, { nombre: "El Pontón Alto", idArcgis: 375 }],
[26, { nombre: "Castro de las Cogotas", idArcgis: 86 }],
[28, { nombre: "Santa Teresa", idArcgis: 286 }],
[30, { nombre: "Irueña", idArcgis: 402 }],
[31, { nombre: "Águeda", idArcgis: 5 }],
[87, { nombre: "Castro", idArcgis: 26 }],
])
56 changes: 55 additions & 1 deletion packages/db/src/dals/embalses/embalses.repository.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import { scrapeSeedEmbalses } from "arcgis";
import { getEmbalsesContext } from "./embalses.context.js";
import { mapperFromCuencasMediterraneaToArcgis, mapperFromCuencasCantabricoToArcgis, mapperFromCuencasCatalanaToArcgis } from "./embalses.mappers.js";
import { mapperFromCuencasMediterraneaToArcgis, mapperFromCuencasCantabricoToArcgis, mapperFromCuencasCatalanaToArcgis, mapperFromCuencasDueroToArcgis } from "./embalses.mappers.js";
import { scrapeCuencaMediterranea } from "scraping-cuenca-mediterranea";
import { scrapeCuencaCantabrica } from 'scraping-cuenca-cantabrico';
import { integracionCuencaCatalana } from 'scraping-cuenca-catalana';
import { getEstadoCuencaDuero } from 'scraping-cuenca-duero';
import { parseDate } from "./embalses.helpers.js";

export const embalsesRepository = {
Expand Down Expand Up @@ -179,4 +180,57 @@ export const embalsesRepository = {

return actualizados > 0;
},
actualizarCuencaDuero: async (): Promise<boolean> => {
const embalsesDuero = await getEstadoCuencaDuero();

console.log(
`Se han scrapeado ${embalsesDuero.length} embalses de la Cuenca Mediterránea`
);

let actualizados = 0;
let noEncontrados = 0;
let sinMapper = 0;

for (const embalse of embalsesDuero) {
const infoDestino = mapperFromCuencasDueroToArcgis.get(embalse.id);

if (!infoDestino) {
sinMapper++;
console.warn(`Sin mapper para ID ${embalse.id} - ${embalse.nombre}`);
continue;
}

console.log(
`🔍 Mapeando: ID scraping ${embalse.id} -> _id BD ${infoDestino.idArcgis} (${infoDestino.nombre})`
);

const { matchedCount } = await getEmbalsesContext().updateOne(
{ _id: infoDestino.idArcgis.toString() },
{
$set: {
aguaActualSAIH: embalse.aguaActualSAIH,
fechaMedidaAguaActualSAIH: parseDate(embalse.fechaMedidaSAIH),
},
}
);

if (matchedCount > 0) {
actualizados++;
console.log(
`Actualizado: ${infoDestino.nombre} (_id: ${infoDestino.idArcgis}) -> ${embalse.aguaActualSAIH} hm³`
);
} else {
noEncontrados++;
console.warn(
`No encontrado en BD: _id ${infoDestino.idArcgis} - ${infoDestino.nombre}`
);
}
}

console.log(
`Resumen Cuenca Duero: ${actualizados} actualizados, ${noEncontrados} no encontrados, ${sinMapper} sin mapper`
);

return actualizados > 0;
}
};