mirror of
https://github.com/kmitresse/Compo-Service-Log-Project.git
synced 2026-05-14 01:21:48 +00:00
draft: Add OpenFoodFacts Dataset
/!\ Warning: Stream doesn't end
This commit is contained in:
@@ -3,8 +3,7 @@ import { Archive, ZipArchive, ArchiveType, GzipArchive } from "./";
|
||||
class ArchiveFactory {
|
||||
static getArchive(archiveType: ArchiveType): Archive {
|
||||
if (archiveType === ArchiveType.ZIP) return ZipArchive.instance;
|
||||
// if ([ArchiveType.GZIP, ArchiveType.GZ].includes(archiveType))
|
||||
// return GzipArchive.instance;
|
||||
if (archiveType === ArchiveType.GZIP) return GzipArchive.instance;
|
||||
|
||||
throw new Error("Unsupported archive type");
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
enum ArchiveType {
|
||||
ZIP = ".zip",
|
||||
GZIP = ".gzip",
|
||||
GZ = ".gz",
|
||||
}
|
||||
|
||||
export default ArchiveType;
|
||||
|
||||
@@ -9,4 +9,5 @@ class GzipArchive implements Archive {
|
||||
return createGunzip();
|
||||
}
|
||||
}
|
||||
|
||||
export default GzipArchive;
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
import { Data } from "./";
|
||||
|
||||
type RawOpenFoodFactsData = {
|
||||
code: string;
|
||||
countries_en: string;
|
||||
};
|
||||
|
||||
class OpenFoodFactsData implements Data {
|
||||
input: string[] = [];
|
||||
output: string[] = [];
|
||||
|
||||
constructor({ code, countries_en }: RawOpenFoodFactsData) {
|
||||
this.input = [code];
|
||||
this.output = [countries_en];
|
||||
}
|
||||
}
|
||||
|
||||
export default OpenFoodFactsData;
|
||||
@@ -1,3 +1,4 @@
|
||||
export { default as Data, DataConstructor } from "./Data";
|
||||
|
||||
export { default as NudgerData } from "./NudgerData";
|
||||
export { default as OpenFoodFactsData } from "./OpenFoodFactsData";
|
||||
|
||||
@@ -75,8 +75,6 @@ class Dataset {
|
||||
|
||||
const pipelineAsync = promisify(pipeline);
|
||||
|
||||
const self = this;
|
||||
|
||||
console.log(`Download: ${this.source}`);
|
||||
await pipelineAsync(
|
||||
await FileService.getFileStream(this.source),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { NudgerData } from "../data";
|
||||
import { NudgerData, OpenFoodFactsData } from "../data";
|
||||
import { ArchiveType } from "../archive";
|
||||
import { Dataset, DatasetType } from "./";
|
||||
|
||||
@@ -13,6 +13,15 @@ class DatasetCollection {
|
||||
archiveType: ArchiveType.ZIP,
|
||||
datasetType: DatasetType.CSV,
|
||||
}),
|
||||
new Dataset({
|
||||
id: "openfoodfacts",
|
||||
source:
|
||||
"https://static.openfoodfacts.org/data/en.openfoodfacts.org.products.csv.gz",
|
||||
file: "en.openfoodfacts.org.products.csv",
|
||||
dataType: OpenFoodFactsData,
|
||||
archiveType: ArchiveType.GZIP,
|
||||
datasetType: DatasetType.CSV,
|
||||
}),
|
||||
];
|
||||
|
||||
public static loadAll(): Promise<void[]> {
|
||||
|
||||
@@ -6,7 +6,9 @@ class CsvParser implements Parser {
|
||||
public static instance: CsvParser = new CsvParser();
|
||||
|
||||
public parse(): Duplex {
|
||||
return csv();
|
||||
return csv({
|
||||
delimiter: "auto",
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user