@bytebrand/export-cars 1.10.8 → 1.10.9
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/dist/exporters/meinstadt.exporter.js +2 -1
- package/dist/exporters/meinstadt.exporter.js.map +1 -1
- package/dist/interfaces/export-item.interface.d.ts +1 -1
- package/dist/transformers/meinstadt.transformer.d.ts +6 -3
- package/dist/transformers/meinstadt.transformer.js +11 -12
- package/dist/transformers/meinstadt.transformer.js.map +1 -1
- package/dist/transformers/mobile.transformer.d.ts +2 -1
- package/dist/transformers/mobile.transformer.js +4 -4
- package/dist/transformers/mobile.transformer.js.map +1 -1
- package/dist/transformers/ooyyo.transformer.js +2 -2
- package/dist/transformers/ooyyo.transformer.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/exporters/meinstadt.exporter.ts +2 -2
- package/src/interfaces/export-item.interface.ts +1 -1
- package/src/transformers/meinstadt.transformer.ts +16 -13
- package/src/transformers/mobile.transformer.ts +11 -6
- package/src/transformers/ooyyo.transformer.ts +2 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bytebrand/export-cars",
|
|
3
|
-
"version": "1.10.
|
|
3
|
+
"version": "1.10.9",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "bytebrand",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -60,5 +60,5 @@
|
|
|
60
60
|
"engines": {
|
|
61
61
|
"node": ">=14.0.0"
|
|
62
62
|
},
|
|
63
|
-
"gitHead": "
|
|
63
|
+
"gitHead": "656a154e9410d0bccd17b7e9070b179747fd6e4f"
|
|
64
64
|
}
|
|
@@ -33,10 +33,10 @@ export class MeinstadtExporter implements Exporter {
|
|
|
33
33
|
|
|
34
34
|
let firstCar = true;
|
|
35
35
|
await this.loaderService.process(async (chunk: FsChunkInterface) => {
|
|
36
|
-
|
|
36
|
+
chunk.data = chunk.data.filter(e => this.carService.filterCar(e, this.rulesService.rules));
|
|
37
37
|
|
|
38
38
|
for (const data of chunk.data) {
|
|
39
|
-
const car = await meinstadtTransformer.transform(
|
|
39
|
+
const car = await meinstadtTransformer.transform(data);
|
|
40
40
|
await meinstadtJsonBuilder.addItem(car as MeinstadtJsonItem, firstCar);
|
|
41
41
|
this.carService.counter.countCar(data.images);
|
|
42
42
|
|
|
@@ -1,27 +1,30 @@
|
|
|
1
1
|
import { get, toString } from 'lodash';
|
|
2
|
-
import { DataSchemes } from '@bytebrand/car-schema';
|
|
3
2
|
|
|
4
|
-
import { de } from '@bytebrand/i18n-dictionaries';
|
|
5
3
|
import { Injectable } from '@nestjs/common';
|
|
6
|
-
|
|
4
|
+
|
|
5
|
+
import { ImboImageResponseInterface } from '@bytebrand/chunkable';
|
|
6
|
+
import { DataSchemes } from '@bytebrand/car-schema';
|
|
7
|
+
import { de } from '@bytebrand/i18n-dictionaries';
|
|
8
|
+
|
|
9
|
+
import { ConfigService, ImagesService } from '../services';
|
|
7
10
|
import { MeinstadtJsonItem } from '../interfaces';
|
|
8
11
|
|
|
12
|
+
|
|
9
13
|
@Injectable()
|
|
10
14
|
export class MeinstadtTransformer {
|
|
11
|
-
constructor(private configService: ConfigService) {}
|
|
15
|
+
constructor(private configService: ConfigService, private readonly imageService: ImagesService) {}
|
|
16
|
+
|
|
17
|
+
async transform({ car, images }: { car: DataSchemes.Car, images: ImboImageResponseInterface[] }): Promise<Partial<MeinstadtJsonItem>> {
|
|
18
|
+
const carImages = await this.imageService.getImages(car, images, this.configService.config.imageType);
|
|
19
|
+
|
|
20
|
+
const carId = toString(get(car, '_id', null));
|
|
12
21
|
|
|
13
|
-
async transform({ car }: { car: DataSchemes.Car }): Promise<Partial<MeinstadtJsonItem>> {
|
|
14
|
-
const autodeId = toString(get(car, '_id', null));
|
|
15
|
-
const imageId = get(car, 'metaData.mainImageId', null);
|
|
16
|
-
const imageUrl = imageId
|
|
17
|
-
? `https://images.auto.de/carimage/${car._id}/${imageId}/large-cached.webp`
|
|
18
|
-
: 'https://images.auto.de/carimage/noimage/7pNvWELuWhZX/large-cached.jpeg';
|
|
19
22
|
return {
|
|
20
23
|
id: get(car, 'metaData.vehicleId', null),
|
|
21
24
|
make: get(car, 'mainData.make', null),
|
|
22
25
|
model: get(car, 'mainData.model', null),
|
|
23
26
|
cpc: get(this.configService.config, 'cpc', '0.08'),
|
|
24
|
-
listingUrl: `https://www.${this.configService.config.domain}/search/vehicle/${
|
|
27
|
+
listingUrl: `https://www.${this.configService.config.domain}/search/vehicle/${carId}?source=classifieds&medium=listing&campaign=meinestadt`,
|
|
25
28
|
title: this.getTitle(car),
|
|
26
29
|
accidentFree: get(car, 'mainData.accidentDamaged', null),
|
|
27
30
|
mileage: get(car, 'mainData.mileage', null),
|
|
@@ -41,10 +44,10 @@ export class MeinstadtTransformer {
|
|
|
41
44
|
emissionSticker: this.translate(get(car, 'environmentEmissions.emissionSticker', null)),
|
|
42
45
|
fuelType: this.translate(get(car, 'consumption.fuel', null)),
|
|
43
46
|
'transmissionType/transmission': this.translate(get(car, 'driveSuspension.gearbox', null)),
|
|
44
|
-
imagesCount:
|
|
47
|
+
imagesCount: carImages.length,
|
|
45
48
|
'customerType/sellerType': 'Händler',
|
|
46
49
|
usageState: this.translate(this.getUsageState(car)),
|
|
47
|
-
images:
|
|
50
|
+
images: carImages,
|
|
48
51
|
};
|
|
49
52
|
}
|
|
50
53
|
|
|
@@ -1,12 +1,17 @@
|
|
|
1
|
+
import { get, isEmpty, isNil, set, toString, upperFirst } from 'lodash';
|
|
2
|
+
|
|
1
3
|
import { Injectable } from '@nestjs/common';
|
|
4
|
+
|
|
5
|
+
import { CarDescriptionFactory, DescriptionTypeEnum } from '@bytebrand/car-description';
|
|
6
|
+
import { ImboImageResponseInterface } from '@bytebrand/chunkable';
|
|
7
|
+
import { LoggerService } from '@bytebrand/cronicle-helper';
|
|
2
8
|
import { DataSchemes } from '@bytebrand/car-schema';
|
|
3
|
-
|
|
9
|
+
|
|
4
10
|
import { MappingService, UserService, ImagesService } from '../services';
|
|
5
11
|
import { MappingRules } from '../interfaces/mapping-rules.interface';
|
|
6
|
-
import { CarDescriptionFactory, DescriptionTypeEnum } from '@bytebrand/car-description';
|
|
7
|
-
import { ConfigService } from '../services';
|
|
8
12
|
import { isNotEmptyArray } from '../utils/validator.utils';
|
|
9
|
-
import {
|
|
13
|
+
import { ConfigService } from '../services';
|
|
14
|
+
|
|
10
15
|
|
|
11
16
|
const vinGenerator = require('vin-generator');
|
|
12
17
|
|
|
@@ -19,9 +24,9 @@ export class MobileTransformer {
|
|
|
19
24
|
private userService: UserService,
|
|
20
25
|
private configService: ConfigService,
|
|
21
26
|
private imagesService: ImagesService,
|
|
22
|
-
) {}
|
|
27
|
+
) { }
|
|
23
28
|
|
|
24
|
-
async transform(carData: DataSchemes.Car, images:
|
|
29
|
+
async transform(carData: DataSchemes.Car, images: ImboImageResponseInterface[]): Promise<unknown> {
|
|
25
30
|
this.currentCar = carData;
|
|
26
31
|
const transformedCarData = {};
|
|
27
32
|
const rules = await this.mappingService.getRules();
|
|
@@ -17,7 +17,7 @@ export class OoyyoTransformer {
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
async transform(car: DataSchemes.Car, imboImages: ImboImageResponseInterface[]): Promise<OoyyoXmlItem> {
|
|
20
|
-
const
|
|
20
|
+
const carId = toString(get(car, '_id', ''));
|
|
21
21
|
const creationDate = get(car, 'metaData.creationDate') as number;
|
|
22
22
|
const constructionYear = get(car, 'mainData.constructionYear') as number;
|
|
23
23
|
const firstRegistration = get(car, 'mainData.firstRegistration') as number;
|
|
@@ -29,7 +29,7 @@ export class OoyyoTransformer {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
return {
|
|
32
|
-
url: `https://www.${this.configService.config.domain}/search/vehicle/${
|
|
32
|
+
url: `https://www.${this.configService.config.domain}/search/vehicle/${carId}?source=classifieds&medium=listing&campaign=ooyyo`,
|
|
33
33
|
title: this.getTitle(car),
|
|
34
34
|
content: trim(toString(get(car, 'offer.offerDescription', ''))),
|
|
35
35
|
price: toString(get(car, 'price.currentSalesPrice', '')),
|