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
JavaScript
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;
;