instasave-sdk 1.0.8 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # InstaSave SDK
2
2
 
3
- [![Version](https://img.shields.io/badge/version-1.0.8-blue.svg)](https://github.com/nykadamec/instasave-sdk/releases/tag/v1.0.8)
3
+ [![Version](https://img.shields.io/badge/version-1.0.9-blue.svg)](https://github.com/nykadamec/instasave-sdk/releases/tag/v1.0.9)
4
4
  [![Changelog](https://img.shields.io/badge/changelog-latest-green.svg)](https://github.com/nykadamec/instasave-sdk/blob/main/CHANGELOG.md)
5
5
 
6
6
  📸 Simple Instagram scraper for downloading images from posts
@@ -0,0 +1,26 @@
1
+ /**
2
+ * URL normalization for consistent Instagram post URLs
3
+ */
4
+ export declare class URLNormalizer {
5
+ /**
6
+ * Normalize Instagram URL to consistent format
7
+ */
8
+ static normalizeInstagramUrl(url: string): string;
9
+ /**
10
+ * Extract post ID from URL object
11
+ */
12
+ private static extractPostId;
13
+ /**
14
+ * Check if URL is Instagram post URL
15
+ */
16
+ static isInstagramPostUrl(url: string): boolean;
17
+ /**
18
+ * Get post ID from URL
19
+ */
20
+ static getPostId(url: string): string;
21
+ /**
22
+ * Normalize multiple URLs
23
+ */
24
+ static normalizeUrls(urls: string[]): string[];
25
+ }
26
+ //# sourceMappingURL=url-normalizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-normalizer.d.ts","sourceRoot":"","sources":["../src/url-normalizer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qBAAa,aAAa;IACxB;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAmBjD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAwB5B;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAU/C;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAerC;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;CAG/C"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ /**
3
+ * URL normalization for consistent Instagram post URLs
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.URLNormalizer = void 0;
7
+ class URLNormalizer {
8
+ /**
9
+ * Normalize Instagram URL to consistent format
10
+ */
11
+ static normalizeInstagramUrl(url) {
12
+ try {
13
+ const urlObj = new URL(url);
14
+ // Extract post ID from various URL formats
15
+ const postId = this.extractPostId(urlObj);
16
+ if (!postId) {
17
+ throw new Error('Invalid Instagram post URL - no post ID found');
18
+ }
19
+ // Return normalized format
20
+ return `https://www.instagram.com/p/${postId}/`;
21
+ }
22
+ catch (error) {
23
+ throw new Error(`Failed to normalize URL: ${url} - ${error}`);
24
+ }
25
+ }
26
+ /**
27
+ * Extract post ID from URL object
28
+ */
29
+ static extractPostId(urlObj) {
30
+ const pathname = urlObj.pathname;
31
+ // Pattern 1: /p/POST_ID/
32
+ const directMatch = pathname.match(/\/p\/([^\/]+)/);
33
+ if (directMatch) {
34
+ return directMatch[1];
35
+ }
36
+ // Pattern 2: /username/p/POST_ID/
37
+ const userMatch = pathname.match(/\/[^\/]+\/p\/([^\/]+)/);
38
+ if (userMatch) {
39
+ return userMatch[1];
40
+ }
41
+ // Pattern 3: /reel/POST_ID/
42
+ const reelMatch = pathname.match(/\/reel\/([^\/]+)/);
43
+ if (reelMatch) {
44
+ return reelMatch[1];
45
+ }
46
+ return null;
47
+ }
48
+ /**
49
+ * Check if URL is Instagram post URL
50
+ */
51
+ static isInstagramPostUrl(url) {
52
+ try {
53
+ const urlObj = new URL(url);
54
+ return urlObj.hostname.includes('instagram.com') &&
55
+ this.extractPostId(urlObj) !== null;
56
+ }
57
+ catch {
58
+ return false;
59
+ }
60
+ }
61
+ /**
62
+ * Get post ID from URL
63
+ */
64
+ static getPostId(url) {
65
+ try {
66
+ const urlObj = new URL(url);
67
+ const postId = this.extractPostId(urlObj);
68
+ if (!postId) {
69
+ throw new Error('No post ID found in URL');
70
+ }
71
+ return postId;
72
+ }
73
+ catch (error) {
74
+ throw new Error(`Failed to extract post ID from: ${url} - ${error}`);
75
+ }
76
+ }
77
+ /**
78
+ * Normalize multiple URLs
79
+ */
80
+ static normalizeUrls(urls) {
81
+ return urls.map(url => this.normalizeInstagramUrl(url));
82
+ }
83
+ }
84
+ exports.URLNormalizer = URLNormalizer;
85
+ //# sourceMappingURL=url-normalizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-normalizer.js","sourceRoot":"","sources":["../src/url-normalizer.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,MAAa,aAAa;IACxB;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,GAAW;QACtC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;YAE5B,2CAA2C;YAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAE1C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;YACnE,CAAC;YAED,2BAA2B;YAC3B,OAAO,+BAA+B,MAAM,GAAG,CAAC;QAElD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,aAAa,CAAC,MAAW;QACtC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAEjC,yBAAyB;QACzB,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACpD,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;QAED,kCAAkC;QAClC,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC1D,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;QAED,4BAA4B;QAC5B,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACrD,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,GAAW;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC;gBACzC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,GAAW;QAC1B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAE1C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC7C,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,IAAc;QACjC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;CACF;AAvFD,sCAuFC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "instasave-sdk",
3
- "version": "1.0.8",
3
+ "version": "1.0.9",
4
4
  "description": "Instagram image scraper SDK with authentication support",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",