UNPKG

instamancer

Version:

Scrape the Instagram API with Puppeteer

125 lines 8.86 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Search = exports.SearchResult = exports.Hashtags = exports.Places = exports.Users = void 0; const t = __importStar(require("io-ts")); const io_ts_excess_1 = require("io-ts-excess"); const instagram_1 = require("./instagram"); exports.Users = t.type({ position: t.number, user: io_ts_excess_1.excess(t.type({ full_name: t.string, has_anonymous_profile_picture: t.boolean, is_private: t.boolean, is_verified: t.boolean, latest_reel_media: t.number, mutual_followers_count: t.number, pk: t.string, profile_pic_id: t.union([t.string, t.undefined]), profile_pic_url: t.string, username: t.string, })), }); exports.Places = t.type({ place: io_ts_excess_1.excess(t.type({ header_media: t.any, location: io_ts_excess_1.excess(t.type({ address: t.string, city: t.string, external_source: t.string, facebook_places_id: t.number, lat: t.union([t.undefined, t.number]), lng: t.union([t.undefined, t.number]), name: t.string, pk: t.string, short_name: t.string, })), media_bundles: t.UnknownArray, slug: t.string, subtitle: t.string, title: t.string, })), position: t.number, }); exports.Hashtags = t.type({ hashtag: io_ts_excess_1.excess(t.type({ id: t.string, media_count: t.number, name: t.string, profile_pic_url: t.string, search_result_subtitle: t.string, use_default_avatar: t.boolean, })), position: t.number, }); exports.SearchResult = t.type({ clear_client_cache: t.boolean, has_more: t.boolean, hashtags: t.array(exports.Hashtags), places: t.array(exports.Places), rank_token: t.string, status: t.string, users: t.array(exports.Users), }); class Search extends instagram_1.Instagram { constructor(query, options = {}) { super("https://instagram.com/explore/tags/instagram", "", "", "", options, exports.SearchResult); this.catchURL = "https://www.instagram.com/web/"; this.inputElementQuery = "input[type='text']"; this.searchQuery = query; } async get() { if (!this.started) { await this.start(); } try { try { await this.page.waitForSelector(this.inputElementQuery, { timeout: 30000, }); } catch (_a) { // Timeout } await this.page.click(this.inputElementQuery); await this.page.keyboard.sendCharacter(this.searchQuery); await this.page.waitForRequest((req) => this.matchURL(req.url())); await this.processRequests(); await this.page.waitForResponse((res) => this.matchURL(res.url())); await this.processResponses(); } catch (e) { await this.stop(); throw e; } await this.stop(); return this.searchResult; } matchURL(url) { return url.startsWith(this.catchURL); } async processResponseData(data) { await this.validatePost(data); this.searchResult = data; } } exports.Search = Search; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2VhcmNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5Q0FBMkI7QUFDM0IsK0NBQW9DO0FBR3BDLDJDQUFzQztBQUV6QixRQUFBLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3hCLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTTtJQUNsQixJQUFJLEVBQUUscUJBQU0sQ0FDUixDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ0gsU0FBUyxFQUFFLENBQUMsQ0FBQyxNQUFNO1FBQ25CLDZCQUE2QixFQUFFLENBQUMsQ0FBQyxPQUFPO1FBQ3hDLFVBQVUsRUFBRSxDQUFDLENBQUMsT0FBTztRQUNyQixXQUFXLEVBQUUsQ0FBQyxDQUFDLE9BQU87UUFDdEIsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLE1BQU07UUFDM0Isc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLE1BQU07UUFDaEMsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNO1FBQ1osY0FBYyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoRCxlQUFlLEVBQUUsQ0FBQyxDQUFDLE1BQU07UUFDekIsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNO0tBQ3JCLENBQUMsQ0FDTDtDQUNKLENBQUMsQ0FBQztBQUVVLFFBQUEsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDekIsS0FBSyxFQUFFLHFCQUFNLENBQ1QsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNILFlBQVksRUFBRSxDQUFDLENBQUMsR0FBRztRQUNuQixRQUFRLEVBQUUscUJBQU0sQ0FDWixDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ0gsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNO1lBQ2pCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTTtZ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