| const axios = require('axios'); |
|
|
| async function igstalk(user) { |
| try { |
| const profileResponse = await axios.post( |
| 'https://api.boostfluence.com/api/instagram-profile-v2', |
| { username: user }, |
| { headers: { 'Content-Type': 'application/json' } } |
| ); |
|
|
| const profile = profileResponse.data; |
|
|
| let postsData = null; |
| try { |
| const initialPostsResponse = await axios.post( |
| 'https://api.boostfluence.com/api/instagram-viewer-v2-2', |
| { username: user, type: 'photo', pagination_token: null }, |
| { headers: { 'Content-Type': 'application/json' } } |
| ); |
|
|
| if (initialPostsResponse.data.error === 'COMPUTE_REQUIRED') { |
| const { timestamp, expectedCompute } = initialPostsResponse.data.challenge; |
|
|
| const verifiedPostsResponse = await axios.post( |
| 'https://api.boostfluence.com/api/instagram-viewer-v2-2', |
| { username: user, type: 'photo', pagination_token: null }, |
| { |
| headers: { |
| 'Content-Type': 'application/json', |
| 'X-Compute': expectedCompute.toString(), |
| 'X-Timestamp': timestamp.toString() |
| } |
| } |
| ); |
|
|
| postsData = verifiedPostsResponse.data; |
| } else { |
| postsData = initialPostsResponse.data; |
| } |
| } catch (postsError) { |
| console.error('Error fetching posts:', postsError.message); |
| } |
|
|
| return { |
| profile: { |
| username: profile.username, |
| full_name: profile.full_name, |
| biography: profile.biography, |
| follower_count: profile.follower_count, |
| following_count: profile.following_count, |
| media_count: profile.media_count, |
| profile_pic_url: profile.profile_pic_url, |
| profile_pic_url_hd: profile.profile_pic_url_hd, |
| is_verified: profile.is_verified, |
| is_private: profile.is_private, |
| external_url: profile.external_url, |
| category: profile.category |
| } |
| }; |
| } catch (error) { |
| throw new Error(`Failed to fetch Instagram data: ${error.message}`); |
| } |
| } |
|
|
| const handler = async (req, res) => { |
| try { |
| const { username } = req.query; |
|
|
| if (!username) { |
| return res.status(400).json({ |
| success: false, |
| error: 'Missing required parameter: username' |
| }); |
| } |
|
|
| const usernameRegex = /^[a-zA-Z0-9._]{1,30}$/; |
| if (!usernameRegex.test(username)) { |
| return res.status(400).json({ |
| success: false, |
| error: 'Invalid username format' |
| }); |
| } |
|
|
| const result = await igstalk(username); |
|
|
| res.json({ |
| author: "Herza", |
| success: true, |
| data: result |
| }); |
|
|
| } catch (error) { |
| res.status(500).json({ |
| author: "Herza", |
| success: false, |
| error: error.message |
| }); |
| } |
| }; |
|
|
| module.exports = { |
| name: 'Instagram Stalk', |
| description: 'Get Instagram user profile information including stats, bio, and posts', |
| type: 'GET', |
| routes: ['api/stalk/instagram'], |
| tags: ['social', 'instagram', 'stalk', 'profile'], |
| parameters: ['username', 'key'], |
| enabled: true, |
| main: ['Stalk'], |
| handler |
| }; |