instasave-sdk 1.2.2 → 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.
Files changed (194) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +1 -1
  3. package/dist/{auth-fast.d.ts → auth/auth-manager.d.ts} +4 -12
  4. package/dist/auth/auth-manager.d.ts.map +1 -0
  5. package/dist/{auth-fast.js → auth/auth-manager.js} +26 -68
  6. package/dist/auth/auth-manager.js.map +1 -0
  7. package/dist/auth/index.d.ts +4 -0
  8. package/dist/auth/index.d.ts.map +1 -0
  9. package/dist/auth/index.js +8 -0
  10. package/dist/auth/index.js.map +1 -0
  11. package/dist/auth/session-manager.d.ts +8 -0
  12. package/dist/auth/session-manager.d.ts.map +1 -0
  13. package/dist/auth/session-manager.js +57 -0
  14. package/dist/auth/session-manager.js.map +1 -0
  15. package/dist/browser/browser-pool.d.ts.map +1 -0
  16. package/dist/{browser-pool.js → browser/browser-pool.js} +1 -1
  17. package/dist/browser/browser-pool.js.map +1 -0
  18. package/dist/browser/crawler-manager.d.ts.map +1 -0
  19. package/dist/{crawler-manager.js → browser/crawler-manager.js} +6 -6
  20. package/dist/browser/crawler-manager.js.map +1 -0
  21. package/dist/browser/index.d.ts +3 -0
  22. package/dist/browser/index.d.ts.map +1 -0
  23. package/dist/browser/index.js +8 -0
  24. package/dist/browser/index.js.map +1 -0
  25. package/dist/core/index.d.ts +3 -0
  26. package/dist/core/index.d.ts.map +1 -0
  27. package/dist/core/index.js +8 -0
  28. package/dist/core/index.js.map +1 -0
  29. package/dist/core/media-scraper.d.ts +107 -0
  30. package/dist/core/media-scraper.d.ts.map +1 -0
  31. package/dist/core/media-scraper.js +496 -0
  32. package/dist/core/media-scraper.js.map +1 -0
  33. package/dist/core/workflow-executor.d.ts +17 -0
  34. package/dist/core/workflow-executor.d.ts.map +1 -0
  35. package/dist/core/workflow-executor.js +146 -0
  36. package/dist/core/workflow-executor.js.map +1 -0
  37. package/dist/index.d.ts +13 -132
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +31 -635
  40. package/dist/index.js.map +1 -1
  41. package/dist/platforms/instagram/extractors/carousel.d.ts.map +1 -1
  42. package/dist/platforms/instagram/extractors/carousel.js +31 -6
  43. package/dist/platforms/instagram/extractors/carousel.js.map +1 -1
  44. package/dist/platforms/instagram/index.d.ts +1 -1
  45. package/dist/platforms/instagram/index.d.ts.map +1 -1
  46. package/dist/platforms/instagram/index.js +2 -2
  47. package/dist/platforms/instagram/index.js.map +1 -1
  48. package/dist/plugins/index.d.ts +4 -0
  49. package/dist/plugins/index.d.ts.map +1 -0
  50. package/dist/plugins/index.js +21 -0
  51. package/dist/plugins/index.js.map +1 -0
  52. package/dist/plugins/plugin-manager.d.ts +50 -0
  53. package/dist/plugins/plugin-manager.d.ts.map +1 -0
  54. package/dist/{plugins.js → plugins/plugin-manager.js} +2 -2
  55. package/dist/plugins/plugin-manager.js.map +1 -0
  56. package/dist/types/auth.d.ts +15 -0
  57. package/dist/types/auth.d.ts.map +1 -0
  58. package/dist/types/auth.js +3 -0
  59. package/dist/types/auth.js.map +1 -0
  60. package/dist/types/browser.d.ts +28 -0
  61. package/dist/types/browser.d.ts.map +1 -0
  62. package/dist/types/browser.js +3 -0
  63. package/dist/types/browser.js.map +1 -0
  64. package/dist/{types.d.ts → types/common.d.ts} +15 -15
  65. package/dist/types/common.d.ts.map +1 -0
  66. package/dist/{types.js → types/common.js} +1 -1
  67. package/dist/types/common.js.map +1 -0
  68. package/dist/types/index.d.ts +7 -0
  69. package/dist/types/index.d.ts.map +1 -0
  70. package/dist/types/index.js +24 -0
  71. package/dist/types/index.js.map +1 -0
  72. package/dist/types/platform.d.ts +3 -0
  73. package/dist/types/platform.d.ts.map +1 -0
  74. package/dist/types/platform.js +20 -0
  75. package/dist/types/platform.js.map +1 -0
  76. package/dist/types/plugins.d.ts +61 -0
  77. package/dist/types/plugins.d.ts.map +1 -0
  78. package/dist/types/plugins.js +3 -0
  79. package/dist/types/plugins.js.map +1 -0
  80. package/dist/types/workflow.d.ts +17 -0
  81. package/dist/types/workflow.d.ts.map +1 -0
  82. package/dist/types/workflow.js +3 -0
  83. package/dist/types/workflow.js.map +1 -0
  84. package/dist/utils/config/config-parser.d.ts.map +1 -0
  85. package/dist/{config-parser.js → utils/config/config-parser.js} +4 -5
  86. package/dist/utils/config/config-parser.js.map +1 -0
  87. package/dist/utils/config/index.d.ts +2 -0
  88. package/dist/utils/config/index.d.ts.map +1 -0
  89. package/dist/utils/config/index.js +18 -0
  90. package/dist/utils/config/index.js.map +1 -0
  91. package/dist/{file-manager.d.ts → utils/file-manager.d.ts} +1 -1
  92. package/dist/utils/file-manager.d.ts.map +1 -0
  93. package/dist/utils/file-manager.js.map +1 -0
  94. package/dist/{health.d.ts → utils/health/health-checker.d.ts} +1 -1
  95. package/dist/utils/health/health-checker.d.ts.map +1 -0
  96. package/dist/{health.js → utils/health/health-checker.js} +1 -1
  97. package/dist/utils/health/health-checker.js.map +1 -0
  98. package/dist/utils/health/index.d.ts +2 -0
  99. package/dist/utils/health/index.d.ts.map +1 -0
  100. package/dist/utils/health/index.js +18 -0
  101. package/dist/utils/health/index.js.map +1 -0
  102. package/dist/utils/index.d.ts +8 -0
  103. package/dist/utils/index.d.ts.map +1 -0
  104. package/dist/utils/index.js +25 -0
  105. package/dist/utils/index.js.map +1 -0
  106. package/dist/utils/logger/index.d.ts +2 -0
  107. package/dist/utils/logger/index.d.ts.map +1 -0
  108. package/dist/utils/logger/index.js +18 -0
  109. package/dist/utils/logger/index.js.map +1 -0
  110. package/dist/utils/logger/logger.d.ts +44 -0
  111. package/dist/utils/logger/logger.d.ts.map +1 -0
  112. package/dist/utils/logger/logger.js +301 -0
  113. package/dist/utils/logger/logger.js.map +1 -0
  114. package/dist/utils/metrics/index.d.ts +2 -0
  115. package/dist/utils/metrics/index.d.ts.map +1 -0
  116. package/dist/utils/metrics/index.js +18 -0
  117. package/dist/utils/metrics/index.js.map +1 -0
  118. package/dist/{metrics.d.ts → utils/metrics/metrics-collector.d.ts} +1 -1
  119. package/dist/utils/metrics/metrics-collector.d.ts.map +1 -0
  120. package/dist/{metrics.js → utils/metrics/metrics-collector.js} +1 -1
  121. package/dist/utils/metrics/metrics-collector.js.map +1 -0
  122. package/dist/utils/progress-tracker.d.ts +11 -0
  123. package/dist/utils/progress-tracker.d.ts.map +1 -0
  124. package/dist/{progress-tracker.js → utils/progress-tracker.js} +0 -3
  125. package/dist/utils/progress-tracker.js.map +1 -0
  126. package/dist/utils/url-normalizer.d.ts.map +1 -0
  127. package/dist/utils/url-normalizer.js.map +1 -0
  128. package/package.json +1 -1
  129. package/dist/auth-fast.d.ts.map +0 -1
  130. package/dist/auth-fast.js.map +0 -1
  131. package/dist/auth.d.ts +0 -80
  132. package/dist/auth.d.ts.map +0 -1
  133. package/dist/auth.js +0 -370
  134. package/dist/auth.js.map +0 -1
  135. package/dist/benchmark.d.ts +0 -48
  136. package/dist/benchmark.d.ts.map +0 -1
  137. package/dist/benchmark.js +0 -125
  138. package/dist/benchmark.js.map +0 -1
  139. package/dist/browser-pool.d.ts.map +0 -1
  140. package/dist/browser-pool.js.map +0 -1
  141. package/dist/config-parser.d.ts.map +0 -1
  142. package/dist/config-parser.js.map +0 -1
  143. package/dist/crawler-manager.d.ts.map +0 -1
  144. package/dist/crawler-manager.js.map +0 -1
  145. package/dist/file-manager.d.ts.map +0 -1
  146. package/dist/file-manager.js.map +0 -1
  147. package/dist/health.d.ts.map +0 -1
  148. package/dist/health.js.map +0 -1
  149. package/dist/logger.d.ts +0 -22
  150. package/dist/logger.d.ts.map +0 -1
  151. package/dist/logger.js +0 -151
  152. package/dist/logger.js.map +0 -1
  153. package/dist/memory.d.ts +0 -56
  154. package/dist/memory.d.ts.map +0 -1
  155. package/dist/memory.js +0 -144
  156. package/dist/memory.js.map +0 -1
  157. package/dist/metrics.d.ts.map +0 -1
  158. package/dist/metrics.js.map +0 -1
  159. package/dist/parallel.d.ts +0 -59
  160. package/dist/parallel.d.ts.map +0 -1
  161. package/dist/parallel.js +0 -202
  162. package/dist/parallel.js.map +0 -1
  163. package/dist/platforms/instagram.d.ts +0 -6
  164. package/dist/platforms/instagram.d.ts.map +0 -1
  165. package/dist/platforms/instagram.js +0 -263
  166. package/dist/platforms/instagram.js.map +0 -1
  167. package/dist/plugins.d.ts +0 -132
  168. package/dist/plugins.d.ts.map +0 -1
  169. package/dist/plugins.js.map +0 -1
  170. package/dist/progress-tracker.d.ts +0 -15
  171. package/dist/progress-tracker.d.ts.map +0 -1
  172. package/dist/progress-tracker.js.map +0 -1
  173. package/dist/smart-logger.d.ts +0 -64
  174. package/dist/smart-logger.d.ts.map +0 -1
  175. package/dist/smart-logger.js +0 -150
  176. package/dist/smart-logger.js.map +0 -1
  177. package/dist/test-integration.d.ts +0 -2
  178. package/dist/test-integration.d.ts.map +0 -1
  179. package/dist/test-integration.js +0 -46
  180. package/dist/test-integration.js.map +0 -1
  181. package/dist/types.d.ts.map +0 -1
  182. package/dist/types.js.map +0 -1
  183. package/dist/url-normalizer.d.ts.map +0 -1
  184. package/dist/url-normalizer.js.map +0 -1
  185. package/dist/worker.d.ts +0 -2
  186. package/dist/worker.d.ts.map +0 -1
  187. package/dist/worker.js +0 -23
  188. package/dist/worker.js.map +0 -1
  189. /package/dist/{browser-pool.d.ts → browser/browser-pool.d.ts} +0 -0
  190. /package/dist/{crawler-manager.d.ts → browser/crawler-manager.d.ts} +0 -0
  191. /package/dist/{config-parser.d.ts → utils/config/config-parser.d.ts} +0 -0
  192. /package/dist/{file-manager.js → utils/file-manager.js} +0 -0
  193. /package/dist/{url-normalizer.d.ts → utils/url-normalizer.d.ts} +0 -0
  194. /package/dist/{url-normalizer.js → utils/url-normalizer.js} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CASb;IAEF,OAAO,CAAC,aAAa,CAAgB;IAErC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,GAAE,MAAU,EAAE,QAAQ,GAAE,MAAU,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAuBzH,UAAU,IAAI,eAAe;IAI7B,oBAAoB,IAAI,MAAM;IAwB9B,KAAK,IAAI,IAAI;CAad"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":";;;AAYA,MAAa,gBAAgB;IAA7B;QACU,YAAO,GAAoB;YACjC,aAAa,EAAE,CAAC;YAChB,kBAAkB,EAAE,CAAC;YACrB,cAAc,EAAE,CAAC;YACjB,mBAAmB,EAAE,CAAC;YACtB,oBAAoB,EAAE,CAAC;YACvB,aAAa,EAAE,CAAC;YAChB,YAAY,EAAE,EAAE;YAChB,cAAc,EAAE,EAAE;SACnB,CAAC;QAEM,kBAAa,GAAa,EAAE,CAAC;IAkEvC,CAAC;IAhEC,aAAa,CAAC,OAAgB,EAAE,YAAoB,EAAE,aAAqB,CAAC,EAAE,WAAmB,CAAC,EAAE,KAAc;QAChH,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEtC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,CAAC,oBAAoB,IAAI,UAAU,CAAC;YAChD,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,QAAQ,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;YAC9B,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;QAED,+BAA+B;QAC/B,IAAI,CAAC,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QAE7G,yBAAyB;QACzB,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACnF,CAAC;IAED,UAAU;QACR,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,oBAAoB;QAClB,OAAO;;;2BAGgB,IAAI,CAAC,OAAO,CAAC,aAAa;;;;sCAIf,IAAI,CAAC,OAAO,CAAC,kBAAkB;;;;kCAInC,IAAI,CAAC,OAAO,CAAC,cAAc;;;;8BAI/B,IAAI,CAAC,OAAO,CAAC,mBAAmB;;;;mCAI3B,IAAI,CAAC,OAAO,CAAC,oBAAoB;CACnE,CAAC,IAAI,EAAE,CAAC;IACP,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,GAAG;YACb,aAAa,EAAE,CAAC;YAChB,kBAAkB,EAAE,CAAC;YACrB,cAAc,EAAE,CAAC;YACjB,mBAAmB,EAAE,CAAC;YACtB,oBAAoB,EAAE,CAAC;YACvB,aAAa,EAAE,CAAC;YAChB,YAAY,EAAE,EAAE;YAChB,cAAc,EAAE,EAAE;SACnB,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;IAC1B,CAAC;CACF;AA9ED,4CA8EC"}
@@ -1,59 +0,0 @@
1
- import { InstagramPostData, ScrapingOptions } from './index';
2
- /**
3
- * Parallel processing manager for Instagram scraping
4
- * @class ParallelProcessor
5
- */
6
- export declare class ParallelProcessor {
7
- private workerPool;
8
- private tasks;
9
- private maxWorkers;
10
- /**
11
- * Creates a new ParallelProcessor
12
- * @param maxWorkers - Maximum number of worker threads (default: 4)
13
- */
14
- constructor(maxWorkers?: number);
15
- /**
16
- * Initializes the worker thread pool
17
- */
18
- private initializeWorkerPool;
19
- /**
20
- * Handles messages from worker threads
21
- */
22
- private handleWorkerMessage;
23
- /**
24
- * Handles worker errors
25
- */
26
- private handleWorkerError;
27
- /**
28
- * Scrapes multiple Instagram posts in parallel
29
- * @param urls - Array of Instagram post URLs
30
- * @param options - Scraping options
31
- * @returns Promise<InstagramPostData[]>
32
- */
33
- scrapeMultiple(urls: string[], options?: ScrapingOptions): Promise<InstagramPostData[]>;
34
- /**
35
- * Executes tasks using available workers
36
- */
37
- private executeTasks;
38
- /**
39
- * Gets processing statistics
40
- */
41
- getStats(): {
42
- totalTasks: number;
43
- completed: number;
44
- failed: number;
45
- running: number;
46
- pending: number;
47
- availableWorkers: number;
48
- busyWorkers: number;
49
- };
50
- /**
51
- * Generates unique task ID
52
- */
53
- private generateTaskId;
54
- /**
55
- * Shuts down all workers
56
- */
57
- shutdown(): Promise<void>;
58
- }
59
- //# sourceMappingURL=parallel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parallel.d.ts","sourceRoot":"","sources":["../src/parallel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAqB7D;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,KAAK,CAAwC;IACrD,OAAO,CAAC,UAAU,CAAS;IAE3B;;;OAGG;gBACS,UAAU,GAAE,MAAU;IAUlC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAiBzB;;;;;OAKG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAgCjG;;OAEG;YACW,YAAY;IA2D1B;;OAEG;IACH,QAAQ;;;;;;;;;IAkBR;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAMhC"}
package/dist/parallel.js DELETED
@@ -1,202 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ParallelProcessor = void 0;
4
- const logger_1 = require("./logger");
5
- const worker_threads_1 = require("worker_threads");
6
- const path_1 = require("path");
7
- /**
8
- * Parallel processing manager for Instagram scraping
9
- * @class ParallelProcessor
10
- */
11
- class ParallelProcessor {
12
- /**
13
- * Creates a new ParallelProcessor
14
- * @param maxWorkers - Maximum number of worker threads (default: 4)
15
- */
16
- constructor(maxWorkers = 4) {
17
- this.tasks = new Map();
18
- this.maxWorkers = maxWorkers;
19
- this.workerPool = {
20
- workers: [],
21
- availableWorkers: [],
22
- busyWorkers: new Set()
23
- };
24
- this.initializeWorkerPool();
25
- }
26
- /**
27
- * Initializes the worker thread pool
28
- */
29
- initializeWorkerPool() {
30
- for (let i = 0; i < this.maxWorkers; i++) {
31
- const worker = new worker_threads_1.Worker((0, path_1.join)(__dirname, 'worker.js'));
32
- this.workerPool.workers.push(worker);
33
- this.workerPool.availableWorkers.push(i);
34
- worker.on('message', (message) => {
35
- this.handleWorkerMessage(i, message);
36
- });
37
- worker.on('error', (error) => {
38
- logger_1.log.error(`Worker ${i} error:`, error);
39
- this.handleWorkerError(i, error);
40
- });
41
- }
42
- }
43
- /**
44
- * Handles messages from worker threads
45
- */
46
- handleWorkerMessage(workerId, message) {
47
- const { taskId, type, data, error } = message;
48
- const task = this.tasks.get(taskId);
49
- if (!task)
50
- return;
51
- switch (type) {
52
- case 'success':
53
- task.status = 'completed';
54
- task.result = data;
55
- task.endTime = Date.now();
56
- break;
57
- case 'error':
58
- task.status = 'failed';
59
- task.error = error;
60
- task.endTime = Date.now();
61
- break;
62
- }
63
- // Mark worker as available
64
- this.workerPool.busyWorkers.delete(workerId);
65
- this.workerPool.availableWorkers.push(workerId);
66
- }
67
- /**
68
- * Handles worker errors
69
- */
70
- handleWorkerError(workerId, error) {
71
- logger_1.log.error(`Worker ${workerId} encountered an error:`, error);
72
- // Find tasks assigned to this worker and mark them as failed
73
- for (const [taskId, task] of this.tasks.entries()) {
74
- if (task.status === 'running') {
75
- task.status = 'failed';
76
- task.error = `Worker error: ${error.message}`;
77
- task.endTime = Date.now();
78
- }
79
- }
80
- // Mark worker as available again
81
- this.workerPool.busyWorkers.delete(workerId);
82
- this.workerPool.availableWorkers.push(workerId);
83
- }
84
- /**
85
- * Scrapes multiple Instagram posts in parallel
86
- * @param urls - Array of Instagram post URLs
87
- * @param options - Scraping options
88
- * @returns Promise<InstagramPostData[]>
89
- */
90
- async scrapeMultiple(urls, options = {}) {
91
- const taskIds = [];
92
- // Create tasks
93
- for (const url of urls) {
94
- const taskId = this.generateTaskId();
95
- const task = {
96
- id: taskId,
97
- url,
98
- options,
99
- status: 'pending'
100
- };
101
- this.tasks.set(taskId, task);
102
- taskIds.push(taskId);
103
- }
104
- // Execute tasks
105
- await this.executeTasks(taskIds);
106
- // Collect results
107
- const results = [];
108
- for (const taskId of taskIds) {
109
- const task = this.tasks.get(taskId);
110
- if (task?.result) {
111
- results.push(task.result);
112
- }
113
- }
114
- return results;
115
- }
116
- /**
117
- * Executes tasks using available workers
118
- */
119
- async executeTasks(taskIds) {
120
- return new Promise((resolve) => {
121
- let completedTasks = 0;
122
- const totalTasks = taskIds.length;
123
- const checkCompletion = () => {
124
- if (completedTasks >= totalTasks) {
125
- resolve();
126
- }
127
- };
128
- const assignTask = () => {
129
- if (this.workerPool.availableWorkers.length === 0)
130
- return;
131
- const pendingTaskId = taskIds.find(id => {
132
- const task = this.tasks.get(id);
133
- return task?.status === 'pending';
134
- });
135
- if (!pendingTaskId)
136
- return;
137
- const workerId = this.workerPool.availableWorkers.pop();
138
- const task = this.tasks.get(pendingTaskId);
139
- task.status = 'running';
140
- task.startTime = Date.now();
141
- this.workerPool.busyWorkers.add(workerId);
142
- // Send task to worker
143
- this.workerPool.workers[workerId].postMessage({
144
- taskId: pendingTaskId,
145
- url: task.url,
146
- options: task.options
147
- });
148
- };
149
- // Monitor task completion
150
- const monitor = setInterval(() => {
151
- completedTasks = taskIds.filter(id => {
152
- const task = this.tasks.get(id);
153
- return task?.status === 'completed' || task?.status === 'failed';
154
- }).length;
155
- // Assign new tasks to available workers
156
- assignTask();
157
- if (completedTasks >= totalTasks) {
158
- clearInterval(monitor);
159
- resolve();
160
- }
161
- }, 100);
162
- // Start initial task assignment
163
- for (let i = 0; i < Math.min(this.maxWorkers, taskIds.length); i++) {
164
- assignTask();
165
- }
166
- });
167
- }
168
- /**
169
- * Gets processing statistics
170
- */
171
- getStats() {
172
- const tasks = Array.from(this.tasks.values());
173
- const completed = tasks.filter(t => t.status === 'completed').length;
174
- const failed = tasks.filter(t => t.status === 'failed').length;
175
- const running = tasks.filter(t => t.status === 'running').length;
176
- const pending = tasks.filter(t => t.status === 'pending').length;
177
- return {
178
- totalTasks: tasks.length,
179
- completed,
180
- failed,
181
- running,
182
- pending,
183
- availableWorkers: this.workerPool.availableWorkers.length,
184
- busyWorkers: this.workerPool.busyWorkers.size
185
- };
186
- }
187
- /**
188
- * Generates unique task ID
189
- */
190
- generateTaskId() {
191
- return `task_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
192
- }
193
- /**
194
- * Shuts down all workers
195
- */
196
- async shutdown() {
197
- await Promise.all(this.workerPool.workers.map(worker => worker.terminate()));
198
- logger_1.log.info('🛑 All workers terminated');
199
- }
200
- }
201
- exports.ParallelProcessor = ParallelProcessor;
202
- //# sourceMappingURL=parallel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parallel.js","sourceRoot":"","sources":["../src/parallel.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import { PlatformPlugin } from '../plugins';
2
- /**
3
- * Instagram platform plugin - built-in support for Instagram
4
- */
5
- export declare const InstagramPlugin: PlatformPlugin;
6
- //# sourceMappingURL=instagram.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"instagram.d.ts","sourceRoot":"","sources":["../../src/platforms/instagram.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAgB,MAAM,YAAY,CAAC;AAG1D;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,cAqD7B,CAAC"}
@@ -1,263 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.InstagramPlugin = void 0;
4
- const logger_1 = require("../logger");
5
- /**
6
- * Instagram platform plugin - built-in support for Instagram
7
- */
8
- exports.InstagramPlugin = {
9
- type: 'platform',
10
- name: 'instagram',
11
- version: '1.0.0',
12
- urlPatterns: [
13
- /instagram\.com\/p\//,
14
- /instagram\.com\/[^\/]+\/p\//,
15
- /instagram\.com\/reel\//,
16
- ],
17
- validateUrl(url) {
18
- return this.urlPatterns.some(pattern => pattern.test(url));
19
- },
20
- async scrape(page, url) {
21
- // Extract post ID from URL
22
- const urlPath = new URL(url).pathname;
23
- const postId = urlPath.match(/\/(p|reel)\/([^\/]+)/)?.[2] || '';
24
- logger_1.log.info('🔍 Target post ID from URL:', postId);
25
- // Wait for page to fully load
26
- await page.waitForTimeout(3000);
27
- // Extract profile information
28
- const profileInfo = await extractProfileInfo(page);
29
- logger_1.log.info('👤 Profile info:', profileInfo);
30
- // Extract media data
31
- const carouselData = await extractCarouselData(page);
32
- logger_1.log.info(`Found ${carouselData.count} media items`);
33
- // Extract metadata
34
- const metadata = await extractMetadata(page);
35
- const mediaData = {
36
- url,
37
- post_id: postId,
38
- platform: 'instagram',
39
- profile_name: profileInfo.profileName,
40
- profile_username: profileInfo.profileUsername,
41
- profile_url: profileInfo.profileUrl,
42
- media: carouselData.items,
43
- metadata
44
- };
45
- return mediaData;
46
- },
47
- workflow: './workflows/instagram.wf'
48
- };
49
- /**
50
- * Extract profile information from Instagram page
51
- */
52
- async function extractProfileInfo(page) {
53
- return await page.evaluate(() => {
54
- let profileUrl = '';
55
- let profileName = '';
56
- let profileUsername = '';
57
- // Method 1: Extract from twitter:title meta tag
58
- const twitterTitle = document.querySelector('meta[name="twitter:title"]');
59
- if (twitterTitle?.content) {
60
- const content = twitterTitle.content;
61
- // Format 1: "Display Name (@username) • Instagram photos and videos"
62
- const match1 = content.match(/^(.+?)\s+\((@[^)]+)\)/);
63
- // Format 2: "@username • Instagram photos and videos"
64
- const match2 = content.match(/^(@[a-zA-Z0-9._]+)/);
65
- if (match1) {
66
- profileName = match1[1].trim();
67
- profileUsername = match1[2].replace('@', '');
68
- profileUrl = `https://www.instagram.com/${profileUsername}/`;
69
- }
70
- else if (match2) {
71
- profileUsername = match2[1].replace('@', '');
72
- profileName = match2[1];
73
- profileUrl = `https://www.instagram.com/${profileUsername}/`;
74
- }
75
- }
76
- // Method 2: Fallback to og:title
77
- if (!profileName) {
78
- const ogTitle = document.querySelector('meta[property="og:title"]');
79
- if (ogTitle?.content) {
80
- const match = ogTitle.content.match(/^(.+?)\s+on Instagram/);
81
- if (match)
82
- profileName = match[1];
83
- }
84
- }
85
- // Method 3: Extract from profile links
86
- if (!profileUsername) {
87
- const links = document.querySelectorAll('a[href*="/"]');
88
- for (const link of links) {
89
- const href = link.getAttribute('href');
90
- if (href?.match(/^\/[a-zA-Z0-9._]+\/$/) &&
91
- !href.includes('explore') && !href.includes('reels') &&
92
- !href.includes('direct') && !href.includes('accounts')) {
93
- profileUsername = href.replace(/\//g, '');
94
- profileUrl = `https://www.instagram.com/${profileUsername}/`;
95
- if (!profileName)
96
- profileName = `@${profileUsername}`;
97
- break;
98
- }
99
- }
100
- }
101
- // Method 4: Extract from URL path
102
- if (!profileUsername) {
103
- const pathSegments = window.location.pathname.split('/').filter(Boolean);
104
- if (pathSegments.length >= 3 && pathSegments[0] !== 'p' && pathSegments[0] !== 'reel') {
105
- profileUsername = pathSegments[0];
106
- profileUrl = `https://www.instagram.com/${profileUsername}/`;
107
- if (!profileName)
108
- profileName = `@${profileUsername}`;
109
- }
110
- }
111
- return { profileName, profileUsername, profileUrl };
112
- });
113
- }
114
- /**
115
- * Extract carousel media data from Instagram page
116
- */
117
- async function extractCarouselData(page) {
118
- return await page.evaluate(() => {
119
- const scripts = document.querySelectorAll('script[type="application/json"]');
120
- for (const script of scripts) {
121
- try {
122
- const text = script.textContent;
123
- if (!text?.includes('carousel_media'))
124
- continue;
125
- const json = JSON.parse(text);
126
- // Recursively search for carousel_media
127
- function findCarouselMedia(obj) {
128
- if (!obj || typeof obj !== 'object')
129
- return null;
130
- if (obj.carousel_media && Array.isArray(obj.carousel_media)) {
131
- return obj.carousel_media;
132
- }
133
- for (const key in obj) {
134
- const result = findCarouselMedia(obj[key]);
135
- if (result)
136
- return result;
137
- }
138
- return null;
139
- }
140
- const carouselMedia = findCarouselMedia(json);
141
- if (carouselMedia) {
142
- const items = carouselMedia.map((item, index) => ({
143
- index,
144
- url: item.image_versions2?.candidates?.[0]?.url || '',
145
- width: item.original_width,
146
- height: item.original_height,
147
- })).filter((item) => item.url);
148
- return { items, count: items.length };
149
- }
150
- }
151
- catch (e) {
152
- // Continue to next script
153
- }
154
- }
155
- return { items: [], count: 0 };
156
- });
157
- }
158
- /**
159
- * Extract extended metadata from Instagram page
160
- */
161
- async function extractMetadata(page) {
162
- return await page.evaluate(() => {
163
- const result = {
164
- likesCount: null,
165
- commentsCount: null,
166
- caption: null,
167
- timestamp: null,
168
- location: null
169
- };
170
- // Find timestamp in elements containing "ago"
171
- const allElements = document.querySelectorAll('*');
172
- for (const element of allElements) {
173
- const text = element.textContent?.trim();
174
- if (text?.match(/\d+\s+(hour|minute|day|week|month)s?\s+ago/i)) {
175
- result.timestamp = text.match(/\d+\s+(hour|minute|day|week|month)s?\s+ago/i)?.[0] || null;
176
- break;
177
- }
178
- }
179
- // Extract metadata from JSON scripts
180
- const scripts = document.querySelectorAll('script[type="application/json"]');
181
- for (const script of scripts) {
182
- try {
183
- const text = script.textContent;
184
- if (!text)
185
- continue;
186
- const json = JSON.parse(text);
187
- // Recursively search for post data
188
- function extractFromObject(obj) {
189
- if (!obj || typeof obj !== 'object')
190
- return;
191
- // Caption extraction
192
- if (obj.edge_media_to_caption?.edges?.[0]?.node?.text) {
193
- result.caption = obj.edge_media_to_caption.edges[0].node.text;
194
- }
195
- else if (obj.caption?.text) {
196
- result.caption = obj.caption.text;
197
- }
198
- else if (obj.accessibility_caption) {
199
- result.caption = obj.accessibility_caption;
200
- }
201
- // Like count extraction
202
- if (obj.edge_media_preview_like?.count !== undefined) {
203
- result.likesCount = obj.edge_media_preview_like.count;
204
- }
205
- else if (obj.like_count !== undefined) {
206
- result.likesCount = obj.like_count;
207
- }
208
- else if (obj.edge_liked_by?.count !== undefined) {
209
- result.likesCount = obj.edge_liked_by.count;
210
- }
211
- // Comment count extraction
212
- if (obj.edge_media_to_comment?.count !== undefined) {
213
- result.commentsCount = obj.edge_media_to_comment.count;
214
- }
215
- else if (obj.comment_count !== undefined) {
216
- result.commentsCount = obj.comment_count;
217
- }
218
- else if (obj.edge_media_to_parent_comment?.count !== undefined) {
219
- result.commentsCount = obj.edge_media_to_parent_comment.count;
220
- }
221
- // Timestamp fallback
222
- if (!result.timestamp && obj.taken_at_timestamp) {
223
- const date = new Date(obj.taken_at_timestamp * 1000);
224
- const now = new Date();
225
- const diffMs = now.getTime() - date.getTime();
226
- const diffHours = Math.floor(diffMs / (1000 * 60 * 60));
227
- const diffDays = Math.floor(diffHours / 24);
228
- if (diffDays > 0) {
229
- result.timestamp = `${diffDays} day${diffDays > 1 ? 's' : ''} ago`;
230
- }
231
- else if (diffHours > 0) {
232
- result.timestamp = `${diffHours} hour${diffHours > 1 ? 's' : ''} ago`;
233
- }
234
- else {
235
- const diffMins = Math.floor(diffMs / (1000 * 60));
236
- result.timestamp = `${diffMins} minute${diffMins > 1 ? 's' : ''} ago`;
237
- }
238
- }
239
- // Location extraction
240
- if (obj.location?.name) {
241
- result.location = obj.location.name;
242
- }
243
- else if (obj.venue?.name) {
244
- result.location = obj.venue.name;
245
- }
246
- else if (obj.place?.name) {
247
- result.location = obj.place.name;
248
- }
249
- // Recurse through object
250
- for (const key in obj) {
251
- extractFromObject(obj[key]);
252
- }
253
- }
254
- extractFromObject(json);
255
- }
256
- catch (e) {
257
- // Continue to next script
258
- }
259
- }
260
- return result;
261
- });
262
- }
263
- //# sourceMappingURL=instagram.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"instagram.js","sourceRoot":"","sources":["../../src/platforms/instagram.ts"],"names":[],"mappings":"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"}