@bprotsyk/aso-core 2.1.223 → 2.1.225

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.
@@ -1,736 +1,23 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.sendPostbacks = exports.createOWCampaign = exports.createDirectCampaign = exports.prepareOWCampaignParameters = exports.removeGeosFromAllRedirectCampaigns = exports.addGeosToAllRedirectCampaigns = exports.TRAFFIC_SOURCE_ID_DIRECT_AI = exports.TRAFFIC_SOURCE_ID_FLASH_AI = void 0;
7
- const keitaro_service_1 = require("../network/keitaro/keitaro-service");
8
- const axios_1 = __importDefault(require("axios"));
9
- const keitaro_clicks_1 = require("../keitaro/keitaro-clicks");
10
- const FLASH_REDIRECT_GROUP_ID = 82;
3
+ exports.sendPostbacks = exports.createOWCampaign = exports.createDirectCampaign = exports.removeGeosFromAllRedirectCampaigns = exports.addGeosToAllRedirectCampaigns = exports.prepareOWCampaignParameters = exports.TRAFFIC_SOURCE_ID_DIRECT_AI = exports.TRAFFIC_SOURCE_ID_FLASH_AI = void 0;
11
4
  exports.TRAFFIC_SOURCE_ID_FLASH_AI = 22;
12
5
  exports.TRAFFIC_SOURCE_ID_DIRECT_AI = 23;
13
- const UNIQUENESS_METHOD = "ip_ua";
14
- const MAX_COOKIES_TTL = 8760;
15
- const TYPE_POSITION = "position";
16
- const STATE_ACTIVE = "active";
17
- const COST_TYPE_CPC = "CPC";
18
- const COST_VALUE = 0;
19
- const COST_CURRENCY_USD = "USD";
20
- // clear campaigns from unused / wrong streams
21
- // let sampleApp: IFlashApp = {
22
- // id: 96,
23
- // bundle: "com.dynastyof.desert",
24
- // name: "Room of Fortuna",
25
- // plugId: "https://pastebin.com/raw/AR2u7dSD",
26
- // plugType: PlugType.PASTEBIN,
27
- // plugContent: "",
28
- // plugStatus: FlashAppPlugStatus.DISABLED,
29
- // plugAccountId: 1,
30
- // reservePlugId: "none",
31
- // reservePlugType: PlugType.OTHER,
32
- // reservePlugContent: "",
33
- // reservePlugStatus: FlashAppPlugStatus.DISABLED,
34
- // reservePlugAccountId: 1,
35
- // type: FlashAppType.GAMBLING,
36
- // developerEmail: "bolly.dreams@yahoo.com",
37
- // developerName: "Serhii Bolsky",
38
- // developerOrganization: "S.I.B FOP",
39
- // onesignalAppId: "e66658af-91c3-44bc-8123-ec64b1969cbd",
40
- // onesignalRestApiKey: "MDk2NjZlNTMtMzBhYi00MjEzLTg0ZGItOWVmZWZhMTczMzI0",
41
- // generationOptions: {
42
- // splashActivityClassName: "SplashActivity",
43
- // mainActivityClassName: "YourActivity",
44
- // linkName: "likn",
45
- // savedName: "isOk",
46
- // paranoidSeed: 228143750
47
- // },
48
- // geos: "RU,UA,KZ,ES,BR,PT,CL,MX",
49
- // keitaroData: {
50
- // redirectCampaignId: 0,
51
- // redirectCampaignName: "",
52
- // redirectDomainId: 0,
53
- // redirectDomainName: "",
54
- // trackingCampaignId: 0,
55
- // trackingCampaignName: "",
56
- // trackingDomainId: 0,
57
- // trackingDomainName: "",
58
- // clickIdParameterName: "p",
59
- // offerIdParameterName: "i",
60
- // }
61
- // } as IFlashApp
62
- function sleep(ms) {
63
- return new Promise(resolve => setTimeout(resolve, ms));
64
- }
65
- ``;
66
- let addGeosToAllRedirectCampaigns = async (geosToAdd) => {
67
- let allCampaigns = await keitaro_service_1.KeitaroService.getAllCampaigns();
68
- let regexp = new RegExp(`^F #`);
69
- const matchingCampaigns = allCampaigns.filter(campaign => regexp.exec(campaign.name));
70
- for (let campaign of matchingCampaigns) {
71
- console.log(campaign.name);
72
- console.log("––––––––––––––––––––––––");
73
- let streams = await keitaro_service_1.KeitaroService.getStreamsByCampaignId(campaign.id);
74
- let botStream = streams[0];
75
- botStream.name = "Bot Protection";
76
- let owStream = streams.find(s => s.name == "OW");
77
- for (let stream of [owStream, botStream]) {
78
- if (!stream)
79
- continue;
80
- console.log({
81
- name: stream.name,
82
- });
83
- let geos = stream?.filters[stream.type == "forced" ? 1 : 0]?.payload;
84
- if (!geos)
85
- continue;
86
- geosToAdd.split(" ").forEach((geo) => {
87
- let streamForGeo = streams.find((s) => s.name == geo);
88
- if (streamForGeo && stream)
89
- return;
90
- if (!geos.includes(geo))
91
- geos.push(geo);
92
- });
93
- stream.filters[stream.type == "forced" ? 1 : 0].payload = geos;
94
- await keitaro_service_1.KeitaroService.upsertStreamToCampaign(campaign, stream);
95
- await sleep(2000);
96
- }
97
- console.log("––––––––––––––––––––––––");
98
- }
99
- };
100
- exports.addGeosToAllRedirectCampaigns = addGeosToAllRedirectCampaigns;
101
- // export let changeTrackingOfferGeo = async (appId: number, keitaroId: string, geo: string) => {
102
- // let allCampaigns = await KeitaroService.getAllCampaigns()
103
- // let regexp = new RegExp(`^FA #${appId} `)
104
- // let matchingCampaign = allCampaigns.find(campaign => regexp.exec(campaign.name))
105
- // if (!matchingCampaign) throw new Error(`No matching campaign got appId ${appId}`)
106
- // let streams = await KeitaroService.getStreamsByCampaignId(matchingCampaign.id)
107
- // letstream =
108
- // for (let campaign of matchingCampaigns) {
109
- // console.log(campaign.name)
110
- // console.log("––––––––––––––––––––––––")
111
- // let streams = await KeitaroService.getStreamsByCampaignId(campaign.id)
112
- // let botStream = streams[0]
113
- // botStream.name = "Bot Protection"
114
- // let owStream = streams.find(s => s.name == "OW")
115
- // for (let stream of [owStream, botStream]) {
116
- // if (!stream) continue
117
- // console.log({
118
- // name: stream.name,
119
- // })
120
- // let geos = stream?.filters[stream.type == "forced" ? 1 : 0]?.payload
121
- // if (!geos) continue
122
- // geosToAdd.split(" ").forEach((geo: string) => {
123
- // let streamForGeo = streams.find((s) => s.name == geo)
124
- // if (streamForGeo && stream) return
125
- // if (!geos.includes(geo)) geos.push(geo)
126
- // });
127
- // stream.filters[stream.type == "forced" ? 1 : 0].payload = geos
128
- // await KeitaroService.upsertStreamToCampaign(campaign, stream)
129
- // await sleep(2000)
130
- // }
131
- // console.log("––––––––––––––––––––––––")
132
- // }
133
- // }
134
- let removeGeosFromAllRedirectCampaigns = async (geoToRemove) => {
135
- let allCampaigns = await keitaro_service_1.KeitaroService.getAllCampaigns();
136
- let regexp = new RegExp(`^F #`);
137
- const matchingCampaigns = allCampaigns.filter(campaign => regexp.exec(campaign.name));
138
- for (let campaign of matchingCampaigns) {
139
- console.log(campaign.name);
140
- console.log("––––––––––––––––––––––––");
141
- let streams = await keitaro_service_1.KeitaroService.getStreamsByCampaignId(campaign.id);
142
- let botStream = streams[0];
143
- botStream.name = "Bot Protection";
144
- let owStream = streams.find(s => s.name == "OW");
145
- for (let stream of [owStream, botStream]) {
146
- if (!stream)
147
- continue;
148
- let geos = stream?.filters[0]?.payload;
149
- if (!geos)
150
- continue;
151
- let index = geos.findIndex(geo => geo == geoToRemove);
152
- geos.splice(index, 1);
153
- let newGeos = stream.filters[0].payload = geos;
154
- console.log({
155
- name: stream.name,
156
- geos: geos,
157
- geosToRemove: geoToRemove,
158
- newGeos: newGeos
159
- });
160
- await keitaro_service_1.KeitaroService.upsertStreamToCampaign(campaign, stream);
161
- await sleep(1200);
162
- }
163
- console.log("––––––––––––––––––––––––");
164
- }
165
- };
166
- exports.removeGeosFromAllRedirectCampaigns = removeGeosFromAllRedirectCampaigns;
167
- // export let createOrFindFlashRedirectCampaign = async (app: IApp): Promise<IKeitaroCampaign> => {
168
- // if (app.keitaroData && app.keitaroData?.redirectCampaignId && app.keitaroData?.redirectCampaignId != 0) {
169
- // console.log("Already exists! Fetching...")
170
- // let campaign = await KeitaroService.getCampaignById(app.keitaroData.redirectCampaignId)
171
- // return campaign
172
- // }
173
- // // Checking for already existing campaign
174
- // let allCampaigns = await KeitaroService.getAllCampaigns()
175
- // let regexp = new RegExp(`^F #${app.id}`)
176
- // const matchingCampaigns = allCampaigns.filter(campaign => regexp.exec(campaign.name));
177
- // if (matchingCampaigns.length != 0) {
178
- // let campaign = matchingCampaigns[0]
179
- // // if (app.keitaroData) app.keitaroData.redirectCampaignId = campaign.id
180
- // console.log("Already exists!")
181
- // // await app.save()
182
- // return campaign
183
- // }
184
- // // Select domain for a campaign
185
- // let allDomains = await KeitaroService.getDomains(true)
186
- // if (!allDomains) {
187
- // throw Error(`Failed to get all domains list`)
188
- // }
189
- // const domain = allDomains[Math.floor(Math.random() * allDomains.length)];
190
- // // Okay, now we have everything, let's create name for our campaign
191
- // const name = `F #${app.id} (${app.bundle})`
192
- // // And generate alias
193
- // const alias = Array.from({ length: 8 }, () => Math.floor(Math.random() * 36).toString(36)).join('');
194
- // // Here go the parameters for our campaign
195
- // let parameters = prepareRedirectCampaignParameters(app.id)
196
- // // Now let create a campaign object
197
- // let campaignData = prepareCampaignObject(name, alias, domain, parameters)
198
- // // And POST it to Keitaro!
199
- // let createdCampaign = await KeitaroService.createCampaign(campaignData)
200
- // console.log(`Done! Campaign data:`)
201
- // console.log(createdCampaign)
202
- // return createdCampaign
203
- // }
204
- let prepareCampaignObject = (name, alias, domain, parameters) => {
205
- return {
206
- name: name,
207
- alias: alias,
208
- type: TYPE_POSITION,
209
- uniqueness_method: UNIQUENESS_METHOD,
210
- cookies_ttl: MAX_COOKIES_TTL,
211
- state: STATE_ACTIVE,
212
- cost_type: COST_TYPE_CPC,
213
- cost_value: COST_VALUE,
214
- cost_currency: COST_CURRENCY_USD,
215
- group_id: FLASH_REDIRECT_GROUP_ID,
216
- traffic_source_id: exports.TRAFFIC_SOURCE_ID_FLASH_AI,
217
- domain_id: domain.id,
218
- parameters: parameters,
219
- uniqueness_use_cookies: true,
220
- traffic_loss: 0
221
- };
222
- };
223
- let prepareRedirectCampaignParameters = (appId) => {
224
- return {
225
- "keyword": {
226
- "name": "keyword",
227
- "placeholder": "",
228
- "alias": "Ключевик"
229
- },
230
- "cost": {
231
- "name": "cost",
232
- "placeholder": "",
233
- "alias": "Расход"
234
- },
235
- "currency": {
236
- "name": "currency",
237
- "placeholder": "",
238
- "alias": "Валюта"
239
- },
240
- "external_id": {
241
- "name": "external_id",
242
- "placeholder": "",
243
- "alias": "External ID"
244
- },
245
- "creative_id": {
246
- "name": "creative_id",
247
- "placeholder": "",
248
- "alias": "Creative ID"
249
- },
250
- "ad_campaign_id": {
251
- "name": "ad_campaign_id",
252
- "placeholder": "",
253
- "alias": "Ad Campaign ID"
254
- },
255
- "source": {
256
- "name": "source",
257
- "placeholder": "",
258
- "alias": "Сайт"
259
- },
260
- "sub_id_7": {
261
- "name": "sub_id_7",
262
- "placeholder": "",
263
- "alias": "Sub id 7"
264
- },
265
- "sub_id_8": {
266
- "name": "session_id",
267
- "placeholder": "",
268
- "alias": "session_id"
269
- },
270
- "sub_id_9": {
271
- "name": "sub_id_9",
272
- "placeholder": "",
273
- "alias": "Sub id 9"
274
- },
275
- "sub_id_10": {
276
- "name": "sub_id_10",
277
- "placeholder": "",
278
- "alias": "Sub id 10"
279
- },
280
- "sub_id_11": {
281
- "name": "sub_id_11",
282
- "placeholder": "",
283
- "alias": "Sub id 11"
284
- },
285
- "platform": {
286
- "name": "platform",
287
- "placeholder": "",
288
- "alias": "platform"
289
- },
290
- "ad_partner": {
291
- "name": "ad_partner",
292
- "placeholder": "",
293
- "alias": "ad_partner"
294
- },
295
- "ad_traffic": {
296
- "name": "ad_traffic",
297
- "placeholder": "",
298
- "alias": "ad_traffic"
299
- },
300
- "offer_id": {
301
- "name": "offer_id",
302
- "placeholder": "",
303
- "alias": "offer_id"
304
- },
305
- "sub_id_16": {
306
- "name": "sub_id_16",
307
- "placeholder": "",
308
- "alias": "Sub id 16"
309
- },
310
- "sub_id_17": {
311
- "name": "sub_id_17",
312
- "placeholder": "",
313
- "alias": "Sub id 17"
314
- }
315
- };
316
- };
317
6
  let prepareOWCampaignParameters = (app) => {
318
- return {
319
- "keyword": {
320
- "name": "keyword",
321
- "placeholder": "",
322
- "alias": "Ключевик"
323
- },
324
- "cost": {
325
- "name": "cost",
326
- "placeholder": "",
327
- "alias": "Расход"
328
- },
329
- "currency": {
330
- "name": "currency",
331
- "placeholder": "",
332
- "alias": "Валюта"
333
- },
334
- "external_id": {
335
- "name": "external_id",
336
- "placeholder": "",
337
- "alias": "External ID"
338
- },
339
- "creative_id": {
340
- "name": "creative_id",
341
- "placeholder": "",
342
- "alias": "Creative ID"
343
- },
344
- "ad_campaign_id": {
345
- "name": "ad_campaign_id",
346
- "placeholder": "",
347
- "alias": "Ad Campaign ID"
348
- },
349
- "source": {
350
- "name": "source",
351
- "placeholder": "",
352
- "alias": "Сайт"
353
- },
354
- "sub_id_8": {
355
- "name": "session_id",
356
- "placeholder": "",
357
- "alias": "session_id"
358
- },
359
- "sub_id_12": {
360
- "name": "platform",
361
- "placeholder": "",
362
- "alias": "platform"
363
- },
364
- "sub_id_13": {
365
- "name": "ad_partner",
366
- "placeholder": "",
367
- "alias": "ad_partner"
368
- },
369
- "sub_id_14": {
370
- "name": "ad_traffic",
371
- "placeholder": "",
372
- "alias": "ad_traffic"
373
- },
374
- "sub_id_15": {
375
- "name": "offer_id",
376
- "placeholder": "",
377
- "alias": "offer_id"
378
- },
379
- };
7
+ return {};
380
8
  };
381
9
  exports.prepareOWCampaignParameters = prepareOWCampaignParameters;
382
- // function createBPStreamPartialPayload(app: IApp): Partial<IKeitaroStream> {
383
- // return {
384
- // name: `Bot Protection`,
385
- // type: "forced",
386
- // action_type: "http",
387
- // action_payload: "https://tomain.com",
388
- // schema: "redirect",
389
- // filter_or: true,
390
- // collect_clicks: true,
391
- // weight: 0,
392
- // filters: [{
393
- // name: "country",
394
- // mode: "reject",
395
- // payload: app.geos.split(" ")
396
- // }, {
397
- // name: "bot",
398
- // mode: "accept",
399
- // payload: null,
400
- // }],
401
- // }
402
- // }
403
- function createDefenceMainStreamPartialPayload(app) {
404
- return {
405
- name: "ALL",
406
- type: "regular",
407
- action_type: "http",
408
- action_payload: undefined,
409
- schema: "redirect",
410
- filter_or: false,
411
- collect_clicks: true,
412
- weight: 100,
413
- };
414
- }
415
- // export function createOWStreamPartialPayload(app: IApp): Partial<IKeitaroStream> {
416
- // return {
417
- // name: `OW`,
418
- // type: "regular",
419
- // action_type: "http",
420
- // action_payload: "https://bprtsk-controlpanel.com/ow?appId={appId}&clickId={uid}&countryCode={country}",
421
- // schema: "redirect",
422
- // filter_or: false,
423
- // collect_clicks: true,
424
- // weight: 100,
425
- // filters: [{
426
- // name: "country",
427
- // mode: "accept",
428
- // payload: app.geos.split(" ")
429
- // }],
430
- // }
431
- // }
10
+ let addGeosToAllRedirectCampaigns = async (geosToAdd) => { };
11
+ exports.addGeosToAllRedirectCampaigns = addGeosToAllRedirectCampaigns;
12
+ let removeGeosFromAllRedirectCampaigns = async (geoToRemove) => { };
13
+ exports.removeGeosFromAllRedirectCampaigns = removeGeosFromAllRedirectCampaigns;
432
14
  async function createDirectCampaign(app) {
433
- let campaign = await keitaro_service_1.KeitaroService.cloneDCampaign(app);
434
- let stream = createDefenceMainStreamPartialPayload(app);
435
- await keitaro_service_1.KeitaroService.upsertStreamToCampaign(campaign, stream);
436
- return campaign;
15
+ throw new Error('createDirectCampaign: not implemented');
437
16
  }
438
17
  exports.createDirectCampaign = createDirectCampaign;
439
18
  async function createOWCampaign(app, platform) {
440
- let owCampaign = await keitaro_service_1.KeitaroService.cloneOWCampaign(app, platform);
441
- return owCampaign;
19
+ throw new Error('createOWCampaign: not implemented');
442
20
  }
443
21
  exports.createOWCampaign = createOWCampaign;
444
- // TODO separate files for offers, campaigns etc.
445
- let removeBrokenDomain = async () => {
446
- let regexp = new RegExp(`^#`);
447
- let campaigns = (await keitaro_service_1.KeitaroService.getAllCampaigns()).filter(campaign => regexp.exec(campaign.name) && campaign.domain == "https://slottibolt.com/");
448
- for (let campaign of campaigns) {
449
- console.log(campaign.name);
450
- }
451
- };
452
- let changeSourceForFA = async () => {
453
- let regexp = new RegExp(`^#`);
454
- let campaigns = (await keitaro_service_1.KeitaroService.getAllCampaigns()).filter(campaign => regexp.exec(campaign.name));
455
- for (let campaign of campaigns) {
456
- console.log(campaign.name);
457
- await keitaro_service_1.KeitaroService.updateCampaign(campaign.id, {
458
- traffic_source_id: 22
459
- });
460
- }
461
- };
462
- let replaceInOfferLink = async (old, replace, offerNameRegEx) => {
463
- let offers = await keitaro_service_1.KeitaroService.getAllOffers();
464
- offers = offers.filter((o) => offerNameRegEx.exec(o.name));
465
- for (let offer of offers) {
466
- console.log(offer.name);
467
- // offer.action_payload = offer.action_payload.replace(old, replace)
468
- await sleep(700);
469
- await keitaro_service_1.KeitaroService.updateOffer(offer);
470
- }
471
- };
472
- // let gatherInfoForFlashApps = async () => {
473
- // console.log(__dirname)
474
- // const pasteMap: PasteMap = JSON.parse(await readFile('/Users/bprtsk/Documents/Work/ASO/AI Control Panel /AI Panel Core/src/utils/map-paste.json', 'utf8'));
475
- // const trackingMap: TrackingMap = JSON.parse(await readFile('/Users/bprtsk/Documents/Work/ASO/AI Control Panel /AI Panel Core/src/utils/map-tracking.json', 'utf8'));
476
- // const flashApps: { [key: string]: IFlashApp | undefined } = JSON.parse(await readFile('/Users/bprtsk/Documents/Work/ASO/AI Control Panel /AI Panel Core/src/utils/map-apps.json', 'utf8'));
477
- // let allCampaigns = await KeitaroService.getAllCampaigns()
478
- // let owCampaigns = allCampaigns.filter(c => new RegExp(`^FA #`).exec(c.name)).reduce((acc, obj) => ({ ...acc, [new RegExp(/#(.*) \(/g).exec(obj.name)?.[1] || obj.name]: obj }), {});
479
- // let redirectCampaigns = allCampaigns.filter(c => new RegExp(`^F #`).exec(c.name)).reduce((acc, obj) => ({ ...acc, [new RegExp(/#(.*) \(/g).exec(obj.name)?.[1] || obj.name]: obj }), {});
480
- // let result = []
481
- // for (let [id, paste] of Object.entries(pasteMap)) {
482
- // console.log(`- #${id}`)
483
- // // let ow = owCampaigns[id as keyof object] as IKeitaroCampaign | undefined
484
- // // let redirect = redirectCampaigns[id as keyof object] as IKeitaroCampaign | undefined
485
- // // let tracking = trackingMap[id as keyof object]
486
- // let app = flashApps[id as keyof object]
487
- // if (!app) {
488
- // console.log(`! No app for ${id}`)
489
- // continue
490
- // }
491
- // // if (paste.status == FlashAppPlugStatus.ENABLED) {
492
- // // if (!ow) console.log(`#${id}: no OW`)
493
- // // if (!redirect) console.log(`No redirect for #${id}`)
494
- // // else if (!paste.content.includes(redirect.domain)) console.log(`#${id}: Redirect domain (${redirect.domain}) differs from paste domain (${paste.content})`)
495
- // // else if (!paste.content.includes(redirect.alias)) console.log(`#${id}: Redirect campaign alias (${redirect.alias}) differs from paste id (${paste.content})`)
496
- // // }
497
- // // let appId
498
- // // for (let parameter of Object.values(redirect?.parameters || {})) {
499
- // // if (parameter.name == "appId") {
500
- // // appId = parameter.placeholder
501
- // // }
502
- // // }
503
- // // if (!appId && ow) console.log(`No app id for #${id}`)
504
- // // else if (appId != id && ow) console.log(`Wrong app id (${appId}) for #${id}`)
505
- // // let owDomain = ow?.domain?.split("/")[2]
506
- // // let owDomainId = ow?.domain_id
507
- // // let owCampaignId = ow?.id
508
- // // let owCampaignName = ow?.name
509
- // // let owCampaignAlias = ow?.alias
510
- // // let redirectDomain = redirect?.domain?.split("/")[2]
511
- // // let redirectDomainId = redirect?.domain_id
512
- // // let redirectCampaignId = redirect?.id
513
- // // let redirectCampaignName = redirect?.name
514
- // // let redirectCampaignAlias = redirect?.alias
515
- // // let clickIdParameterName = ow?.parameters?.sub_id_8?.name
516
- // // let offerIdParameterName = ow?.parameters?.sub_id_15?.name
517
- // // if (!clickIdParameterName && app && ow) console.log(`No click id parameter for #${id}`)
518
- // // if (!offerIdParameterName && app && ow) console.log(`No offer id parameter for #${id}`)
519
- // // let trackingLink = tracking?.trackingUrl
520
- // // app.plugStatus = paste.status
521
- // // app.plugContent = paste.content
522
- // // app.plugType = PlugType.PASTEBIN
523
- // // app.plugId = paste.paste_id
524
- // // app.reservePlugType = PlugType.PASTEBIN
525
- // // app.plugAccountId = parseInt(paste.accountId)
526
- // // app.keitaroData.redirectDomainName = redirectDomain || "none"
527
- // // app.keitaroData.redirectDomainId = redirectDomainId || 0
528
- // // app.keitaroData.redirectCampaignId = redirectCampaignId || 0
529
- // // app.keitaroData.redirectCampaignName = redirectCampaignName || "none"
530
- // // app.keitaroData.redirectCampaignAlias = redirectCampaignAlias || "none"
531
- // // app.keitaroData.trackingDomainId = owDomainId || 0
532
- // // app.keitaroData.trackingDomainName = owDomain || "none"
533
- // // app.keitaroData.trackingCampaignId = owCampaignId || 0
534
- // // app.keitaroData.trackingCampaignName = owCampaignName || "none"
535
- // // app.keitaroData.trackingCampaignAlias = owCampaignAlias || "none"
536
- // // if (clickIdParameterName) app.keitaroData.clickIdParameterName = clickIdParameterName
537
- // // if (offerIdParameterName) app.keitaroData.offerIdParameterName = offerIdParameterName
538
- // // if (trackingLink) app.trackingUrl = trackingLink
539
- // // if (!owCampaignName?.includes(app.bundle) && ow) {
540
- // // console.log(`OW: bundle differs (${app.bundle} in DB and ${owCampaignName})`)
541
- // // }
542
- // // if (!redirectCampaignName?.includes(app.bundle) && redirect) {
543
- // // console.log(`Redirect: bundle differs (${app.bundle} in DB and ${redirectCampaignName})`)
544
- // // }
545
- // result.push(app)
546
- // console.log("--------------------")
547
- // }
548
- // await axios.post(`https://aipanel-secondary.com/flash/batch-update`, result, {
549
- // headers: {
550
- // "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjg3Mjc2NjA0LCJleHAiOjE2ODc4ODE0MDR9.XesrnNGmWlK-yBBMs5TeKvTe07A8Sud7B4MyfZAOMag"
551
- // }
552
- // })
553
- // // console.log(result)
554
- // }
555
- let findBrokenOfferStreams = async () => {
556
- let allCampaigns = await keitaro_service_1.KeitaroService.getAllCampaigns();
557
- let regexp = new RegExp(`^#`);
558
- const matchingCampaigns = allCampaigns.filter(campaign => regexp.exec(campaign.name));
559
- for (let campaign of matchingCampaigns) {
560
- console.log(campaign.name);
561
- console.log("––––––––––––––––––––––––");
562
- let streams = await keitaro_service_1.KeitaroService.getStreamsByCampaignId(campaign.id);
563
- for (let stream of streams) {
564
- if (stream.name == "Bot Protection")
565
- continue;
566
- let idPayload = stream.filters.find(f => f.name == "sub_id_15");
567
- if (!idPayload) {
568
- console.log(`${stream.name}: id payload is missing, payload: ${stream.filters}`);
569
- }
570
- }
571
- }
572
- };
573
- let moveCampaignsToAnotherGroup = async () => {
574
- const appIds = [
575
- 460, 457, 459, 456, 421, 711, 451, 709, 712, 428, 455, 388, 458,
576
- 355, 341, 342, 334, 431, 403, 436, 365, 393, 801, 702, 448, 444,
577
- 437, 439, 447, 378, 412, 380, 402, 852, 438
578
- ];
579
- let allCampaigns = await keitaro_service_1.KeitaroService.getAllCampaigns();
580
- let campaignIds = allCampaigns.filter(c => {
581
- for (let id of appIds)
582
- if (c.name.includes(`#${id}`))
583
- return true;
584
- return false;
585
- }).map(c => c.id);
586
- let from = 2, to = 80;
587
- await keitaro_service_1.KeitaroService.changeCampaignsGroup(from, to, campaignIds);
588
- };
589
- let renameCampaigns = async () => {
590
- let allCampaigns = await keitaro_service_1.KeitaroService.getAllCampaigns();
591
- let regexp = /^#(\d+)/;
592
- // Filter campaigns that match the regex
593
- const matchingCampaigns = allCampaigns.filter(campaign => regexp.test(campaign.name) && campaign.group_id == 80);
594
- console.log(`Matching campaigns found: ${matchingCampaigns.length}`);
595
- for (let campaign of matchingCampaigns) {
596
- const match = regexp.exec(campaign.name);
597
- if (match && match[1]) {
598
- const appId = match[1]; // Extracted number after '#'
599
- await keitaro_service_1.KeitaroService.updateCampaign(campaign.id, { name: `#${appId} [⛌]` });
600
- console.log(`Updated "${campaign.name}" to #${appId} [⛌]`);
601
- }
602
- }
603
- };
604
- // renameCampaigns()
605
- // moveCampaignsToAnotherGroup()
606
- // Getting campaign group ids
607
- // (async () => {
608
- // let campaigns = await KeitaroService.getAllCampaigns()
609
- // let normal = campaigns.find(c => c.id == 2684)
610
- // let archive = campaigns.find(c => c.id == 2679)
611
- // console.log([normal?.group_id, archive?.group_id])
612
- // })()
613
- // findBrokenOfferStreams()
614
- // removeBrokenDomain()
615
- // createFlashCampaigns(sampleApp)
616
- // changeSourceForFA()
617
- // addGeosToAllRedirectCam`paigns("GR")
618
- // removeGeosFromAllRedirectCampaigns("BE`")
619
- // gatherInfoForFlashApps()
620
- // replaceInOfferLink(`xmariorel.com`, `lalielynaualish.com`, /.*icecasino_huffson.*/g)
621
- // replaceInOfferLink(`lp=18`, `lp=00`, /.*icecasino_huffson.*/g)
622
- // let test = async () => console.log(await KeitaroService.getProfitForTodayAndYesterday())
623
- // test()
624
- async function fixLastThreeMonthsClickCosts() {
625
- // Get current date
626
- const now = new Date();
627
- // Calculate date 3 months ago
628
- const threeMonthsAgo = new Date();
629
- threeMonthsAgo.setMonth(threeMonthsAgo.getMonth() - 3);
630
- // Format dates to required format "YYYY-MM-DD HH:MM"
631
- const startDate = threeMonthsAgo.toISOString().slice(0, 10) + " 00:00";
632
- const endDate = now.toISOString().slice(0, 10) + " 23:59";
633
- console.log(`Fixing click costs from ${startDate} to ${endDate}`);
634
- try {
635
- await keitaro_service_1.KeitaroService.fixBrokenClickCosts(startDate, endDate);
636
- console.log("Successfully fixed click costs");
637
- }
638
- catch (error) {
639
- console.error("Failed to fix click costs:", error);
640
- throw error;
641
- }
642
- }
643
- // fixLastThreeMonthsClickCosts();
644
- async function disableAutoCost() {
645
- try {
646
- // Get all campaigns
647
- const campaigns = await keitaro_service_1.KeitaroService.getAllCampaigns();
648
- console.log(`Disabling auto cost for ${campaigns.length} campaigns...`);
649
- // Update each campaign
650
- for (const campaign of campaigns) {
651
- try {
652
- await keitaro_service_1.KeitaroService.updateCampaign(campaign.id, { cost_auto: false });
653
- console.log(`Disabled auto cost for campaign: ${campaign.name} (ID: ${campaign.id})`);
654
- // Add a small delay to avoid overwhelming the API
655
- await sleep(500);
656
- }
657
- catch (error) {
658
- console.error(`Failed to update campaign ${campaign.name} (ID: ${campaign.id}):`, error);
659
- }
660
- }
661
- console.log('Successfully disabled auto cost for all campaigns');
662
- }
663
- catch (error) {
664
- console.error('Failed to disable auto cost:', error);
665
- throw error;
666
- }
667
- }
668
- async function getClicksByIp(ip, campaignId, interval = keitaro_clicks_1.KeitaroClicksInterval.ONE_MONTH_AGO, limit = 100) {
669
- const request = {
670
- range: {
671
- interval
672
- },
673
- columns: ['sub_id'],
674
- filters: [
675
- {
676
- name: 'ip',
677
- operator: 'BEGINS_WITH',
678
- expression: ip
679
- },
680
- {
681
- name: 'campaign_id',
682
- operator: 'EQUALS',
683
- expression: campaignId
684
- }
685
- ],
686
- limit
687
- };
688
- return keitaro_service_1.KeitaroService.getClicks(request);
689
- }
690
- async function checkMultipleIPs() {
691
- const ips = [
692
- "88.155.31.196",
693
- "176.120.63.205"
694
- ];
695
- let subids = [];
696
- for (const ip of ips) {
697
- // console.log(`\nChecking IP: ${ip}`);
698
- try {
699
- const clicks = await getClicksByIp(ip, 2832, keitaro_clicks_1.KeitaroClicksInterval.SEVEN_DAYS_AGO);
700
- subids.push(clicks[clicks.length - 1].sub_id);
701
- }
702
- catch (error) { }
703
- await sleep(300); // Delay to avoid rate limiting
704
- }
705
- return subids;
706
- }
707
- async function sendPostbacks(subids, status, payout) {
708
- const baseUrl = 'https://aibprtsk.com/bab2832/postback';
709
- const sendPostback = async (subid) => {
710
- try {
711
- let url = `${baseUrl}?subid=${subid}&status=${status}`;
712
- if (payout !== undefined) {
713
- url += `&payout=${payout}`;
714
- }
715
- const response = await axios_1.default.get(url);
716
- if (response.status !== 200) {
717
- throw new Error(`HTTP error! status: ${response.status}`);
718
- }
719
- console.log(`Postback sent successfully for subid: ${subid}`);
720
- }
721
- catch (error) {
722
- console.error(`Failed to send postback for subid: ${subid}`, error);
723
- }
724
- // Add delay between requests to prevent overwhelming the server
725
- await sleep(300);
726
- };
727
- // Process postbacks sequentially to avoid rate limiting
728
- for (const subid of subids) {
729
- await sendPostback(subid);
730
- }
731
- }
22
+ async function sendPostbacks(subids, status, payout) { }
732
23
  exports.sendPostbacks = sendPostbacks;
733
- (async () => {
734
- let subids = await checkMultipleIPs();
735
- await sendPostbacks(subids, 'sale', 125);
736
- })();