instasave-sdk 1.2.1 → 1.2.5
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/CHANGELOG.md +47 -0
- package/README.md +1 -1
- package/dist/{auth-fast.d.ts → auth/auth-manager.d.ts} +4 -12
- package/dist/auth/auth-manager.d.ts.map +1 -0
- package/dist/{auth-fast.js → auth/auth-manager.js} +26 -68
- package/dist/auth/auth-manager.js.map +1 -0
- package/dist/auth/index.d.ts +4 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +8 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/session-manager.d.ts +8 -0
- package/dist/auth/session-manager.d.ts.map +1 -0
- package/dist/auth/session-manager.js +57 -0
- package/dist/auth/session-manager.js.map +1 -0
- package/dist/browser/browser-pool.d.ts.map +1 -0
- package/dist/{browser-pool.js → browser/browser-pool.js} +1 -1
- package/dist/browser/browser-pool.js.map +1 -0
- package/dist/browser/crawler-manager.d.ts.map +1 -0
- package/dist/{crawler-manager.js → browser/crawler-manager.js} +6 -6
- package/dist/browser/crawler-manager.js.map +1 -0
- package/dist/browser/index.d.ts +3 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +8 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +8 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/media-scraper.d.ts +107 -0
- package/dist/core/media-scraper.d.ts.map +1 -0
- package/dist/core/media-scraper.js +496 -0
- package/dist/core/media-scraper.js.map +1 -0
- package/dist/core/workflow-executor.d.ts +17 -0
- package/dist/core/workflow-executor.d.ts.map +1 -0
- package/dist/core/workflow-executor.js +146 -0
- package/dist/core/workflow-executor.js.map +1 -0
- package/dist/index.d.ts +13 -132
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -635
- package/dist/index.js.map +1 -1
- package/dist/platforms/instagram/constants.d.ts +25 -0
- package/dist/platforms/instagram/constants.d.ts.map +1 -0
- package/dist/platforms/instagram/constants.js +34 -0
- package/dist/platforms/instagram/constants.js.map +1 -0
- package/dist/platforms/instagram/extractors/carousel.d.ts +21 -0
- package/dist/platforms/instagram/extractors/carousel.d.ts.map +1 -0
- package/dist/platforms/instagram/extractors/carousel.js +64 -0
- package/dist/platforms/instagram/extractors/carousel.js.map +1 -0
- package/dist/platforms/instagram/extractors/common.d.ts +17 -0
- package/dist/platforms/instagram/extractors/common.d.ts.map +1 -0
- package/dist/platforms/instagram/extractors/common.js +67 -0
- package/dist/platforms/instagram/extractors/common.js.map +1 -0
- package/dist/platforms/instagram/extractors/metadata.d.ts +24 -0
- package/dist/platforms/instagram/extractors/metadata.d.ts.map +1 -0
- package/dist/platforms/instagram/extractors/metadata.js +129 -0
- package/dist/platforms/instagram/extractors/metadata.js.map +1 -0
- package/dist/platforms/instagram/extractors/profile.d.ts +16 -0
- package/dist/platforms/instagram/extractors/profile.d.ts.map +1 -0
- package/dist/platforms/instagram/extractors/profile.js +54 -0
- package/dist/platforms/instagram/extractors/profile.js.map +1 -0
- package/dist/platforms/{instagram.d.ts → instagram/index.d.ts} +2 -2
- package/dist/platforms/instagram/index.d.ts.map +1 -0
- package/dist/platforms/instagram/index.js +53 -0
- package/dist/platforms/instagram/index.js.map +1 -0
- package/dist/plugins/index.d.ts +4 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +21 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/plugin-manager.d.ts +50 -0
- package/dist/plugins/plugin-manager.d.ts.map +1 -0
- package/dist/{plugins.js → plugins/plugin-manager.js} +4 -4
- package/dist/plugins/plugin-manager.js.map +1 -0
- package/dist/types/auth.d.ts +15 -0
- package/dist/types/auth.d.ts.map +1 -0
- package/dist/types/auth.js +3 -0
- package/dist/types/auth.js.map +1 -0
- package/dist/types/browser.d.ts +28 -0
- package/dist/types/browser.d.ts.map +1 -0
- package/dist/types/browser.js +3 -0
- package/dist/types/browser.js.map +1 -0
- package/dist/{types.d.ts → types/common.d.ts} +15 -15
- package/dist/types/common.d.ts.map +1 -0
- package/dist/{types.js → types/common.js} +1 -1
- package/dist/types/common.js.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +24 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/platform.d.ts +3 -0
- package/dist/types/platform.d.ts.map +1 -0
- package/dist/types/platform.js +20 -0
- package/dist/types/platform.js.map +1 -0
- package/dist/types/plugins.d.ts +61 -0
- package/dist/types/plugins.d.ts.map +1 -0
- package/dist/types/plugins.js +3 -0
- package/dist/types/plugins.js.map +1 -0
- package/dist/types/workflow.d.ts +17 -0
- package/dist/types/workflow.d.ts.map +1 -0
- package/dist/types/workflow.js +3 -0
- package/dist/types/workflow.js.map +1 -0
- package/dist/utils/config/config-parser.d.ts.map +1 -0
- package/dist/{config-parser.js → utils/config/config-parser.js} +5 -5
- package/dist/utils/config/config-parser.js.map +1 -0
- package/dist/utils/config/index.d.ts +2 -0
- package/dist/utils/config/index.d.ts.map +1 -0
- package/dist/utils/config/index.js +18 -0
- package/dist/utils/config/index.js.map +1 -0
- package/dist/{file-manager.d.ts → utils/file-manager.d.ts} +1 -1
- package/dist/utils/file-manager.d.ts.map +1 -0
- package/dist/utils/file-manager.js.map +1 -0
- package/dist/{health.d.ts → utils/health/health-checker.d.ts} +1 -1
- package/dist/utils/health/health-checker.d.ts.map +1 -0
- package/dist/{health.js → utils/health/health-checker.js} +1 -1
- package/dist/utils/health/health-checker.js.map +1 -0
- package/dist/utils/health/index.d.ts +2 -0
- package/dist/utils/health/index.d.ts.map +1 -0
- package/dist/utils/health/index.js +18 -0
- package/dist/utils/health/index.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +25 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger/index.d.ts +2 -0
- package/dist/utils/logger/index.d.ts.map +1 -0
- package/dist/utils/logger/index.js +18 -0
- package/dist/utils/logger/index.js.map +1 -0
- package/dist/utils/logger/logger.d.ts +44 -0
- package/dist/utils/logger/logger.d.ts.map +1 -0
- package/dist/utils/logger/logger.js +301 -0
- package/dist/utils/logger/logger.js.map +1 -0
- package/dist/utils/metrics/index.d.ts +2 -0
- package/dist/utils/metrics/index.d.ts.map +1 -0
- package/dist/utils/metrics/index.js +18 -0
- package/dist/utils/metrics/index.js.map +1 -0
- package/dist/{metrics.d.ts → utils/metrics/metrics-collector.d.ts} +1 -1
- package/dist/utils/metrics/metrics-collector.d.ts.map +1 -0
- package/dist/{metrics.js → utils/metrics/metrics-collector.js} +1 -1
- package/dist/utils/metrics/metrics-collector.js.map +1 -0
- package/dist/utils/progress-tracker.d.ts +11 -0
- package/dist/utils/progress-tracker.d.ts.map +1 -0
- package/dist/{progress-tracker.js → utils/progress-tracker.js} +0 -3
- package/dist/utils/progress-tracker.js.map +1 -0
- package/dist/utils/url-normalizer.d.ts.map +1 -0
- package/dist/utils/url-normalizer.js.map +1 -0
- package/package.json +1 -1
- package/dist/auth-fast.d.ts.map +0 -1
- package/dist/auth-fast.js.map +0 -1
- package/dist/auth.d.ts +0 -80
- package/dist/auth.d.ts.map +0 -1
- package/dist/auth.js +0 -370
- package/dist/auth.js.map +0 -1
- package/dist/benchmark.d.ts +0 -48
- package/dist/benchmark.d.ts.map +0 -1
- package/dist/benchmark.js +0 -125
- package/dist/benchmark.js.map +0 -1
- package/dist/browser-pool.d.ts.map +0 -1
- package/dist/browser-pool.js.map +0 -1
- package/dist/config-parser.d.ts.map +0 -1
- package/dist/config-parser.js.map +0 -1
- package/dist/crawler-manager.d.ts.map +0 -1
- package/dist/crawler-manager.js.map +0 -1
- package/dist/file-manager.d.ts.map +0 -1
- package/dist/file-manager.js.map +0 -1
- package/dist/health.d.ts.map +0 -1
- package/dist/health.js.map +0 -1
- package/dist/logger.d.ts +0 -22
- package/dist/logger.d.ts.map +0 -1
- package/dist/logger.js +0 -151
- package/dist/logger.js.map +0 -1
- package/dist/memory.d.ts +0 -56
- package/dist/memory.d.ts.map +0 -1
- package/dist/memory.js +0 -144
- package/dist/memory.js.map +0 -1
- package/dist/metrics.d.ts.map +0 -1
- package/dist/metrics.js.map +0 -1
- package/dist/parallel.d.ts +0 -59
- package/dist/parallel.d.ts.map +0 -1
- package/dist/parallel.js +0 -202
- package/dist/parallel.js.map +0 -1
- package/dist/platforms/instagram.d.ts.map +0 -1
- package/dist/platforms/instagram.js +0 -263
- package/dist/platforms/instagram.js.map +0 -1
- package/dist/plugins.d.ts +0 -132
- package/dist/plugins.d.ts.map +0 -1
- package/dist/plugins.js.map +0 -1
- package/dist/progress-tracker.d.ts +0 -15
- package/dist/progress-tracker.d.ts.map +0 -1
- package/dist/progress-tracker.js.map +0 -1
- package/dist/smart-logger.d.ts +0 -64
- package/dist/smart-logger.d.ts.map +0 -1
- package/dist/smart-logger.js +0 -149
- package/dist/smart-logger.js.map +0 -1
- package/dist/test-integration.d.ts +0 -2
- package/dist/test-integration.d.ts.map +0 -1
- package/dist/test-integration.js +0 -46
- package/dist/test-integration.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/url-normalizer.d.ts.map +0 -1
- package/dist/url-normalizer.js.map +0 -1
- package/dist/worker.d.ts +0 -2
- package/dist/worker.d.ts.map +0 -1
- package/dist/worker.js +0 -23
- package/dist/worker.js.map +0 -1
- /package/dist/{browser-pool.d.ts → browser/browser-pool.d.ts} +0 -0
- /package/dist/{crawler-manager.d.ts → browser/crawler-manager.d.ts} +0 -0
- /package/dist/{config-parser.d.ts → utils/config/config-parser.d.ts} +0 -0
- /package/dist/{file-manager.js → utils/file-manager.js} +0 -0
- /package/dist/{url-normalizer.d.ts → utils/url-normalizer.d.ts} +0 -0
- /package/dist/{url-normalizer.js → utils/url-normalizer.js} +0 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { MediaData } from '../types';
|
|
2
|
+
import { FastAuthManager, LoginCredentials } from '../auth';
|
|
3
|
+
import { PluginManager, Plugin, ScrapingOptions } from '../plugins';
|
|
4
|
+
import { ConfigParser, InstaSaveConfig } from '../utils/config';
|
|
5
|
+
/**
|
|
6
|
+
* Main media scraper class with multi-platform support
|
|
7
|
+
* @class MediaScraper
|
|
8
|
+
*/
|
|
9
|
+
export declare class MediaScraper {
|
|
10
|
+
private workflowExecutor;
|
|
11
|
+
private metricsCollector;
|
|
12
|
+
private healthChecker;
|
|
13
|
+
private pluginManager;
|
|
14
|
+
private authManager;
|
|
15
|
+
private fileManager;
|
|
16
|
+
private configParser;
|
|
17
|
+
private config;
|
|
18
|
+
private currentScrapeId;
|
|
19
|
+
private stepCallback;
|
|
20
|
+
private crawlerManager;
|
|
21
|
+
/**
|
|
22
|
+
* Creates a new MediaScraper instance
|
|
23
|
+
*/
|
|
24
|
+
constructor();
|
|
25
|
+
/**
|
|
26
|
+
* Handle configuration changes
|
|
27
|
+
*/
|
|
28
|
+
private handleConfigChange;
|
|
29
|
+
/**
|
|
30
|
+
* Auto-login if credentials are available in config
|
|
31
|
+
*/
|
|
32
|
+
private autoLogin;
|
|
33
|
+
/**
|
|
34
|
+
* Register a plugin (platform or utility)
|
|
35
|
+
*/
|
|
36
|
+
use(plugin: Plugin): void;
|
|
37
|
+
/**
|
|
38
|
+
* Login to Instagram
|
|
39
|
+
*/
|
|
40
|
+
login(credentials: LoginCredentials): Promise<boolean>;
|
|
41
|
+
/**
|
|
42
|
+
* Universal scrape method - automatically detects platform
|
|
43
|
+
*/
|
|
44
|
+
scrape(url: string, options?: ScrapingOptions): Promise<MediaData>;
|
|
45
|
+
private saveToFile;
|
|
46
|
+
/**
|
|
47
|
+
* Set callback for step tracking
|
|
48
|
+
*/
|
|
49
|
+
setStepCallback(callback: (stepData: any) => void): void;
|
|
50
|
+
/**
|
|
51
|
+
* Gets current metrics
|
|
52
|
+
*/
|
|
53
|
+
getMetrics(): import("../utils/metrics").ScrapingMetrics;
|
|
54
|
+
/**
|
|
55
|
+
* Gets health status
|
|
56
|
+
*/
|
|
57
|
+
getHealth(): Promise<import("../utils/health").HealthStatus>;
|
|
58
|
+
/**
|
|
59
|
+
* Gets Prometheus-formatted metrics
|
|
60
|
+
*/
|
|
61
|
+
getPrometheusMetrics(): string;
|
|
62
|
+
/**
|
|
63
|
+
* Get plugin manager for advanced plugin operations
|
|
64
|
+
*/
|
|
65
|
+
getPluginManager(): PluginManager;
|
|
66
|
+
/**
|
|
67
|
+
* Get auth manager for advanced auth operations
|
|
68
|
+
*/
|
|
69
|
+
getAuthManager(): FastAuthManager;
|
|
70
|
+
/**
|
|
71
|
+
* Get current configuration
|
|
72
|
+
*/
|
|
73
|
+
getConfig(): InstaSaveConfig;
|
|
74
|
+
/**
|
|
75
|
+
* Get config parser for advanced config operations
|
|
76
|
+
*/
|
|
77
|
+
getConfigParser(): ConfigParser;
|
|
78
|
+
refreshSession(): Promise<boolean>;
|
|
79
|
+
/**
|
|
80
|
+
* Get current logged-in username
|
|
81
|
+
*/
|
|
82
|
+
getUsername(): string | null;
|
|
83
|
+
/**
|
|
84
|
+
* Get current logged-in user's display name (real name)
|
|
85
|
+
*/
|
|
86
|
+
getDisplayName(): string | null;
|
|
87
|
+
/**
|
|
88
|
+
* Get current logged-in user info
|
|
89
|
+
*/
|
|
90
|
+
getUserInfo(): {
|
|
91
|
+
username: string | null;
|
|
92
|
+
displayName: string | null;
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* Logout and clear session data
|
|
96
|
+
*/
|
|
97
|
+
logout(): Promise<void>;
|
|
98
|
+
/**
|
|
99
|
+
* Clear all cached data and reset SDK state
|
|
100
|
+
*/
|
|
101
|
+
cleanup(): Promise<void>;
|
|
102
|
+
/**
|
|
103
|
+
* Pauses execution for specified milliseconds
|
|
104
|
+
*/
|
|
105
|
+
private sleep;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=media-scraper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-scraper.d.ts","sourceRoot":"","sources":["../../src/core/media-scraper.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,EAAkB,eAAe,EAAE,MAAM,YAAY,CAAC;AAKpF,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAShE;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,YAAY,CAA0C;IAC9D,OAAO,CAAC,cAAc,CAAiB;IAEvC;;OAEG;;IAoCH;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoB1B;;OAEG;YACW,SAAS;IAevB;;OAEG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIzB;;OAEG;IACG,KAAK,CAAC,WAAW,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IA2B5D;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,SAAS,CAAC;YAoQ9D,UAAU;IAaxB;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI;IAIjD;;OAEG;IACH,UAAU;IAIV;;OAEG;IACG,SAAS;IAIf;;OAEG;IACH,oBAAoB,IAAI,MAAM;IAI9B;;OAEG;IACH,gBAAgB,IAAI,aAAa;IAIjC;;OAEG;IACH,cAAc,IAAI,eAAe;IAIjC;;OAEG;IACH,SAAS,IAAI,eAAe;IAI5B;;OAEG;IACH,eAAe,IAAI,YAAY;IAIzB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAWxC;;OAEG;IACH,WAAW,IAAI,MAAM,GAAG,IAAI;IAI5B;;OAEG;IACH,cAAc,IAAI,MAAM,GAAG,IAAI;IAI/B;;OAEG;IACH,WAAW,IAAI;QAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE;IAOtE;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAK7B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ9B;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd"}
|
|
@@ -0,0 +1,496 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.MediaScraper = void 0;
|
|
37
|
+
const fs_1 = require("fs");
|
|
38
|
+
const path_1 = require("path");
|
|
39
|
+
const crawlee_1 = require("crawlee");
|
|
40
|
+
const dotenv = __importStar(require("dotenv"));
|
|
41
|
+
const auth_1 = require("../auth");
|
|
42
|
+
const plugins_1 = require("../plugins");
|
|
43
|
+
const metrics_1 = require("../utils/metrics");
|
|
44
|
+
const health_1 = require("../utils/health");
|
|
45
|
+
const platforms_1 = require("../platforms");
|
|
46
|
+
const file_manager_1 = require("../utils/file-manager");
|
|
47
|
+
const config_1 = require("../utils/config");
|
|
48
|
+
const url_normalizer_1 = require("../utils/url-normalizer");
|
|
49
|
+
const crawler_manager_1 = require("../browser/crawler-manager");
|
|
50
|
+
const logger_1 = require("../utils/logger");
|
|
51
|
+
const workflow_executor_1 = require("./workflow-executor");
|
|
52
|
+
// Load environment variables
|
|
53
|
+
dotenv.config();
|
|
54
|
+
/**
|
|
55
|
+
* Main media scraper class with multi-platform support
|
|
56
|
+
* @class MediaScraper
|
|
57
|
+
*/
|
|
58
|
+
class MediaScraper {
|
|
59
|
+
/**
|
|
60
|
+
* Creates a new MediaScraper instance
|
|
61
|
+
*/
|
|
62
|
+
constructor() {
|
|
63
|
+
this.currentScrapeId = null;
|
|
64
|
+
this.stepCallback = null;
|
|
65
|
+
this.workflowExecutor = new workflow_executor_1.WorkflowExecutor();
|
|
66
|
+
this.metricsCollector = new metrics_1.MetricsCollector();
|
|
67
|
+
this.healthChecker = new health_1.HealthChecker();
|
|
68
|
+
this.healthChecker = new health_1.HealthChecker();
|
|
69
|
+
this.pluginManager = new plugins_1.PluginManager();
|
|
70
|
+
this.authManager = new auth_1.FastAuthManager();
|
|
71
|
+
this.fileManager = new file_manager_1.FileManager();
|
|
72
|
+
this.configParser = new config_1.ConfigParser();
|
|
73
|
+
this.crawlerManager = crawler_manager_1.CrawlerManager.getInstance();
|
|
74
|
+
// Set crawler manager for auth manager
|
|
75
|
+
this.authManager.setCrawlerManager(this.crawlerManager);
|
|
76
|
+
// Load configuration
|
|
77
|
+
this.config = this.configParser.loadConfig();
|
|
78
|
+
this.configParser.applyToEnvironment();
|
|
79
|
+
// Setup config change listener
|
|
80
|
+
this.configParser.onConfigChange((newConfig, oldConfig) => {
|
|
81
|
+
this.handleConfigChange(newConfig, oldConfig);
|
|
82
|
+
});
|
|
83
|
+
// Setup smart logging
|
|
84
|
+
logger_1.Logger.setMode(this.config.settings.console_mode || 'Classic');
|
|
85
|
+
logger_1.Logger.suppressCrawlee();
|
|
86
|
+
logger_1.Logger.config(true);
|
|
87
|
+
// Auto-login if credentials are provided in config
|
|
88
|
+
this.autoLogin();
|
|
89
|
+
// Register built-in platforms
|
|
90
|
+
platforms_1.BUILTIN_PLATFORMS.forEach(plugin => this.pluginManager.register(plugin));
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Handle configuration changes
|
|
94
|
+
*/
|
|
95
|
+
handleConfigChange(newConfig, oldConfig) {
|
|
96
|
+
this.config = newConfig;
|
|
97
|
+
this.configParser.applyToEnvironment();
|
|
98
|
+
// Update logging mode if changed
|
|
99
|
+
if (newConfig.settings.console_mode !== oldConfig.settings.console_mode) {
|
|
100
|
+
logger_1.Logger.setMode(newConfig.settings.console_mode || 'Classic');
|
|
101
|
+
logger_1.Logger.classic(`Console mode changed to: ${newConfig.settings.console_mode}`);
|
|
102
|
+
}
|
|
103
|
+
// Re-login if credentials changed
|
|
104
|
+
if (newConfig.account.username !== oldConfig.account.username ||
|
|
105
|
+
newConfig.account.password !== oldConfig.account.password) {
|
|
106
|
+
logger_1.Logger.classic('Credentials changed, attempting re-login...');
|
|
107
|
+
this.autoLogin();
|
|
108
|
+
}
|
|
109
|
+
logger_1.Logger.classic('Configuration reloaded');
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Auto-login if credentials are available in config
|
|
113
|
+
*/
|
|
114
|
+
async autoLogin() {
|
|
115
|
+
const { auto_login, username, password } = this.config.account;
|
|
116
|
+
if (auto_login !== false && username && password) {
|
|
117
|
+
try {
|
|
118
|
+
logger_1.Logger.debug('🔐 Auto-login enabled, logging in with config credentials...');
|
|
119
|
+
await this.login({ username, password });
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
logger_1.Logger.always('⚠️ Auto-login failed: ' + error);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
else if (auto_login === false) {
|
|
126
|
+
logger_1.Logger.debug('🔐 Auto-login disabled in config');
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Register a plugin (platform or utility)
|
|
131
|
+
*/
|
|
132
|
+
use(plugin) {
|
|
133
|
+
this.pluginManager.register(plugin);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Login to Instagram
|
|
137
|
+
*/
|
|
138
|
+
async login(credentials) {
|
|
139
|
+
// Use original approach for login - create temporary crawler
|
|
140
|
+
const crawler = new crawlee_1.PuppeteerCrawler({
|
|
141
|
+
maxRequestRetries: 0,
|
|
142
|
+
requestHandlerTimeoutSecs: 60,
|
|
143
|
+
launchContext: {
|
|
144
|
+
launchOptions: {
|
|
145
|
+
executablePath: process.env.PUPPETEER_EXECUTABLE_PATH || undefined,
|
|
146
|
+
headless: this.config.settings.headless !== false,
|
|
147
|
+
args: ['--no-sandbox', '--disable-setuid-sandbox']
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
requestHandler: async ({ page }) => {
|
|
151
|
+
logger_1.log.info('🔧 Puppeteer page created, starting login...');
|
|
152
|
+
await this.authManager.login(page, credentials);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
try {
|
|
156
|
+
await crawler.run(['https://www.instagram.com/accounts/login']);
|
|
157
|
+
}
|
|
158
|
+
finally {
|
|
159
|
+
await crawler.teardown();
|
|
160
|
+
}
|
|
161
|
+
return this.authManager.isAuthenticated();
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Universal scrape method - automatically detects platform
|
|
165
|
+
*/
|
|
166
|
+
async scrape(url, options = {}) {
|
|
167
|
+
// Normalize URL for consistent results
|
|
168
|
+
const normalizedUrl = url_normalizer_1.URLNormalizer.isInstagramPostUrl(url)
|
|
169
|
+
? url_normalizer_1.URLNormalizer.normalizeInstagramUrl(url)
|
|
170
|
+
: url;
|
|
171
|
+
logger_1.Logger.debug(`🔗 URL normalized: ${url} → ${normalizedUrl}`);
|
|
172
|
+
// Initialize progress callback
|
|
173
|
+
const { progressCallback } = options;
|
|
174
|
+
// Step 1: Browser launch
|
|
175
|
+
if (progressCallback) {
|
|
176
|
+
progressCallback({ type: 'browser', percentage: 0, message: 'Launching browser...' });
|
|
177
|
+
}
|
|
178
|
+
// Find platform plugin for URL
|
|
179
|
+
const platformPlugin = this.pluginManager.getPlatformForUrl(normalizedUrl);
|
|
180
|
+
if (!platformPlugin) {
|
|
181
|
+
throw new Error(`No platform plugin found for URL: ${normalizedUrl}. Supported platforms: ${this.pluginManager.getPlatformPlugins().map(p => p.name).join(', ')}`);
|
|
182
|
+
}
|
|
183
|
+
logger_1.Logger.platform(platformPlugin.name);
|
|
184
|
+
logger_1.log.info(`🔍 Detected platform: ${platformPlugin.name}`);
|
|
185
|
+
logger_1.log.info('🚀 Initializing browser and crawler...');
|
|
186
|
+
// Execute onBeforeScrape hooks
|
|
187
|
+
await this.pluginManager.executeHook('onBeforeScrape', normalizedUrl, options);
|
|
188
|
+
const startTime = Date.now();
|
|
189
|
+
const authManager = this.authManager;
|
|
190
|
+
const useSession = options.useSession !== false && authManager.isAuthenticated();
|
|
191
|
+
return new Promise((resolve, reject) => {
|
|
192
|
+
const crawler = new crawlee_1.PuppeteerCrawler({
|
|
193
|
+
maxRequestRetries: options.retries || 0,
|
|
194
|
+
requestHandlerTimeoutSecs: options.timeout || 60,
|
|
195
|
+
launchContext: {
|
|
196
|
+
launchOptions: {
|
|
197
|
+
executablePath: process.env.PUPPETEER_EXECUTABLE_PATH || undefined,
|
|
198
|
+
args: ['--no-sandbox', '--disable-setuid-sandbox']
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
// Apply cookies BEFORE navigation
|
|
202
|
+
preNavigationHooks: [
|
|
203
|
+
async ({ page }) => {
|
|
204
|
+
if (useSession) {
|
|
205
|
+
logger_1.log.info('🔐 Applying session cookies before navigation...');
|
|
206
|
+
await authManager.applyCookies(page);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
],
|
|
210
|
+
requestHandler: async ({ page, request }) => {
|
|
211
|
+
try {
|
|
212
|
+
logger_1.log.info('Starting scrape operation...');
|
|
213
|
+
// Step 2: Navigation
|
|
214
|
+
if (progressCallback) {
|
|
215
|
+
progressCallback({ type: 'navigation', percentage: 25, message: 'Navigating to post...' });
|
|
216
|
+
}
|
|
217
|
+
// Set user agent
|
|
218
|
+
// Try mobile user agent for better audio detection
|
|
219
|
+
await page.setUserAgent('Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1');
|
|
220
|
+
// Force fresh content - disable cache and add cache-busting headers
|
|
221
|
+
await page.setExtraHTTPHeaders({
|
|
222
|
+
'Cache-Control': 'no-cache, no-store, must-revalidate',
|
|
223
|
+
'Pragma': 'no-cache',
|
|
224
|
+
'Expires': '0'
|
|
225
|
+
});
|
|
226
|
+
// Clear browser cache to force fresh data
|
|
227
|
+
const client = await page.target().createCDPSession();
|
|
228
|
+
await client.send('Network.clearBrowserCache');
|
|
229
|
+
await client.send('Network.clearBrowserCookies');
|
|
230
|
+
// Block unnecessary resources for faster loading
|
|
231
|
+
await page.setRequestInterception(true);
|
|
232
|
+
page.on('request', (req) => {
|
|
233
|
+
const resourceType = req.resourceType();
|
|
234
|
+
if (['stylesheet', 'font'].includes(resourceType)) {
|
|
235
|
+
req.abort();
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
req.continue();
|
|
239
|
+
}
|
|
240
|
+
});
|
|
241
|
+
// Navigate to the URL
|
|
242
|
+
await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 30000 });
|
|
243
|
+
// Check if login is required
|
|
244
|
+
const needsLogin = await page.evaluate(() => {
|
|
245
|
+
const loginIndicators = [
|
|
246
|
+
'Log in to continue',
|
|
247
|
+
'Login • Instagram',
|
|
248
|
+
'You must log in',
|
|
249
|
+
'This content isn\'t available right now'
|
|
250
|
+
];
|
|
251
|
+
const pageText = document.body.innerText;
|
|
252
|
+
const currentUrl = window.location.href;
|
|
253
|
+
return loginIndicators.some(indicator => pageText.includes(indicator) || currentUrl.includes('accounts/login'));
|
|
254
|
+
});
|
|
255
|
+
if (needsLogin) {
|
|
256
|
+
logger_1.log.info('🔐 Login required for this content');
|
|
257
|
+
if (!this.authManager.isAuthenticated()) {
|
|
258
|
+
throw new Error('Login required but no authentication available. Please login first via settings.');
|
|
259
|
+
}
|
|
260
|
+
// Validate session before proceeding
|
|
261
|
+
const sessionValid = await this.authManager.validateSession(page);
|
|
262
|
+
if (!sessionValid) {
|
|
263
|
+
throw new Error('Session expired or invalid. Please login again.');
|
|
264
|
+
}
|
|
265
|
+
logger_1.log.info('🔐 Applying authenticated session...');
|
|
266
|
+
// Navigate to Instagram homepage to establish session
|
|
267
|
+
await page.goto('https://www.instagram.com/', { waitUntil: 'domcontentloaded' });
|
|
268
|
+
await page.waitForTimeout(2000);
|
|
269
|
+
// Navigate back to target URL with session
|
|
270
|
+
await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 30000 });
|
|
271
|
+
// Verify access was granted
|
|
272
|
+
const stillBlocked = await page.evaluate(() => {
|
|
273
|
+
const pageText = document.body.innerText;
|
|
274
|
+
return pageText.includes('Log in to continue') || pageText.includes('You must log in');
|
|
275
|
+
});
|
|
276
|
+
if (stillBlocked) {
|
|
277
|
+
throw new Error('Content requires login but authentication failed. Content may be private or age-restricted.');
|
|
278
|
+
}
|
|
279
|
+
logger_1.log.info('✅ Successfully accessed content with authentication');
|
|
280
|
+
}
|
|
281
|
+
// Navigate to page with cache-busting
|
|
282
|
+
const cacheBustUrl = normalizedUrl + (normalizedUrl.includes('?') ? '&' : '?') + '_cb=' + Date.now();
|
|
283
|
+
logger_1.Logger.debug(`🔄 Cache-busting URL: ${cacheBustUrl}`);
|
|
284
|
+
await page.goto(cacheBustUrl, {
|
|
285
|
+
waitUntil: 'domcontentloaded',
|
|
286
|
+
timeout: 15000
|
|
287
|
+
});
|
|
288
|
+
await this.sleep(1000);
|
|
289
|
+
// Execute platform workflow if available
|
|
290
|
+
if (platformPlugin.workflow) {
|
|
291
|
+
await this.workflowExecutor.executeWorkflow(page, platformPlugin.workflow);
|
|
292
|
+
}
|
|
293
|
+
// Step 3: Extraction
|
|
294
|
+
if (progressCallback) {
|
|
295
|
+
progressCallback({ type: 'extraction', percentage: 50, message: 'Extracting media...' });
|
|
296
|
+
}
|
|
297
|
+
// Scrape using platform plugin
|
|
298
|
+
let data = await platformPlugin.scrape(page, normalizedUrl);
|
|
299
|
+
// Step 4: Metadata
|
|
300
|
+
if (progressCallback) {
|
|
301
|
+
progressCallback({ type: 'metadata', percentage: 75, message: 'Fetching metadata...' });
|
|
302
|
+
}
|
|
303
|
+
// Execute onMediaExtracted hook
|
|
304
|
+
data.media = await this.pluginManager.executeHook('onMediaExtracted', data.media) || data.media;
|
|
305
|
+
// Execute onAfterScrape hook
|
|
306
|
+
data = await this.pluginManager.executeHook('onAfterScrape', data) || data;
|
|
307
|
+
// Validate extracted data
|
|
308
|
+
if (!data.post_id) {
|
|
309
|
+
throw new Error('Failed to extract post ID');
|
|
310
|
+
}
|
|
311
|
+
// Step 5: Complete
|
|
312
|
+
if (progressCallback) {
|
|
313
|
+
progressCallback({ type: 'complete', percentage: 100, message: 'Done!' });
|
|
314
|
+
}
|
|
315
|
+
// Save to file if requested
|
|
316
|
+
if (options.saveToFile) {
|
|
317
|
+
try {
|
|
318
|
+
if (options.filenamePattern || options.skipDuplicates) {
|
|
319
|
+
// Use new FileManager
|
|
320
|
+
const savedFiles = await this.fileManager.saveMediaFiles(data, {
|
|
321
|
+
filenamePattern: options.filenamePattern,
|
|
322
|
+
skipDuplicates: options.skipDuplicates,
|
|
323
|
+
outputPath: options.outputPath
|
|
324
|
+
});
|
|
325
|
+
logger_1.log.info(`✓ Saved ${savedFiles.length} files with custom naming`);
|
|
326
|
+
}
|
|
327
|
+
else {
|
|
328
|
+
// Use legacy save method
|
|
329
|
+
await this.saveToFile(data, options.outputPath);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
catch (error) {
|
|
333
|
+
if (error instanceof Error && error.message.includes('Duplicate')) {
|
|
334
|
+
logger_1.log.info('⚠️ Skipped duplicate file');
|
|
335
|
+
}
|
|
336
|
+
else {
|
|
337
|
+
throw error;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
logger_1.Logger.scrape('start', data.post_id);
|
|
342
|
+
logger_1.Logger.scrape('success', data.post_id, { mediaCount: data.media.length });
|
|
343
|
+
logger_1.log.info(`✅ Successfully scraped ${data.platform} post: ${data.post_id}`);
|
|
344
|
+
// Record metrics
|
|
345
|
+
const responseTime = Date.now() - startTime;
|
|
346
|
+
this.metricsCollector.recordRequest(true, responseTime, data.media.length, JSON.stringify(data).length);
|
|
347
|
+
resolve(data);
|
|
348
|
+
}
|
|
349
|
+
catch (error) {
|
|
350
|
+
logger_1.log.error('Scraping failed:', error);
|
|
351
|
+
// Execute onError hook
|
|
352
|
+
await this.pluginManager.executeHook('onError', error);
|
|
353
|
+
// Record failed metrics
|
|
354
|
+
const responseTime = Date.now() - startTime;
|
|
355
|
+
this.metricsCollector.recordRequest(false, responseTime, 0, 0, error instanceof Error ? error.message : String(error));
|
|
356
|
+
// Ensure crawler cleanup on error
|
|
357
|
+
setTimeout(() => crawler.teardown().catch(err => logger_1.log.error('Error during crawler teardown:', err)), 100);
|
|
358
|
+
reject(error);
|
|
359
|
+
}
|
|
360
|
+
},
|
|
361
|
+
failedRequestHandler: async ({ request, error }) => {
|
|
362
|
+
logger_1.log.error(`Request failed for ${request.url}:`, error);
|
|
363
|
+
// Ensure crawler cleanup on failed request
|
|
364
|
+
setTimeout(() => crawler.teardown().catch(err => logger_1.log.error('Error during crawler teardown:', err)), 100);
|
|
365
|
+
reject(error);
|
|
366
|
+
}
|
|
367
|
+
});
|
|
368
|
+
crawler.run([normalizedUrl])
|
|
369
|
+
.then(() => {
|
|
370
|
+
// Cleanup crawler after completion
|
|
371
|
+
crawler.teardown().catch(err => logger_1.log.error('Error during crawler teardown:', err));
|
|
372
|
+
})
|
|
373
|
+
.catch((error) => {
|
|
374
|
+
// Cleanup crawler even on error
|
|
375
|
+
crawler.teardown().catch(err => logger_1.log.error('Error during crawler teardown:', err));
|
|
376
|
+
reject(error);
|
|
377
|
+
});
|
|
378
|
+
});
|
|
379
|
+
}
|
|
380
|
+
async saveToFile(data, outputPath) {
|
|
381
|
+
try {
|
|
382
|
+
const filename = `${data.platform}_${data.post_id || 'post'}.json`;
|
|
383
|
+
const filepath = outputPath ? (0, path_1.join)(outputPath, filename) : filename;
|
|
384
|
+
(0, fs_1.writeFileSync)(filepath, JSON.stringify(data, null, 2));
|
|
385
|
+
logger_1.log.info(`✓ Saved data to ${filepath}`);
|
|
386
|
+
}
|
|
387
|
+
catch (error) {
|
|
388
|
+
logger_1.log.error('Failed to save file:', error);
|
|
389
|
+
throw new Error(`Failed to save data to file: ${error}`);
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Set callback for step tracking
|
|
394
|
+
*/
|
|
395
|
+
setStepCallback(callback) {
|
|
396
|
+
this.stepCallback = callback;
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* Gets current metrics
|
|
400
|
+
*/
|
|
401
|
+
getMetrics() {
|
|
402
|
+
return this.metricsCollector.getMetrics();
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* Gets health status
|
|
406
|
+
*/
|
|
407
|
+
async getHealth() {
|
|
408
|
+
return await this.healthChecker.checkHealth();
|
|
409
|
+
}
|
|
410
|
+
/**
|
|
411
|
+
* Gets Prometheus-formatted metrics
|
|
412
|
+
*/
|
|
413
|
+
getPrometheusMetrics() {
|
|
414
|
+
return this.metricsCollector.getPrometheusMetrics();
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* Get plugin manager for advanced plugin operations
|
|
418
|
+
*/
|
|
419
|
+
getPluginManager() {
|
|
420
|
+
return this.pluginManager;
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Get auth manager for advanced auth operations
|
|
424
|
+
*/
|
|
425
|
+
getAuthManager() {
|
|
426
|
+
return this.authManager;
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* Get current configuration
|
|
430
|
+
*/
|
|
431
|
+
getConfig() {
|
|
432
|
+
return this.config;
|
|
433
|
+
}
|
|
434
|
+
/**
|
|
435
|
+
* Get config parser for advanced config operations
|
|
436
|
+
*/
|
|
437
|
+
getConfigParser() {
|
|
438
|
+
return this.configParser;
|
|
439
|
+
}
|
|
440
|
+
async refreshSession() {
|
|
441
|
+
try {
|
|
442
|
+
return await this.authManager.refreshSessionWithCrawler();
|
|
443
|
+
}
|
|
444
|
+
catch (error) {
|
|
445
|
+
logger_1.log.error('RefreshSession failed:', error);
|
|
446
|
+
throw error;
|
|
447
|
+
}
|
|
448
|
+
return this.authManager.isAuthenticated();
|
|
449
|
+
}
|
|
450
|
+
/**
|
|
451
|
+
* Get current logged-in username
|
|
452
|
+
*/
|
|
453
|
+
getUsername() {
|
|
454
|
+
return this.authManager.getUsername();
|
|
455
|
+
}
|
|
456
|
+
/**
|
|
457
|
+
* Get current logged-in user's display name (real name)
|
|
458
|
+
*/
|
|
459
|
+
getDisplayName() {
|
|
460
|
+
return this.authManager.getDisplayName();
|
|
461
|
+
}
|
|
462
|
+
/**
|
|
463
|
+
* Get current logged-in user info
|
|
464
|
+
*/
|
|
465
|
+
getUserInfo() {
|
|
466
|
+
return {
|
|
467
|
+
username: this.authManager.getUsername(),
|
|
468
|
+
displayName: this.authManager.getDisplayName()
|
|
469
|
+
};
|
|
470
|
+
}
|
|
471
|
+
/**
|
|
472
|
+
* Logout and clear session data
|
|
473
|
+
*/
|
|
474
|
+
async logout() {
|
|
475
|
+
await this.authManager.logout();
|
|
476
|
+
logger_1.log.info('🔐 Session cleared successfully');
|
|
477
|
+
}
|
|
478
|
+
/**
|
|
479
|
+
* Clear all cached data and reset SDK state
|
|
480
|
+
*/
|
|
481
|
+
async cleanup() {
|
|
482
|
+
await this.logout();
|
|
483
|
+
this.configParser.cleanup();
|
|
484
|
+
await this.crawlerManager.cleanup();
|
|
485
|
+
// Clear any other cached data if needed
|
|
486
|
+
logger_1.log.info('🧹 SDK cleanup completed');
|
|
487
|
+
}
|
|
488
|
+
/**
|
|
489
|
+
* Pauses execution for specified milliseconds
|
|
490
|
+
*/
|
|
491
|
+
sleep(ms) {
|
|
492
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
exports.MediaScraper = MediaScraper;
|
|
496
|
+
//# sourceMappingURL=media-scraper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-scraper.js","sourceRoot":"","sources":["../../src/core/media-scraper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Page } from 'puppeteer';
|
|
2
|
+
import { WorkflowTask } from '../types/workflow';
|
|
3
|
+
/**
|
|
4
|
+
* Executes predefined workflows for platform interaction automation
|
|
5
|
+
* @class WorkflowExecutor
|
|
6
|
+
*/
|
|
7
|
+
export declare class WorkflowExecutor {
|
|
8
|
+
/**
|
|
9
|
+
* Pauses execution for specified milliseconds
|
|
10
|
+
*/
|
|
11
|
+
private sleep;
|
|
12
|
+
/**
|
|
13
|
+
* Executes a workflow from JSON file or array
|
|
14
|
+
*/
|
|
15
|
+
executeWorkflow(page: Page, workflowOrPath: string | WorkflowTask[]): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=workflow-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-executor.d.ts","sourceRoot":"","sources":["../../src/core/workflow-executor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B;;OAEG;IACH,OAAO,CAAC,KAAK;IAIb;;OAEG;IACG,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CA+H1F"}
|