@tricoteuses/senat 2.22.16 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +168 -0
- package/lib/aggregates.d.ts +52 -0
- package/lib/aggregates.js +930 -0
- package/lib/aggregates.mjs +713 -0
- package/lib/aggregates.ts +833 -0
- package/lib/config.d.ts +10 -0
- package/lib/config.js +16 -0
- package/lib/config.mjs +16 -0
- package/lib/config.ts +26 -0
- package/lib/databases.d.ts +2 -0
- package/lib/databases.js +26 -0
- package/lib/databases.mjs +57 -0
- package/lib/databases.ts +71 -0
- package/lib/datasets.d.ts +34 -0
- package/lib/datasets.js +233 -0
- package/lib/datasets.mjs +78 -0
- package/lib/datasets.ts +118 -0
- package/lib/fields.d.ts +10 -0
- package/lib/fields.js +68 -0
- package/lib/fields.mjs +22 -0
- package/lib/fields.ts +29 -0
- package/lib/git.d.ts +26 -0
- package/lib/git.js +167 -0
- package/lib/index.d.ts +13 -0
- package/lib/index.js +1 -0
- package/lib/index.mjs +7 -0
- package/lib/index.ts +64 -0
- package/lib/inserters.d.ts +98 -0
- package/lib/inserters.js +500 -0
- package/lib/inserters.mjs +360 -0
- package/lib/inserters.ts +521 -0
- package/lib/legislatures.json +38 -0
- package/lib/loaders.d.ts +58 -0
- package/lib/loaders.js +286 -0
- package/lib/loaders.mjs +158 -0
- package/lib/loaders.ts +271 -0
- package/lib/model/agenda.d.ts +6 -0
- package/lib/model/agenda.js +148 -0
- package/lib/model/ameli.d.ts +51 -0
- package/lib/model/ameli.js +149 -0
- package/lib/model/ameli.mjs +84 -0
- package/lib/model/ameli.ts +100 -0
- package/lib/model/commission.d.ts +18 -0
- package/lib/model/commission.js +269 -0
- package/lib/model/debats.d.ts +67 -0
- package/lib/model/debats.js +95 -0
- package/lib/model/debats.mjs +43 -0
- package/lib/model/debats.ts +68 -0
- package/lib/model/documents.d.ts +12 -0
- package/lib/model/documents.js +151 -0
- package/lib/model/dosleg.d.ts +7 -0
- package/lib/model/dosleg.js +326 -0
- package/lib/model/dosleg.mjs +196 -0
- package/lib/model/dosleg.ts +240 -0
- package/lib/model/index.d.ts +7 -0
- package/lib/model/index.js +7 -0
- package/lib/model/index.mjs +5 -0
- package/lib/model/index.ts +15 -0
- package/lib/model/questions.d.ts +45 -0
- package/lib/model/questions.js +89 -0
- package/lib/model/questions.mjs +71 -0
- package/lib/model/questions.ts +93 -0
- package/lib/model/scrutins.d.ts +13 -0
- package/lib/model/scrutins.js +114 -0
- package/lib/model/seance.d.ts +3 -0
- package/lib/model/seance.js +267 -0
- package/lib/model/sens.d.ts +146 -0
- package/lib/model/sens.js +454 -0
- package/lib/model/sens.mjs +415 -0
- package/lib/model/sens.ts +516 -0
- package/lib/model/texte.d.ts +7 -0
- package/lib/model/texte.js +256 -0
- package/lib/model/texte.mjs +208 -0
- package/lib/model/texte.ts +229 -0
- package/lib/model/util.d.ts +9 -0
- package/lib/model/util.js +38 -0
- package/lib/model/util.mjs +19 -0
- package/lib/model/util.ts +32 -0
- package/lib/parsers/texte.d.ts +7 -0
- package/lib/parsers/texte.js +228 -0
- package/lib/raw_types/ameli.d.ts +914 -0
- package/lib/raw_types/ameli.js +5 -0
- package/lib/raw_types/ameli.mjs +163 -0
- package/lib/raw_types/debats.d.ts +207 -0
- package/lib/raw_types/debats.js +5 -0
- package/lib/raw_types/debats.mjs +58 -0
- package/lib/raw_types/dosleg.d.ts +1619 -0
- package/lib/raw_types/dosleg.js +5 -0
- package/lib/raw_types/dosleg.mjs +438 -0
- package/lib/raw_types/questions.d.ts +419 -0
- package/lib/raw_types/questions.js +5 -0
- package/lib/raw_types/questions.mjs +11 -0
- package/lib/raw_types/senat.d.ts +11368 -0
- package/lib/raw_types/senat.js +5 -0
- package/lib/raw_types/sens.d.ts +8248 -0
- package/lib/raw_types/sens.js +5 -0
- package/lib/raw_types/sens.mjs +508 -0
- package/lib/raw_types_kysely/ameli.d.ts +915 -0
- package/lib/raw_types_kysely/ameli.js +7 -0
- package/lib/raw_types_kysely/ameli.mjs +5 -0
- package/lib/raw_types_kysely/ameli.ts +951 -0
- package/lib/raw_types_kysely/debats.d.ts +207 -0
- package/lib/raw_types_kysely/debats.js +7 -0
- package/lib/raw_types_kysely/debats.mjs +5 -0
- package/lib/raw_types_kysely/debats.ts +222 -0
- package/lib/raw_types_kysely/dosleg.d.ts +3532 -0
- package/lib/raw_types_kysely/dosleg.js +7 -0
- package/lib/raw_types_kysely/dosleg.mjs +5 -0
- package/lib/raw_types_kysely/dosleg.ts +3621 -0
- package/lib/raw_types_kysely/questions.d.ts +414 -0
- package/lib/raw_types_kysely/questions.js +7 -0
- package/lib/raw_types_kysely/questions.mjs +5 -0
- package/lib/raw_types_kysely/questions.ts +426 -0
- package/lib/raw_types_kysely/sens.d.ts +4394 -0
- package/lib/raw_types_kysely/sens.js +7 -0
- package/lib/raw_types_kysely/sens.mjs +5 -0
- package/lib/raw_types_kysely/sens.ts +4499 -0
- package/lib/raw_types_schemats/ameli.d.ts +539 -0
- package/lib/raw_types_schemats/ameli.js +2 -0
- package/lib/raw_types_schemats/ameli.mjs +2 -0
- package/lib/raw_types_schemats/ameli.ts +601 -0
- package/lib/raw_types_schemats/debats.d.ts +127 -0
- package/lib/raw_types_schemats/debats.js +2 -0
- package/lib/raw_types_schemats/debats.mjs +2 -0
- package/lib/raw_types_schemats/debats.ts +145 -0
- package/lib/raw_types_schemats/dosleg.d.ts +977 -0
- package/lib/raw_types_schemats/dosleg.js +2 -0
- package/lib/raw_types_schemats/dosleg.mjs +2 -0
- package/lib/raw_types_schemats/dosleg.ts +2193 -0
- package/lib/raw_types_schemats/questions.d.ts +235 -0
- package/lib/raw_types_schemats/questions.js +2 -0
- package/lib/raw_types_schemats/questions.mjs +2 -0
- package/lib/raw_types_schemats/questions.ts +249 -0
- package/lib/raw_types_schemats/sens.d.ts +6915 -0
- package/lib/raw_types_schemats/sens.js +2 -0
- package/lib/raw_types_schemats/sens.mjs +2 -0
- package/lib/raw_types_schemats/sens.ts +2907 -0
- package/lib/scripts/convert_data.d.ts +1 -0
- package/lib/scripts/convert_data.js +354 -0
- package/lib/scripts/convert_data.mjs +181 -0
- package/lib/scripts/convert_data.ts +243 -0
- package/lib/scripts/data-download.d.ts +1 -0
- package/lib/scripts/data-download.js +12 -0
- package/lib/scripts/datautil.d.ts +8 -0
- package/lib/scripts/datautil.js +34 -0
- package/lib/scripts/datautil.mjs +16 -0
- package/lib/scripts/datautil.ts +19 -0
- package/lib/scripts/images/transparent_150x192.jpg +0 -0
- package/lib/scripts/images/transparent_155x225.jpg +0 -0
- package/lib/scripts/parse_textes.d.ts +1 -0
- package/lib/scripts/parse_textes.js +44 -0
- package/lib/scripts/parse_textes.mjs +46 -0
- package/lib/scripts/parse_textes.ts +65 -0
- package/lib/scripts/retrieve_agenda.d.ts +1 -0
- package/lib/scripts/retrieve_agenda.js +132 -0
- package/lib/scripts/retrieve_cr_commission.d.ts +1 -0
- package/lib/scripts/retrieve_cr_commission.js +364 -0
- package/lib/scripts/retrieve_cr_seance.d.ts +6 -0
- package/lib/scripts/retrieve_cr_seance.js +347 -0
- package/lib/scripts/retrieve_documents.d.ts +3 -0
- package/lib/scripts/retrieve_documents.js +219 -0
- package/lib/scripts/retrieve_documents.mjs +249 -0
- package/lib/scripts/retrieve_documents.ts +298 -0
- package/lib/scripts/retrieve_open_data.d.ts +1 -0
- package/lib/scripts/retrieve_open_data.js +315 -0
- package/lib/scripts/retrieve_open_data.mjs +217 -0
- package/lib/scripts/retrieve_open_data.ts +268 -0
- package/lib/scripts/retrieve_senateurs_photos.d.ts +1 -0
- package/lib/scripts/retrieve_senateurs_photos.js +147 -0
- package/lib/scripts/retrieve_senateurs_photos.mjs +147 -0
- package/lib/scripts/retrieve_senateurs_photos.ts +177 -0
- package/lib/scripts/retrieve_videos.d.ts +1 -0
- package/lib/scripts/retrieve_videos.js +461 -0
- package/lib/scripts/shared/cli_helpers.d.ts +95 -0
- package/lib/scripts/shared/cli_helpers.js +91 -0
- package/lib/scripts/shared/cli_helpers.ts +36 -0
- package/lib/scripts/shared/util.d.ts +4 -0
- package/lib/scripts/shared/util.js +35 -0
- package/lib/scripts/shared/util.ts +33 -0
- package/lib/scripts/test_iter_load.d.ts +1 -0
- package/lib/scripts/test_iter_load.js +12 -0
- package/lib/src/config.d.ts +22 -0
- package/lib/src/config.js +17 -7
- package/lib/src/conversion_textes.js +5 -1
- package/lib/src/databases.d.ts +2 -1
- package/lib/src/databases_postgres.d.ts +4 -0
- package/lib/src/databases_postgres.js +23 -0
- package/lib/src/datasets.d.ts +4 -0
- package/lib/src/datasets.js +16 -2
- package/lib/src/git.d.ts +1 -0
- package/lib/src/git.js +45 -11
- package/lib/src/index.d.ts +19 -8
- package/lib/src/index.js +6 -1
- package/lib/src/loaders.js +10 -4
- package/lib/src/model/agenda.js +2 -2
- package/lib/src/model/ameli.d.ts +64 -52
- package/lib/src/model/ameli.js +147 -145
- package/lib/src/model/ameli_postgres.d.ts +67 -0
- package/lib/src/model/ameli_postgres.js +150 -0
- package/lib/src/model/commission.d.ts +3 -2
- package/lib/src/model/commission.js +2 -2
- package/lib/src/model/debats.d.ts +38 -66
- package/lib/src/model/debats.js +110 -93
- package/lib/src/model/documents.d.ts +32 -12
- package/lib/src/model/documents.js +171 -130
- package/lib/src/model/dosleg.d.ts +142 -5
- package/lib/src/model/dosleg.js +298 -156
- package/lib/src/model/questions.d.ts +54 -45
- package/lib/src/model/questions.js +89 -87
- package/lib/src/model/scrutins.d.ts +48 -13
- package/lib/src/model/scrutins.js +118 -111
- package/lib/src/model/seance.js +3 -3
- package/lib/src/model/sens.d.ts +109 -179
- package/lib/src/model/sens.js +384 -484
- package/lib/src/model/util.d.ts +0 -8
- package/lib/src/model/util.js +0 -23
- package/lib/src/parsers/texte.js +7 -7
- package/lib/src/raw_types/ameli.d.ts +1651 -803
- package/lib/src/raw_types/ameli.js +1816 -5
- package/lib/src/raw_types/debats.d.ts +353 -180
- package/lib/src/raw_types/debats.js +517 -5
- package/lib/src/raw_types/dosleg.d.ts +2862 -1527
- package/lib/src/raw_types/dosleg.js +4354 -5
- package/lib/src/raw_types/questions.d.ts +671 -395
- package/lib/src/raw_types/questions.js +1303 -5
- package/lib/src/raw_types/sens.d.ts +7743 -8148
- package/lib/src/raw_types/sens.js +10429 -5
- package/lib/src/raw_types_schemats/ameli.d.ts +4 -2
- package/lib/src/raw_types_schemats/debats.d.ts +2 -2
- package/lib/src/raw_types_schemats/dosleg.d.ts +2 -2
- package/lib/src/raw_types_schemats/questions.d.ts +2 -2
- package/lib/src/raw_types_schemats/sens.d.ts +10 -4216
- package/lib/src/scripts/convert_data.js +7 -6
- package/lib/src/scripts/convert_xml_to_html.js +2 -2
- package/lib/src/scripts/data-download.js +3 -2
- package/lib/src/scripts/retrieve_agenda.js +21 -9
- package/lib/src/scripts/retrieve_cr_commission.js +17 -17
- package/lib/src/scripts/retrieve_cr_seance.d.ts +14 -1
- package/lib/src/scripts/retrieve_cr_seance.js +10 -11
- package/lib/src/scripts/retrieve_documents.d.ts +11 -2
- package/lib/src/scripts/retrieve_documents.js +25 -14
- package/lib/src/scripts/retrieve_open_data.js +514 -153
- package/lib/src/scripts/retrieve_senateurs_photos.js +25 -11
- package/lib/src/scripts/retrieve_videos.js +12 -11
- package/lib/src/scripts/shared/cli_helpers.d.ts +1 -6
- package/lib/src/scripts/shared/cli_helpers.js +9 -8
- package/lib/src/scripts/shared/incremental_import_sql.d.ts +2 -0
- package/lib/src/scripts/shared/incremental_import_sql.js +894 -0
- package/lib/src/scripts/shared/prefixed_tables.d.ts +10 -0
- package/lib/src/scripts/shared/prefixed_tables.js +36 -0
- package/lib/src/scripts/shared/schema_version.d.ts +3 -0
- package/lib/src/scripts/shared/schema_version.js +97 -0
- package/lib/src/scripts/shared/staging_import.d.ts +3 -0
- package/lib/src/scripts/shared/staging_import.js +80 -0
- package/lib/src/scripts/shared/staging_metadata_sql.d.ts +1 -0
- package/lib/src/scripts/shared/staging_metadata_sql.js +221 -0
- package/lib/src/scripts/validate_prefixed_tables.d.ts +1 -0
- package/lib/src/scripts/validate_prefixed_tables.js +101 -0
- package/lib/src/types/ameli.d.ts +4 -4
- package/lib/src/types/debats.d.ts +2 -2
- package/lib/src/types/dosleg.d.ts +39 -39
- package/lib/src/types/questions.d.ts +2 -2
- package/lib/src/types/sens.d.ts +0 -2
- package/lib/src/types/texte.d.ts +1 -1
- package/lib/src/utils/cr_spliting.d.ts +9 -6
- package/lib/src/utils/cr_spliting.js +6 -101
- package/lib/src/utils/reunion_odj_building.d.ts +7 -3
- package/lib/src/utils/reunion_parsing.d.ts +2 -1
- package/lib/src/utils/reunion_parsing.js +2 -2
- package/lib/src/videos/match.js +8 -5
- package/lib/src/videos/pipeline.d.ts +6 -2
- package/lib/src/videos/pipeline.js +21 -8
- package/lib/src/videos/search.js +6 -2
- package/lib/strings.d.ts +1 -0
- package/lib/strings.js +18 -0
- package/lib/strings.mjs +18 -0
- package/lib/strings.ts +26 -0
- package/lib/tests/incrementalImportSql.test.d.ts +1 -0
- package/lib/tests/incrementalImportSql.test.js +155 -0
- package/lib/tests/prefixedTables.test.d.ts +1 -0
- package/lib/tests/prefixedTables.test.js +22 -0
- package/lib/tests/schemaVersion.test.d.ts +1 -0
- package/lib/tests/schemaVersion.test.js +23 -0
- package/lib/tests/validatePrefixedTables.test.d.ts +1 -0
- package/lib/tests/validatePrefixedTables.test.js +14 -0
- package/lib/types/agenda.d.ts +44 -0
- package/lib/types/agenda.js +1 -0
- package/lib/types/ameli.d.ts +5 -0
- package/lib/types/ameli.js +1 -0
- package/lib/types/ameli.mjs +13 -0
- package/lib/types/ameli.ts +21 -0
- package/lib/types/compte_rendu.d.ts +83 -0
- package/lib/types/compte_rendu.js +1 -0
- package/lib/types/debats.d.ts +2 -0
- package/lib/types/debats.js +1 -0
- package/lib/types/debats.mjs +2 -0
- package/lib/types/debats.ts +6 -0
- package/lib/types/dosleg.d.ts +70 -0
- package/lib/types/dosleg.js +1 -0
- package/lib/types/dosleg.mjs +151 -0
- package/lib/types/dosleg.ts +284 -0
- package/lib/types/questions.d.ts +2 -0
- package/lib/types/questions.js +1 -0
- package/lib/types/questions.mjs +1 -0
- package/lib/types/questions.ts +3 -0
- package/lib/types/sens.d.ts +10 -0
- package/lib/types/sens.js +1 -0
- package/lib/types/sens.mjs +1 -0
- package/lib/types/sens.ts +12 -0
- package/lib/types/sessions.d.ts +5 -0
- package/lib/types/sessions.js +84 -0
- package/lib/types/sessions.mjs +43 -0
- package/lib/types/sessions.ts +42 -0
- package/lib/types/texte.d.ts +74 -0
- package/lib/types/texte.js +16 -0
- package/lib/types/texte.mjs +16 -0
- package/lib/types/texte.ts +76 -0
- package/lib/typings/windows-1252.d.js +2 -0
- package/lib/typings/windows-1252.d.mjs +2 -0
- package/lib/typings/windows-1252.d.ts +11 -0
- package/lib/utils/cr_spliting.d.ts +28 -0
- package/lib/utils/cr_spliting.js +265 -0
- package/lib/utils/date.d.ts +10 -0
- package/lib/utils/date.js +100 -0
- package/lib/utils/nvs-timecode.d.ts +7 -0
- package/lib/utils/nvs-timecode.js +79 -0
- package/lib/utils/reunion_grouping.d.ts +9 -0
- package/lib/utils/reunion_grouping.js +361 -0
- package/lib/utils/reunion_odj_building.d.ts +5 -0
- package/lib/utils/reunion_odj_building.js +154 -0
- package/lib/utils/reunion_parsing.d.ts +23 -0
- package/lib/utils/reunion_parsing.js +209 -0
- package/lib/utils/scoring.d.ts +14 -0
- package/lib/utils/scoring.js +147 -0
- package/lib/utils/string_cleaning.d.ts +7 -0
- package/lib/utils/string_cleaning.js +57 -0
- package/lib/validators/config.d.ts +9 -0
- package/lib/validators/config.js +10 -0
- package/lib/validators/config.mjs +54 -0
- package/lib/validators/config.ts +79 -0
- package/lib/validators/senat.d.ts +0 -0
- package/lib/validators/senat.js +28 -0
- package/lib/validators/senat.mjs +24 -0
- package/lib/validators/senat.ts +26 -0
- package/package.json +11 -11
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import assert from "assert";
|
|
2
1
|
import { execSync } from "child_process";
|
|
3
2
|
import commandLineArgs from "command-line-args";
|
|
4
3
|
import fs from "fs-extra";
|
|
5
4
|
// import fetch from "node-fetch"
|
|
6
5
|
import path from "path";
|
|
6
|
+
import { fileURLToPath } from "url";
|
|
7
7
|
// import stream from "stream"
|
|
8
8
|
// import util from "util"
|
|
9
|
+
import * as git from "../git";
|
|
9
10
|
import { findActif as findActifSenateurs } from "../model/sens";
|
|
10
11
|
import { slugify } from "../strings";
|
|
11
|
-
import { commonOptions } from "./shared/cli_helpers";
|
|
12
|
+
import { assertExistingDirectory, commonOptions } from "./shared/cli_helpers";
|
|
12
13
|
const optionsDefinitions = [
|
|
13
14
|
...commonOptions,
|
|
14
15
|
{
|
|
@@ -18,22 +19,32 @@ const optionsDefinitions = [
|
|
|
18
19
|
type: Boolean,
|
|
19
20
|
},
|
|
20
21
|
];
|
|
22
|
+
let exitCode = 10; // 0: some data changed, 10: no modification
|
|
21
23
|
const options = commandLineArgs(optionsDefinitions);
|
|
22
24
|
// const pipeline = util.promisify(stream.pipeline)
|
|
25
|
+
const scriptDir = path.dirname(fileURLToPath(import.meta.url));
|
|
26
|
+
function commitAndPushGit(datasetDir, options) {
|
|
27
|
+
if (options.commit) {
|
|
28
|
+
const errorCode = git.commitAndPush(datasetDir, "Nouvelle moisson", options.remote);
|
|
29
|
+
if ((exitCode === 10 && errorCode !== 10) || (exitCode === 0 && errorCode !== 0 && errorCode !== 10)) {
|
|
30
|
+
exitCode = errorCode;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
23
34
|
async function retrievePhotosSenateurs() {
|
|
24
|
-
const dataDir = options["dataDir"];
|
|
25
|
-
assert(dataDir, "Missing argument: data directory");
|
|
35
|
+
const dataDir = assertExistingDirectory(options["dataDir"], "data directory");
|
|
26
36
|
const photosDir = path.join(dataDir, "photos_senateurs");
|
|
27
|
-
const missingPhotoFilePath = path.resolve(
|
|
37
|
+
const missingPhotoFilePath = path.resolve(scriptDir, "images", "transparent_155x225.jpg");
|
|
28
38
|
const sens = await Array.fromAsync(findActifSenateurs());
|
|
29
39
|
// Download photos.
|
|
30
40
|
fs.ensureDirSync(photosDir);
|
|
31
41
|
if (options["fetch"]) {
|
|
32
42
|
for (const sen of sens) {
|
|
33
|
-
const
|
|
34
|
-
const
|
|
43
|
+
const nom = sen.sennomuse ?? "";
|
|
44
|
+
const safePhotoStem = `${slugify(nom, "_")}_${slugify(sen.senprenomuse, "_")}${slugify(sen.senmat, "_")}`;
|
|
45
|
+
const photoFilename = safePhotoStem + ".jpg";
|
|
35
46
|
const photoFilePath = path.join(photosDir, photoFilename);
|
|
36
|
-
const photoTempFilename =
|
|
47
|
+
const photoTempFilename = safePhotoStem + "_temp.jpg";
|
|
37
48
|
const photoTempFilePath = path.join(photosDir, photoTempFilename);
|
|
38
49
|
const urlPhoto = `https://www.senat.fr/senimg/${photoFilename}`;
|
|
39
50
|
if (!options["silent"]) {
|
|
@@ -81,7 +92,8 @@ async function retrievePhotosSenateurs() {
|
|
|
81
92
|
}
|
|
82
93
|
// Resize photos to 155x225, because some haven't exactly this size.
|
|
83
94
|
for (const sen of sens) {
|
|
84
|
-
const
|
|
95
|
+
const nom = sen.sennomuse ?? "";
|
|
96
|
+
const photoStem = `${slugify(nom, "_")}_${slugify(sen.senprenomuse, "_")}${slugify(sen.senmat, "_")}`;
|
|
85
97
|
const photoFilename = photoStem + ".jpg";
|
|
86
98
|
const photoFilePath = path.join(photosDir, photoFilename);
|
|
87
99
|
if (fs.existsSync(photoFilePath)) {
|
|
@@ -109,7 +121,8 @@ async function retrievePhotosSenateurs() {
|
|
|
109
121
|
const row = sens.slice(senIndex, senIndex + 25);
|
|
110
122
|
const photosFilenames = [];
|
|
111
123
|
for (const [columnIndex, sen] of row.entries()) {
|
|
112
|
-
const
|
|
124
|
+
const nom = sen.sennomuse ?? "";
|
|
125
|
+
const photoStem = `${slugify(nom, "_")}_${slugify(sen.senprenomuse, "_")}${slugify(sen.senmat, "_")}`;
|
|
113
126
|
const photoFilename = `${photoStem}_155x225.jpg`;
|
|
114
127
|
photosFilenames.push(photoFilename);
|
|
115
128
|
photoBySenmat[sen.senmat] = {
|
|
@@ -138,9 +151,10 @@ async function retrievePhotosSenateurs() {
|
|
|
138
151
|
}
|
|
139
152
|
const jsonFilePath = path.join(photosDir, "senateurs.json");
|
|
140
153
|
fs.writeFileSync(jsonFilePath, JSON.stringify(photoBySenmat, null, 2));
|
|
154
|
+
commitAndPushGit(photosDir, options);
|
|
141
155
|
}
|
|
142
156
|
retrievePhotosSenateurs()
|
|
143
|
-
.then(() => process.exit(
|
|
157
|
+
.then(() => process.exit(exitCode))
|
|
144
158
|
.catch((error) => {
|
|
145
159
|
console.log(error);
|
|
146
160
|
process.exit(1);
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
// scripts/retrieve_senat_videos_from_agendas.ts
|
|
2
|
-
import assert from "assert";
|
|
3
2
|
import commandLineArgs from "command-line-args";
|
|
4
3
|
import fs from "fs-extra";
|
|
5
4
|
import fsp from "fs/promises";
|
|
6
5
|
import path from "path";
|
|
7
6
|
import * as git from "../git.js";
|
|
8
7
|
import { AGENDA_FOLDER, iterLoadSenatAgendas } from "../loaders";
|
|
9
|
-
import { getSessionsFromStart } from "../types/sessions";
|
|
10
|
-
import { commonOptions } from "./shared/cli_helpers";
|
|
8
|
+
import { getSessionsFromStart, UNDEFINED_SESSION } from "../types/sessions";
|
|
9
|
+
import { assertExistingDirectory, commonOptions } from "./shared/cli_helpers";
|
|
11
10
|
import { getAgendaSegmentTimecodes, buildSenatVodMasterM3u8FromNvs } from "../utils/nvs-parsing";
|
|
12
11
|
import { epochToParisDateTime, isAmbiguousTimeOriginal, toTargetEpoch } from "../utils/date";
|
|
13
12
|
import { pathToFileURL } from "url";
|
|
@@ -17,6 +16,7 @@ import { SENAT_DATAS_ROOT, STATS, VIDEOS_ROOT_FOLDER, weights } from "../videos/
|
|
|
17
16
|
import { processBisIfNeeded, processOneReunionMatch, writeIfChanged } from "../videos";
|
|
18
17
|
const optionsDefinitions = [...commonOptions];
|
|
19
18
|
const options = commandLineArgs(optionsDefinitions);
|
|
19
|
+
let exitCode = 10; // 0: some data changed, 10: no modification
|
|
20
20
|
function shouldSkipAgenda(agenda) {
|
|
21
21
|
if (!agenda.captationVideo)
|
|
22
22
|
return true;
|
|
@@ -164,8 +164,9 @@ async function processAll(dataDir, sessions) {
|
|
|
164
164
|
try {
|
|
165
165
|
await processGroupedReunion(agenda, session, dataDir, lastByVideo);
|
|
166
166
|
}
|
|
167
|
-
catch (
|
|
168
|
-
|
|
167
|
+
catch (error) {
|
|
168
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
169
|
+
console.error(`[error] ${agenda?.uid ?? "unknown-uid"}:`, message);
|
|
169
170
|
}
|
|
170
171
|
}
|
|
171
172
|
}
|
|
@@ -173,18 +174,16 @@ async function processAll(dataDir, sessions) {
|
|
|
173
174
|
commitAndPushGit(debatsDir, options);
|
|
174
175
|
}
|
|
175
176
|
function commitAndPushGit(datasetDir, options) {
|
|
176
|
-
let exitCode = 10; // 0: some data changed, 10: no modification
|
|
177
177
|
if (options.commit) {
|
|
178
|
-
const errorCode = git.commitAndPush(datasetDir, "Nouvelle moisson", options
|
|
178
|
+
const errorCode = git.commitAndPush(datasetDir, "Nouvelle moisson", options["remote"]);
|
|
179
179
|
if ((exitCode === 10 && errorCode !== 10) || (exitCode === 0 && errorCode !== 0 && errorCode !== 10)) {
|
|
180
180
|
exitCode = errorCode;
|
|
181
181
|
}
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
184
|
async function main() {
|
|
185
|
-
const dataDir = options["dataDir"];
|
|
186
|
-
|
|
187
|
-
const sessions = getSessionsFromStart(options["fromSession"]);
|
|
185
|
+
const dataDir = assertExistingDirectory(options["dataDir"], "data directory");
|
|
186
|
+
const sessions = getSessionsFromStart((options["fromSession"] ?? UNDEFINED_SESSION));
|
|
188
187
|
const TIMER = "senat-agendas→videos processing time";
|
|
189
188
|
console.time(TIMER);
|
|
190
189
|
await processAll(dataDir, sessions);
|
|
@@ -194,7 +193,9 @@ async function main() {
|
|
|
194
193
|
console.log(`[summary] accepted=${accepted} / total=${total} (${ratio}%)`);
|
|
195
194
|
}
|
|
196
195
|
if (import.meta.url === pathToFileURL(process.argv[1]).href) {
|
|
197
|
-
main()
|
|
196
|
+
main()
|
|
197
|
+
.then(() => process.exit(exitCode))
|
|
198
|
+
.catch((err) => {
|
|
198
199
|
console.error(err);
|
|
199
200
|
process.exit(1);
|
|
200
201
|
});
|
|
@@ -58,12 +58,6 @@ export declare const remoteOption: {
|
|
|
58
58
|
name: string;
|
|
59
59
|
type: StringConstructor;
|
|
60
60
|
};
|
|
61
|
-
export declare const pullOption: {
|
|
62
|
-
alias: string;
|
|
63
|
-
help: string;
|
|
64
|
-
name: string;
|
|
65
|
-
type: BooleanConstructor;
|
|
66
|
-
};
|
|
67
61
|
export declare const fetchDocumentsOption: {
|
|
68
62
|
help: string;
|
|
69
63
|
name: string;
|
|
@@ -93,3 +87,4 @@ export declare const commonOptions: ({
|
|
|
93
87
|
name: string;
|
|
94
88
|
type: StringConstructor;
|
|
95
89
|
})[];
|
|
90
|
+
export declare function assertExistingDirectory(directoryPath: string | undefined, description: string): string;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import assert from "assert";
|
|
2
|
+
import fs from "fs-extra";
|
|
1
3
|
export const categoriesOption = {
|
|
2
4
|
alias: "k",
|
|
3
5
|
defaultValue: ["All"],
|
|
@@ -53,17 +55,11 @@ export const commitOption = {
|
|
|
53
55
|
};
|
|
54
56
|
export const remoteOption = {
|
|
55
57
|
alias: "r",
|
|
56
|
-
help: "push commit to given remote",
|
|
58
|
+
help: "pull before proceeding and push commit to given remote",
|
|
57
59
|
multiple: true,
|
|
58
60
|
name: "remote",
|
|
59
61
|
type: String,
|
|
60
62
|
};
|
|
61
|
-
export const pullOption = {
|
|
62
|
-
alias: "p",
|
|
63
|
-
help: "pull repositories before proceeding",
|
|
64
|
-
name: "pull",
|
|
65
|
-
type: Boolean,
|
|
66
|
-
};
|
|
67
63
|
export const fetchDocumentsOption = {
|
|
68
64
|
help: "download documents",
|
|
69
65
|
name: "fetchDocuments",
|
|
@@ -85,7 +81,12 @@ export const commonOptions = [
|
|
|
85
81
|
cloneOption,
|
|
86
82
|
commitOption,
|
|
87
83
|
remoteOption,
|
|
88
|
-
pullOption,
|
|
89
84
|
fetchDocumentsOption,
|
|
90
85
|
parseDocumentsOption,
|
|
91
86
|
];
|
|
87
|
+
export function assertExistingDirectory(directoryPath, description) {
|
|
88
|
+
assert(directoryPath, `Missing argument: ${description}`);
|
|
89
|
+
assert(fs.existsSync(directoryPath), `${description} does not exist: ${directoryPath}`);
|
|
90
|
+
assert(fs.statSync(directoryPath).isDirectory(), `${description} is not a directory: ${directoryPath}`);
|
|
91
|
+
return directoryPath;
|
|
92
|
+
}
|