UNPKG

instagram-scraper-api

Version:

Get user data and posts by scraping Instagram's user page. Without API key or oAuth!

63 lines (62 loc) 2.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.transformData = exports.getUserData = exports.scrapeUser = void 0; const vars_1 = require("../vars"); const scrapeUser = (html) => { let json = null; try { const dataString = html.match(vars_1.userDataRegex)[1]; json = JSON.parse(dataString); } catch (e) { throw new Error('instagram-scraper-api: Scraping error'); } return json; }; exports.scrapeUser = scrapeUser; const getUserData = (data) => { var _a, _b, _c; const userData = (_c = (_b = (_a = data === null || data === void 0 ? void 0 : data.entry_data) === null || _a === void 0 ? void 0 : _a.ProfilePage[0]) === null || _b === void 0 ? void 0 : _b.graphql) === null || _c === void 0 ? void 0 : _c.user; const transformedData = (0, exports.transformData)(userData); return transformedData; }; exports.getUserData = getUserData; const transformData = (u) => { var _a, _b, _c, _d; const postsArray = (_a = u.edge_owner_to_timeline_media) === null || _a === void 0 ? void 0 : _a.edges; let posts = null; if (postsArray && postsArray.length) { posts = postsArray.map((post) => { var _a, _b, _c, _d, _e, _f; const p = post.node; return { id: p.id, shortcode: p.shortcode, photo: p.display_url, isVideo: p.is_video, description: ((_c = (_b = (_a = p.edge_media_to_caption) === null || _a === void 0 ? void 0 : _a.edges[0]) === null || _b === void 0 ? void 0 : _b.node) === null || _c === void 0 ? void 0 : _c.text) || null, commentsCount: (_d = p.edge_media_to_comment) === null || _d === void 0 ? void 0 : _d.count, likesCount: (_e = p.edge_liked_by) === null || _e === void 0 ? void 0 : _e.count, time: p.taken_at_timestamp, location: ((_f = p.location) === null || _f === void 0 ? void 0 : _f.name) || null }; }); } const user = { id: u.id, fullName: u.full_name, bio: u.biography || null, avatar: u.profile_pic_url_hd, followersCount: (_b = u.edge_followed_by) === null || _b === void 0 ? void 0 : _b.count, followingsCount: (_c = u.edge_follow) === null || _c === void 0 ? void 0 : _c.count, website: u.external_url || null, isPrivate: u.is_private, isVerified: u.is_verified, fbPage: u.connected_fb_page || null, category: u.category_enum || null, postsCount: (_d = u.edge_owner_to_timeline_media) === null || _d === void 0 ? void 0 : _d.count, posts: posts || [] }; return user; }; exports.transformData = transformData;