@bytebrand/export-cars 1.6.1 → 1.6.3

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.
Files changed (73) hide show
  1. package/dist/configs/alleskralle.config.js +1 -1
  2. package/dist/configs/alleskralle.config.js.map +1 -1
  3. package/dist/configs/auto24.config.js +3 -1
  4. package/dist/configs/auto24.config.js.map +1 -1
  5. package/dist/configs/autoboerse.config.js +3 -1
  6. package/dist/configs/autoboerse.config.js.map +1 -1
  7. package/dist/configs/autouncle.config.js +3 -1
  8. package/dist/configs/autouncle.config.js.map +1 -1
  9. package/dist/configs/criteo.config.js +3 -1
  10. package/dist/configs/criteo.config.js.map +1 -1
  11. package/dist/configs/dasparking.config.js +3 -1
  12. package/dist/configs/dasparking.config.js.map +1 -1
  13. package/dist/configs/fb.config.js +3 -1
  14. package/dist/configs/fb.config.js.map +1 -1
  15. package/dist/configs/google.config.js +3 -1
  16. package/dist/configs/google.config.js.map +1 -1
  17. package/dist/configs/kleinanzeigefocus.config.js +3 -1
  18. package/dist/configs/kleinanzeigefocus.config.js.map +1 -1
  19. package/dist/configs/meinstadt.config.js +2 -2
  20. package/dist/configs/meinstadt.config.js.map +1 -1
  21. package/dist/configs/ooyyo.config.js +2 -2
  22. package/dist/configs/ooyyo.config.js.map +1 -1
  23. package/dist/enums/export-type.enum.js.map +1 -1
  24. package/dist/exporters/auto24.exporter.js +3 -4
  25. package/dist/exporters/auto24.exporter.js.map +1 -1
  26. package/dist/exporters/autouncle.exporter.js +2 -1
  27. package/dist/exporters/autouncle.exporter.js.map +1 -1
  28. package/dist/exporters/by-owner.exporter.js +2 -1
  29. package/dist/exporters/by-owner.exporter.js.map +1 -1
  30. package/dist/exporters/fb.exporter.js +2 -1
  31. package/dist/exporters/fb.exporter.js.map +1 -1
  32. package/dist/exporters/google.exporter.js +2 -1
  33. package/dist/exporters/google.exporter.js.map +1 -1
  34. package/dist/exporters/meinstadt.exporter.js +2 -1
  35. package/dist/exporters/meinstadt.exporter.js.map +1 -1
  36. package/dist/exporters/mobile.exporter.js +4 -7
  37. package/dist/exporters/mobile.exporter.js.map +1 -1
  38. package/dist/exporters/modix.exporter.js +2 -1
  39. package/dist/exporters/modix.exporter.js.map +1 -1
  40. package/dist/exporters/ooyyo.exporter.js +2 -1
  41. package/dist/exporters/ooyyo.exporter.js.map +1 -1
  42. package/dist/exporters/rubrikk.exporter.js +2 -1
  43. package/dist/exporters/rubrikk.exporter.js.map +1 -1
  44. package/dist/main.js +1 -0
  45. package/dist/main.js.map +1 -1
  46. package/dist/transformers/rubrikk.transformer.js +2 -3
  47. package/dist/transformers/rubrikk.transformer.js.map +1 -1
  48. package/dist/tsconfig.build.tsbuildinfo +1 -1
  49. package/package.json +2 -2
  50. package/src/configs/alleskralle.config.ts +1 -1
  51. package/src/configs/auto24.config.ts +3 -1
  52. package/src/configs/autoboerse.config.ts +4 -1
  53. package/src/configs/autouncle.config.ts +3 -1
  54. package/src/configs/criteo.config.ts +3 -1
  55. package/src/configs/dasparking.config.ts +3 -1
  56. package/src/configs/fb.config.ts +3 -1
  57. package/src/configs/google.config.ts +3 -1
  58. package/src/configs/{kleinanzeigeFocus.config.ts → kleinanzeigefocus.config.ts} +3 -1
  59. package/src/configs/meinstadt.config.ts +2 -2
  60. package/src/configs/ooyyo.config.ts +2 -2
  61. package/src/enums/export-type.enum.ts +0 -3
  62. package/src/exporters/auto24.exporter.ts +3 -4
  63. package/src/exporters/autouncle.exporter.ts +2 -1
  64. package/src/exporters/by-owner.exporter.ts +2 -2
  65. package/src/exporters/fb.exporter.ts +2 -2
  66. package/src/exporters/google.exporter.ts +2 -1
  67. package/src/exporters/meinstadt.exporter.ts +2 -1
  68. package/src/exporters/mobile.exporter.ts +4 -10
  69. package/src/exporters/modix.exporter.ts +2 -1
  70. package/src/exporters/ooyyo.exporter.ts +2 -1
  71. package/src/exporters/rubrikk.exporter.ts +2 -1
  72. package/src/main.ts +1 -0
  73. package/src/transformers/rubrikk.transformer.ts +3 -3
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bytebrand/export-cars",
3
- "version": "1.6.1",
3
+ "version": "1.6.3",
4
4
  "description": "",
5
5
  "author": "bytebrand",
6
6
  "license": "UNLICENSED",
@@ -65,5 +65,5 @@
65
65
  "engines": {
66
66
  "node": ">=14.0.0"
67
67
  },
68
- "gitHead": "4a0ed79c501346cef400dec5595283cdde7d1c93"
68
+ "gitHead": "322cb1a9ad9fa057e227f2c89bfed7f37ee39903"
69
69
  }
@@ -7,6 +7,6 @@ export class AlleskralleConfig extends Config {
7
7
  super(params);
8
8
  this.campaign = ExportType.ALLESKRALLE;
9
9
  this.pathesConfig.localConvertedDirectory = `resources/${ExportType.ALLESKRALLE}-export`;
10
- this.outputFiles = [`api_export_cars_${ExportType.ALLESKRALLE}.${FileType.XML}`];
10
+ this.outputFiles = [`${this.pathesConfig.localConvertedDirectory}/api_export_cars_${ExportType.ALLESKRALLE}.${FileType.XML}`];
11
11
  }
12
12
  }
@@ -7,6 +7,8 @@ export class Auto24Config extends Config {
7
7
  super(params);
8
8
  this.campaign = ExportType.AUTO24;
9
9
  this.pathesConfig.localConvertedDirectory = `resources/${ExportType.AUTO24}-export`;
10
- this.outputFiles = [`api_export_cars_${ExportType.AUTO24}.${FileType.XML}`, `autode.${FileType.TAR_GZ}`];
10
+ this.outputFiles = [
11
+ `${this.pathesConfig.localConvertedDirectory}/api_export_cars_${ExportType.AUTO24}.${FileType.XML}`,
12
+ ];
11
13
  }
12
14
  }
@@ -7,7 +7,10 @@ export class AutoboerseConfig extends Config {
7
7
  super(params);
8
8
  this.campaign = ExportType.AUTOBOERSE;
9
9
  this.pathesConfig.localConvertedDirectory = `resources/${ExportType.AUTOBOERSE}-export`;
10
+
11
+ this.outputFiles = [
12
+ `${this.pathesConfig.localConvertedDirectory}/api_export_cars_${ExportType.AUTOBOERSE}.${FileType.XML}`
13
+ ];
10
14
  this.imageUrl = this.environmentConfig[params.environment].imageUrl;
11
- this.outputFiles = [`api_export_cars_${ExportType.AUTOBOERSE}.${FileType.XML}`];
12
15
  }
13
16
  }
@@ -6,6 +6,8 @@ export class AutouncleConfig extends Config {
6
6
  constructor(params: Params) {
7
7
  super(params);
8
8
  this.pathesConfig.localConvertedDirectory = `resources/${ExportType.AUTOUNCLE}-export`;
9
- this.outputFiles = [`api_export_cars_${ExportType.AUTOUNCLE}.${FileType.JSON}`];
9
+ this.outputFiles = [
10
+ `${this.pathesConfig.localConvertedDirectory}/api_export_cars_${ExportType.AUTOUNCLE}.${FileType.JSON}`
11
+ ];
10
12
  }
11
13
  }
@@ -7,7 +7,9 @@ export class CriteoConfig extends Config {
7
7
  super(params);
8
8
  this.campaign = ExportType.CRITEO;
9
9
  this.pathesConfig.localConvertedDirectory = `resources/${ExportType.CRITEO}-export`;
10
- this.outputFiles = [`api_export_cars_${ExportType.CRITEO}.${FileType.XML}`];
10
+ this.outputFiles = [
11
+ `${this.pathesConfig.localConvertedDirectory}/api_export_cars_${ExportType.CRITEO}.${FileType.XML}`
12
+ ];
11
13
  this.isCriteo = true;
12
14
  }
13
15
  }
@@ -7,6 +7,8 @@ export class DasparkingConfig extends Config {
7
7
  super(params);
8
8
  this.pathesConfig.localConvertedDirectory = `resources/${ExportType.DASPARKING}-export`;
9
9
  this.campaign = ExportType.DASPARKING;
10
- this.outputFiles = [`api_export_cars_${ExportType.DASPARKING}.${FileType.XML}`];
10
+ this.outputFiles = [
11
+ `${this.pathesConfig.localConvertedDirectory}/api_export_cars_${ExportType.DASPARKING}.${FileType.XML}`
12
+ ];
11
13
  }
12
14
  }
@@ -7,6 +7,8 @@ export class FbConfig extends Config {
7
7
  super(params);
8
8
  this.pathesConfig.localConvertedDirectory = `resources/${ExportType.FB}-export`;
9
9
  this.imageUrl = this.environmentConfig[params.environment].imageUrl;
10
- this.outputFiles = [`api_export_cars_${ExportType.FB}.${FileType.XML}`];
10
+ this.outputFiles = [
11
+ `${this.pathesConfig.localConvertedDirectory}/api_export_cars_${ExportType.FB}.${FileType.XML}`
12
+ ];
11
13
  }
12
14
  }
@@ -6,6 +6,8 @@ export class GoogleConfig extends Config {
6
6
  constructor(params: Params) {
7
7
  super(params);
8
8
  this.pathesConfig.localConvertedDirectory = `resources/${ExportType.GOOGLE}-export`;
9
- this.outputFiles = [`api_export_cars_${ExportType.GOOGLE}.${FileType.XML}`];
9
+ this.outputFiles = [
10
+ `${this.pathesConfig.localConvertedDirectory}/api_export_cars_${ExportType.GOOGLE}.${FileType.XML}`
11
+ ];
10
12
  }
11
13
  }
@@ -7,6 +7,8 @@ export class KleinanzeigeFocusConfig extends Config {
7
7
  super(params);
8
8
  this.pathesConfig.localConvertedDirectory = `resources/${ExportType.KLEINANZEIGE_FOCUS}-export`;
9
9
  this.imageUrl = this.environmentConfig[params.environment].baseImageUrl;
10
- this.outputFiles = [`api_export_cars_${ExportType.KLEINANZEIGE_FOCUS}.${FileType.XML}`];
10
+ this.outputFiles = [
11
+ `${this.pathesConfig.localConvertedDirectory}/api_export_cars_${ExportType.KLEINANZEIGE_FOCUS}.${FileType.XML}`
12
+ ];
11
13
  }
12
14
  }
@@ -7,8 +7,8 @@ export class MeinstadtConfig extends Config {
7
7
  super(params);
8
8
  this.pathesConfig.localConvertedDirectory = `resources/${ExportType.MEINSTADT}-export`;;
9
9
  this.outputFiles = [
10
- `api_export_cars_${ExportType.MEINSTADT}.${FileType.JSON}`,
11
- `api_export_cars_${ExportType.MEINSTADT}.${FileType.ZIP}`,
10
+ `${this.pathesConfig.localConvertedDirectory}/api_export_cars_${ExportType.MEINSTADT}.${FileType.JSON}`,
11
+ `${this.pathesConfig.localConvertedDirectory}/api_export_cars_${ExportType.MEINSTADT}.${FileType.ZIP}`,
12
12
  ];
13
13
  }
14
14
  }
@@ -7,8 +7,8 @@ export class OoyyoConfig extends Config {
7
7
  super(params);
8
8
  this.pathesConfig.localConvertedDirectory = `resources/${ExportType.OOYYO}-export`;
9
9
  this.outputFiles = [
10
- `api_export_cars_${ExportType.OOYYO}.${FileType.XML}`,
11
- `autode-${ExportType.OOYYO}.${FileType.TAR_GZ}`,
10
+ `${this.pathesConfig.localConvertedDirectory}/api_export_cars_${ExportType.OOYYO}.${FileType.XML}`,
11
+ `${this.pathesConfig.localConvertedDirectory}/autode-${ExportType.OOYYO}.${FileType.TAR_GZ}`,
12
12
  ];
13
13
  }
14
14
  }
@@ -8,9 +8,6 @@ export enum ExportType {
8
8
  AUTOBOERSE = 'autoboerse',
9
9
  GOOGLE = 'google',
10
10
  FB = 'fb',
11
- /**
12
- * @deprecated
13
- */
14
11
  AUTO24 = 'auto24',
15
12
  OOYYO = 'ooyyo',
16
13
  MEINSTADT = 'meinstadt',
@@ -21,8 +21,9 @@ export class Auto24Exporter implements Exporter {
21
21
  ) { }
22
22
 
23
23
  async export(): Promise<void> {
24
- const [fileXml, fileGZ] = this.configService.config.outputFiles;
25
- await Promise.all([await CronicleUtils.unlinkIfExists(fileXml), await CronicleUtils.unlinkIfExists(fileGZ)]);
24
+ const [fileXml] = this.configService.config.outputFiles;
25
+ await CronicleUtils.ensureDir(this.configService.config.pathesConfig.localConvertedDirectory);
26
+ await CronicleUtils.emptyDir(this.configService.config.pathesConfig.localConvertedDirectory);
26
27
 
27
28
  const xmlBuilder = new Auto24XmlBuilder(fileXml);
28
29
  await xmlBuilder.buildStart();
@@ -44,8 +45,6 @@ export class Auto24Exporter implements Exporter {
44
45
  });
45
46
 
46
47
  await xmlBuilder.buildEnd();
47
-
48
- fileGZ && await Zipper.tar({ dest: fileGZ, fileList: [fileXml] });
49
48
  console.log(this.carService.counter.getCountedCars());
50
49
  }
51
50
  }
@@ -23,7 +23,8 @@ export class AutouncleExporter implements Exporter {
23
23
 
24
24
  async export(): Promise<void> {
25
25
  const [fileName] = this.configService.config.outputFiles;
26
- await CronicleUtils.unlinkIfExists(fileName);
26
+ await CronicleUtils.ensureDir(this.configService.config.pathesConfig.localConvertedDirectory);
27
+ await CronicleUtils.emptyDir(this.configService.config.pathesConfig.localConvertedDirectory);
27
28
 
28
29
  const autouncleJsonBuilder = new AutouncleJsonBuilder(fileName);
29
30
  await autouncleJsonBuilder.buildStart();
@@ -24,8 +24,8 @@ export class ByOwnerExporter implements Exporter {
24
24
 
25
25
  async export(): Promise<void> {
26
26
  const [fileName] = this.configService.config.outputFiles;
27
-
28
- await CronicleUtils.unlinkIfExists(fileName);
27
+ await CronicleUtils.ensureDir(this.configService.config.pathesConfig.localConvertedDirectory);
28
+ await CronicleUtils.emptyDir(this.configService.config.pathesConfig.localConvertedDirectory);
29
29
 
30
30
  const byOwnerTransformer = await this.moduleRef.create(ByOwnerTransformer);
31
31
  const csvWriter = createCsvWriter();
@@ -21,8 +21,8 @@ export class FbExporter implements Exporter {
21
21
 
22
22
  async export(): Promise<void> {
23
23
  const [fileName] = this.configService.config.outputFiles;
24
- await CronicleUtils.unlinkIfExists(fileName);
25
-
24
+ await CronicleUtils.ensureDir(this.configService.config.pathesConfig.localConvertedDirectory);
25
+ await CronicleUtils.emptyDir(this.configService.config.pathesConfig.localConvertedDirectory);
26
26
 
27
27
  const fbXmlBuilder = new FbXmlBuilder(fileName);
28
28
  await fbXmlBuilder.buildStart(this.configService.config.domain);
@@ -21,7 +21,8 @@ export class GoogleExporter implements Exporter {
21
21
 
22
22
  async export(): Promise<void> {
23
23
  const [fileName] = this.configService.config.outputFiles;
24
- await CronicleUtils.unlinkIfExists(fileName);
24
+ await CronicleUtils.ensureDir(this.configService.config.pathesConfig.localConvertedDirectory);
25
+ await CronicleUtils.emptyDir(this.configService.config.pathesConfig.localConvertedDirectory);
25
26
 
26
27
  const googleXmlBuilder = new GoogleXmlBuilder(fileName);
27
28
  await googleXmlBuilder.buildStart(this.configService.config.domain);
@@ -23,7 +23,8 @@ export class MeinstadtExporter implements Exporter {
23
23
 
24
24
  async export(): Promise<void> {
25
25
  const [fileJson, fileGZ] = this.configService.config.outputFiles;
26
- await Promise.all([CronicleUtils.unlinkIfExists(fileJson), CronicleUtils.unlinkIfExists(fileGZ)])
26
+ await CronicleUtils.ensureDir(this.configService.config.pathesConfig.localConvertedDirectory);
27
+ await CronicleUtils.emptyDir(this.configService.config.pathesConfig.localConvertedDirectory);
27
28
 
28
29
  const meinstadtJsonBuilder = new MeinstadtJsonBuilder(fileJson);
29
30
  await meinstadtJsonBuilder.buildStart();
@@ -26,7 +26,6 @@ export class MobileExporter implements Exporter {
26
26
 
27
27
  async export(): Promise<void> {
28
28
  const [fileName] = this.configService.config.outputFiles;
29
-
30
29
  await CronicleUtils.ensureDir(this.configService.config.pathesConfig.localConvertedDirectory);
31
30
  await CronicleUtils.emptyDir(this.configService.config.pathesConfig.localConvertedDirectory);
32
31
 
@@ -41,21 +40,16 @@ export class MobileExporter implements Exporter {
41
40
  const { car, images } = data;
42
41
  const transformedData = await mobileTransformer.transform(car, images);
43
42
 
44
- const file = `${this.configService.config.pathesConfig.localConvertedDirectory}/${fileName}`;
45
- await writeFile(file, Buffer.from(`${convertToCSV(transformedData)}\n`), { flag: 'a' });
43
+ await writeFile(fileName, Buffer.from(`${convertToCSV(transformedData)}\n`), { flag: 'a' });
46
44
 
47
45
  this.carService.counter.countCar(data.images);
48
46
  }
49
-
50
47
  }
51
48
  });
52
49
 
53
- const fileZIP = normalize(`${this.configService.config.pathesConfig.localConvertedDirectory}/${basename(fileName)}.${FileType.ZIP}`);
54
- const fileCSV = normalize(`${this.configService.config.pathesConfig.localConvertedDirectory}/${fileName}`);
55
- const fileList = [fileCSV];
56
-
57
- if (await CronicleUtils.exists(fileCSV)) {
58
- await Zipper.zip({ fileList, dest: fileZIP });
50
+ const fileZIP = normalize(`${basename(fileName)}.${FileType.ZIP}`);
51
+ if (await CronicleUtils.exists(fileName)) {
52
+ await Zipper.zip({ fileList: [fileName], dest: fileZIP });
59
53
  }
60
54
  console.log(this.carService.counter.getCountedCars());
61
55
  }
@@ -19,7 +19,8 @@ export class ModixExporter implements Exporter {
19
19
  ) {}
20
20
  async export(): Promise<void> {
21
21
  const [fileXml] = this.configService.config.outputFiles;
22
- await CronicleUtils.unlinkIfExists(fileXml);
22
+ await CronicleUtils.ensureDir(this.configService.config.pathesConfig.localConvertedDirectory);
23
+ await CronicleUtils.emptyDir(this.configService.config.pathesConfig.localConvertedDirectory);
23
24
 
24
25
  const modixXmlBuilder = new ModixXmlBuilder(fileXml);
25
26
  await modixXmlBuilder.buildStart();
@@ -20,7 +20,8 @@ export class OoyyoExporter implements Exporter {
20
20
 
21
21
  async export(): Promise<void> {
22
22
  const [fileXml, fileGZ] = this.configService.config.outputFiles;
23
- await Promise.all([CronicleUtils.unlinkIfExists(fileXml), CronicleUtils.unlinkIfExists(fileGZ)]);
23
+ await CronicleUtils.ensureDir(this.configService.config.pathesConfig.localConvertedDirectory);
24
+ await CronicleUtils.emptyDir(this.configService.config.pathesConfig.localConvertedDirectory);
24
25
 
25
26
  const ooyyoXmlBuilder = new OoyyoXmlBuilder(fileXml);
26
27
  await ooyyoXmlBuilder.buildStart();
@@ -22,7 +22,8 @@ export class RubrikkExporter implements Exporter {
22
22
 
23
23
  async export(): Promise<void> {
24
24
  const [fileXml, fileGZ] = this.configService.config.outputFiles;
25
- await Promise.all([CronicleUtils.unlinkIfExists(fileXml), CronicleUtils.unlinkIfExists(fileGZ)]);
25
+ await CronicleUtils.ensureDir(this.configService.config.pathesConfig.localConvertedDirectory);
26
+ await CronicleUtils.emptyDir(this.configService.config.pathesConfig.localConvertedDirectory);
26
27
 
27
28
  const rubrikkXmlBuilder = new RubrikkXmlBuilder(fileXml);
28
29
  await rubrikkXmlBuilder.buildStart();
package/src/main.ts CHANGED
@@ -7,6 +7,7 @@ async function bootstrap() {
7
7
  await CommandFactory.run(AppModule, false);
8
8
  LoggerService.complete();
9
9
  } catch (e) {
10
+ console.error(e);
10
11
  LoggerService.exitError(e.message || e);
11
12
  }
12
13
  }
@@ -31,6 +31,7 @@ export class RubrikkTransformer {
31
31
  images: ImboImageResponseInterface[];
32
32
  }): Promise<RubrikkXmlItem> {
33
33
  const autodeId = toString(get(car, '_id', ''));
34
+
34
35
  return {
35
36
  //Common Fields
36
37
  ad__all_imageurls: this.getImagesLinks(autodeId, images),
@@ -124,8 +125,7 @@ export class RubrikkTransformer {
124
125
  }
125
126
 
126
127
  private getCarLink(car: DataSchemes.Car): string {
127
- const autodeId = toString(get(car, '_id', ''));
128
- return `https://${this.configService.config.imageUrl}/search/vehicle/${autodeId}?source=classifieds&medium=listing&campaign=focus`;
128
+ return `https://${this.configService.config.domain}/search/vehicle/${car._id}?source=classifieds&medium=listing&campaign=focus`;
129
129
  }
130
130
 
131
131
  private getImageLink(car: DataSchemes.Car): string {
@@ -138,7 +138,7 @@ export class RubrikkTransformer {
138
138
  private getImagesLinks(carId: string, images: ImboImageResponseInterface[]): string[] {
139
139
  if (isNotEmptyArray(images)) {
140
140
  return images.map((image: ImboImageResponseInterface) => {
141
- return `https://${this.configService.config.baseImageUrl}/carimage/${carId}/${image.imageIdentifier}/large`;
141
+ return `${this.configService.config.baseImageUrl}/carimage/${carId}/${image.imageIdentifier}/large`;
142
142
  });
143
143
  }
144
144
  return [];