abot-scraper 1.2.0 → 1.2.1
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/dist/index.cjs +27 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +27 -11
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/types/index.d.ts +3 -3
package/dist/index.cjs
CHANGED
@@ -82,6 +82,9 @@ var Downloader = class {
|
|
82
82
|
const $ = cheerio.load(response.data);
|
83
83
|
const videoUrl = $("video source").attr("src");
|
84
84
|
const imageUrl = $("img").attr("src");
|
85
|
+
if (!videoUrl && !imageUrl) {
|
86
|
+
throw new Error("No video or image found in the response.");
|
87
|
+
}
|
85
88
|
return {
|
86
89
|
creator: global.creator,
|
87
90
|
status: 200,
|
@@ -120,6 +123,9 @@ var Downloader = class {
|
|
120
123
|
const title = $("p.maintext").text().trim();
|
121
124
|
const audio = $("a.download_link.music").attr("href");
|
122
125
|
const video = $("a.download_link.without_watermark").attr("href");
|
126
|
+
if (!title || !video) {
|
127
|
+
throw new Error("Failed to extract video or title from response.");
|
128
|
+
}
|
123
129
|
return {
|
124
130
|
creator: global.creator,
|
125
131
|
status: 200,
|
@@ -138,18 +144,28 @@ var Downloader = class {
|
|
138
144
|
}
|
139
145
|
}
|
140
146
|
async igstory(username) {
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
147
|
+
const payload = {
|
148
|
+
username
|
149
|
+
};
|
150
|
+
const headers = {
|
151
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/",
|
152
|
+
accept: "application/json, text/plain, */*",
|
153
|
+
"accept-language": "en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6",
|
154
|
+
"content-type": "application/json",
|
155
|
+
priority: "u=1, i",
|
156
|
+
"sec-ch-ua": '"Microsoft Edge";v="137", "Chromium";v="137", "Not/A)Brand";v="24"',
|
157
|
+
"sec-ch-ua-mobile": "?0",
|
158
|
+
"sec-ch-ua-platform": '"Windows"',
|
159
|
+
"sec-fetch-dest": "empty",
|
160
|
+
"sec-fetch-mode": "cors",
|
161
|
+
"sec-fetch-site": "same-origin",
|
162
|
+
Referer: "https://storyviewer.com/",
|
163
|
+
"Referrer-Policy": "strict-origin-when-cross-origin"
|
164
|
+
};
|
146
165
|
try {
|
147
|
-
const
|
148
|
-
|
149
|
-
|
150
|
-
const encodedParameter = encodeParameter(username);
|
151
|
-
const response = await import_axios.default.get(
|
152
|
-
`https://instanavigation.net/api/v1/stories/${encodedParameter}`,
|
166
|
+
const response = await import_axios.default.post(
|
167
|
+
`https://storyviewer.com/api/data`,
|
168
|
+
payload,
|
153
169
|
{ headers }
|
154
170
|
);
|
155
171
|
const data = response.data;
|
package/dist/index.cjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/scraper/downloader.ts","../src/utils/generator.ts","../src/scraper/search.ts"],"sourcesContent":["import Downloader from './scraper/downloader.js';\nimport Search from './scraper/search.js';\n\nconst downloader = new Downloader();\nconst search = new Search();\n\nexport default {\n downloader,\n search,\n};\n\nexport { Downloader, downloader, Search, search };\n","import axios, { AxiosResponse } from 'axios';\nimport * as cheerio from 'cheerio';\nimport qs from 'qs';\nimport {\n ApiResponse,\n FacebookResult,\n InstagramMediaItem,\n InstagramStoriesResult,\n SfileDownloadResult,\n TikTokResult,\n YoutubeResult,\n YoutubeResultV2,\n} from '../../types/index.js';\nimport Generator from '../utils/generator.js';\n\ninterface StoryItem {\n source: string;\n [key: string]: unknown;\n}\n\ninterface InstagramApiResponse {\n stories: StoryItem[];\n user_info: {\n username: string;\n [key: string]: unknown;\n };\n}\n\ninterface FileItem {\n __type: string;\n video_url?: string;\n download_url?: string;\n [key: string]: unknown;\n}\n\ninterface InstagramFilesResponse {\n files: FileItem[];\n}\n\ninterface YouTubeFormat {\n quality: string;\n video_url: string;\n [key: string]: unknown;\n}\n\ninterface YouTubeMedia {\n media_type: string;\n preview_url?: string;\n resource_url?: string;\n formats?: YouTubeFormat[];\n [key: string]: unknown;\n}\n\ninterface YouTubeApiResponse {\n text: string;\n medias: YouTubeMedia[];\n}\n\ndeclare global {\n // eslint-disable-next-line no-var\n var creator: string;\n}\n\nglobal.creator = '@abotscraper – ahmuq';\n\nexport default class Downloader {\n private generator: Generator;\n\n constructor() {\n this.generator = new Generator();\n }\n\n async facebook(url: string): Promise<ApiResponse<FacebookResult>> {\n try {\n const headers = {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 Edg/134.0.0.0',\n Origin: 'https://www.fdown.world',\n referer: 'https://www.fdown.world/',\n 'x-requested-with': 'XMLHttpRequest',\n Cookie: 'codehap_domain=www.fdown.world',\n };\n\n const data = new URLSearchParams({ codehap_link: url, codehap: 'true' });\n\n const response: AxiosResponse = await axios.post(\n 'https://www.fdown.world/result.php',\n data,\n { headers }\n );\n\n const $ = cheerio.load(response.data);\n const videoUrl = $('video source').attr('src');\n const imageUrl = $('img').attr('src');\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n thumbnail: imageUrl || '',\n videoUrl: videoUrl || '',\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async tiktokDownloader(url: string): Promise<ApiResponse<TikTokResult>> {\n try {\n const headers = {\n 'sec-ch-ua':\n '\" Not;A Brand\";v=\"99\", \"Google Chrome\";v=\"91\", \"Chromium\";v=\"91\"',\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n };\n\n const data = new URLSearchParams({\n id: url,\n locale: 'en',\n tt: 'WmNzZDk_',\n });\n\n const response: AxiosResponse = await axios.post(\n 'https://ssstik.io/abc?url=dl',\n data,\n {\n headers,\n }\n );\n\n const $ = cheerio.load(response.data);\n const title = $('p.maintext').text().trim();\n const audio = $('a.download_link.music').attr('href');\n const video = $('a.download_link.without_watermark').attr('href');\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n title: title,\n video: video || '',\n audio: audio || '',\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async igstory(username: string): Promise<ApiResponse<InstagramStoriesResult>> {\n function encodeParameter(username: string): string {\n const parameter = `-1::${username}::rJP2tBRKf6ktbRqPUBtRE9klgBWb7d`;\n const encoded = Buffer.from(parameter).toString('base64');\n return encoded\n .replace(/[+]/g, '.')\n .replace(/[/]/g, '_')\n .replace(/[=]/g, '-');\n }\n\n try {\n const headers = {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/',\n };\n\n const encodedParameter = encodeParameter(username);\n const response: AxiosResponse = await axios.get(\n `https://instanavigation.net/api/v1/stories/${encodedParameter}`,\n { headers }\n );\n\n const data: InstagramApiResponse = response.data;\n const sources = data.stories.map((story: StoryItem) => story.source);\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n user_info: data.user_info,\n links: sources,\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async instagram(url: string): Promise<ApiResponse<InstagramMediaItem[]>> {\n try {\n const config = new URLSearchParams({\n url: url,\n new: '2',\n lang: 'en',\n app: '',\n });\n\n const headers = {\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n };\n\n const response: AxiosResponse<InstagramFilesResponse> = await axios.post(\n 'https://snapinsta.app/get-data.php',\n config,\n { headers }\n );\n\n const downloadLinks = response.data.files\n .map((file: FileItem) =>\n file.__type === 'GraphVideo'\n ? { type: 'video' as const, url: file.video_url || '' }\n : file.__type === 'GraphImage'\n ? { type: 'image' as const, url: file.download_url || '' }\n : null\n )\n .filter((link: InstagramMediaItem | null): link is InstagramMediaItem => link !== null);\n\n return {\n creator: global.creator,\n status: 200,\n result: downloadLinks,\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async youtubeDownloader(url: string): Promise<ApiResponse<YoutubeResult>> {\n try {\n const config = qs.stringify({\n url: url,\n q_auto: 0,\n ajax: 1,\n lang: 'en',\n });\n\n const headers = {\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n };\n\n const response: AxiosResponse = await axios.post(\n 'https://yt1s.net/ajax?retry=undefined&platform=youtube',\n config,\n { headers }\n );\n\n const $ = cheerio.load(response.data.result);\n const title = $('.caption b').text().trim();\n const downloadLinks = {\n '480p': $('a[data-fquality=\"480p\"]').attr('href') || '',\n '720p': $('a[data-fquality=\"720p\"]').attr('href') || '',\n '1080p': $('a[data-fquality=\"1080p\"]').attr('href') || '',\n };\n const thumbnailUrl = $('.thumbnail.cover img').attr('src');\n\n const mp3ConvertElement = $('#convert-mp3 a');\n const hrefAttr = mp3ConvertElement.attr('href');\n\n if (!hrefAttr) throw new Error('MP3 conversion link not found.');\n\n const mp3ConvertTokenMatch = hrefAttr.match(\n /mp3_convert_task\\('(\\d+)',\\s*'([^']+)'\\)/\n );\n\n if (!mp3ConvertTokenMatch)\n throw new Error('MP3 conversion token not found.');\n\n const mp3ConvertToken = mp3ConvertTokenMatch[2];\n\n const mp3Response: AxiosResponse = await axios.get(\n `https://api.fabdl.com/youtube/mp3-convert-task?token=${mp3ConvertToken}`\n );\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n title: title,\n thumbnail: thumbnailUrl || '',\n downloadLinks: downloadLinks,\n mp3DownloadUrl: `https://api.fabdl.com${mp3Response.data.result.download_url}`,\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async youtubeDownloaderV2(url: string): Promise<ApiResponse<YoutubeResultV2>> {\n try {\n const timestamp = this.generator.generateTimeStampYoutubeDL();\n const footer = this.generator.generateFooterYoutubeDL(timestamp, url);\n\n const payload = {\n link: url,\n };\n\n const headers = {\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n 'g-footer': footer,\n 'g-timestamp': timestamp,\n accept: '*/*',\n 'accept-language': 'en',\n 'content-type': 'application/json',\n priority: 'u=1, i',\n 'sec-ch-ua':\n '\"Microsoft Edge\";v=\"137\", \"Chromium\";v=\"137\", \"Not/A)Brand\";v=\"24\"',\n 'sec-ch-ua-mobile': '?0',\n 'sec-ch-ua-platform': '\"Windows\"',\n 'sec-fetch-dest': 'empty',\n 'sec-fetch-mode': 'cors',\n 'sec-fetch-site': 'same-site',\n Referer: 'https://snapany.com/',\n 'Referrer-Policy': 'strict-origin-when-cross-origin',\n };\n\n const response: AxiosResponse<YouTubeApiResponse> = await axios.post(\n 'https://api.snapany.com/v1/extract',\n payload,\n { headers }\n );\n const data = response.data;\n\n const videoMedia = data.medias.find(\n (media: YouTubeMedia) => media.media_type === 'video'\n );\n const audioMedia = data.medias.find(\n (media: YouTubeMedia) => media.media_type === 'audio'\n );\n\n const downloadLinks: Record<string, string> = {};\n if (videoMedia && videoMedia.formats) {\n videoMedia.formats.forEach((format: YouTubeFormat) => {\n const qualityKey = `${format.quality}p`;\n downloadLinks[qualityKey] = format.video_url;\n });\n }\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n title: data.text,\n thumbnail: videoMedia?.preview_url || null,\n downloadLinks: downloadLinks,\n video: videoMedia?.resource_url || null,\n audio: audioMedia?.resource_url || null,\n formats: videoMedia?.formats || [],\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async sfileDownloader(url: string): Promise<ApiResponse<SfileDownloadResult>> {\n try {\n const response: AxiosResponse = await axios.get(url, {\n headers: {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n Referer: 'https://sfile.mobi/',\n 'Accept-Language': 'en-US,en;q=0.9',\n },\n });\n\n const $ = cheerio.load(response.data);\n const filename = $('.intro-container img').attr('alt') || '';\n const mimetype = $('div.list').text().split(' - ')[1]?.split('\\n')[0] || '';\n const downloadHref = $('#download').attr('href');\n const download = downloadHref\n ? downloadHref + '&k=' + Math.floor(Math.random() * (15 - 10 + 1) + 10)\n : '';\n\n return {\n creator: global.creator,\n status: 200,\n result: { filename, mimetype, download },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n}\n","import crypto from 'crypto';\n\nexport default class Generator {\n generateTimeStampYoutubeDL(): string {\n return Date.now().toString();\n }\n\n generateFooterYoutubeDL(timestamp: string, link: string): string {\n const locale = 'en';\n const secretKey = '6HTugjCXxR';\n const input = link + locale + timestamp + secretKey;\n const hash = crypto.createHash('md5').update(input).digest('hex');\n return hash;\n }\n}\n","import axios, { AxiosResponse } from 'axios';\nimport * as cheerio from 'cheerio';\nimport {\n ApiResponse,\n SfileSearchResult,\n WallpaperResult,\n WikimediaResult,\n YtPlayResult,\n YtSearchResult,\n} from '../../types/index.js';\n\ndeclare global {\n // eslint-disable-next-line no-var\n var creator: string;\n}\n\nglobal.creator = '@abotscraper – ahmuq';\n\ninterface YtPlayConfig {\n k_query: string;\n k_page: string;\n q_auto: number;\n hl?: string;\n}\n\ninterface ConvertConfig {\n vid: string;\n k: string;\n}\n\nexport default class Search {\n async sfileSearch(\n query: string,\n page: number = 1\n ): Promise<ApiResponse<SfileSearchResult[]>> {\n try {\n const response: AxiosResponse = await axios.get(\n `https://sfile.mobi/search.php?q=${query}&page=${page}`,\n {\n headers: {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n Referer: 'https://sfile.mobi/',\n 'Accept-Language': 'en-US,en;q=0.9',\n },\n }\n );\n const $ = cheerio.load(response.data);\n const results: SfileSearchResult[] = [];\n\n $('div.list').each(function () {\n const title = $(this).find('a').text();\n const sizeText = $(this).text().trim().split('(')[1];\n const link = $(this).find('a').attr('href');\n\n if (link && sizeText) {\n results.push({\n title,\n size: sizeText.replace(')', ''),\n link\n });\n }\n });\n\n return {\n creator: global.creator,\n status: 200,\n result: results,\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error'\n };\n }\n }\n\n async ytSearch(query: string): Promise<ApiResponse<YtSearchResult[]>> {\n try {\n const headers = {\n accept: \"*/*\",\n \"accept-language\": \"en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6\",\n priority: \"u=1, i\",\n \"sec-ch-ua\":\n '\"Microsoft Edge\";v=\"137\", \"Chromium\";v=\"137\", \"Not/A)Brand\";v=\"24\"',\n \"sec-ch-ua-mobile\": \"?0\",\n \"sec-ch-ua-platform\": '\"Windows\"',\n \"sec-fetch-dest\": \"empty\",\n \"sec-fetch-mode\": \"cors\",\n \"sec-fetch-site\": \"cross-site\",\n }\n const response: AxiosResponse = await axios.get(\n `https://line.1010diy.com/web/free-mp3-finder/query?q=${encodeURIComponent(query)}&type=youtube&pageToken=`,\n { headers }\n );\n\n const data = response.data;\n const videos = data?.data?.items || [];\n const results: YtSearchResult[] = videos.map((item: {\n title: string;\n thumbnail: string;\n url: string;\n }) => ({\n title: item.title,\n thumbnail: item.thumbnail,\n url: item.url\n }));\n\n return {\n creator: global.creator,\n status: 200,\n result: results,\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error'\n };\n }\n }\n\n ytPlay = (text: string): Promise<ApiResponse<YtPlayResult>> => {\n return new Promise((resolve, reject) => {\n const configd: YtPlayConfig = {\n k_query: text,\n k_page: 'mp3',\n q_auto: 1,\n };\n\n const headerss = {\n 'sec-ch-ua':\n '\" Not;A Brand\";v=\"99\", \"Google Chrome\";v=\"91\", \"Chromium\";v=\"91\"',\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n Cookie:\n 'PHPSESSID=6jo2ggb63g5mjvgj45f612ogt7; _ga=GA1.2.405896420.1625200423; _gid=GA1.2.2135261581.1625200423; _PN_SBSCRBR_FALLBACK_DENIED=1625200785624; MarketGidStorage={\"0\":{},\"C702514\":{\"page\":5,\"time\":1625200846733}}',\n };\n\n axios('https://www.y2mate.com/mates/analyzeV2/ajax', {\n method: 'POST',\n data: new URLSearchParams(Object.entries(configd)),\n headers: headerss,\n })\n .then(({ data }) => {\n const v = data.vitems;\n const v2 = v[Math.floor(Math.random() * v.length)].v;\n const url = 'https://www.youtube.com/watch?v=' + v2;\n\n const config: YtPlayConfig = {\n k_query: 'https://www.youtube.be/' + url,\n k_page: 'mp3',\n hl: 'en',\n q_auto: 1,\n };\n\n\n axios('https://www.y2mate.com/mates/en68/analyze/ajax', {\n method: 'POST',\n data: new URLSearchParams({\n url: 'https://www.youtube.be/' + url,\n q_auto: '0',\n ajax: '1',\n }),\n headers: headerss,\n }).then(({ data }) => {\n const $ = cheerio.load(data.result);\n const img = $('div.thumbnail.cover > a > img').attr('src');\n\n axios('https://www.y2mate.com/mates/analyzeV2/ajax', {\n method: 'POST',\n data: new URLSearchParams(Object.entries(config)),\n headers: headerss,\n }).then(({ data }) => {\n const convertConfig: ConvertConfig = {\n vid: data.vid,\n k: data.links.mp3.mp3128.k,\n };\n\n const size = data.links.mp3.mp3128.size;\n\n axios('https://www.y2mate.com/mates/convertV2/index', {\n method: 'POST',\n data: new URLSearchParams(Object.entries(convertConfig)),\n headers: headerss,\n })\n .then((response) => {\n resolve({\n creator: global.creator,\n status: 200,\n result: {\n status: response.data.status,\n title: response.data.title,\n ftype: response.data.ftype,\n thumb: img || '',\n size_mp3: size,\n link: response.data.dlink,\n },\n });\n })\n .catch(reject);\n });\n });\n })\n .catch(reject);\n });\n };\n\n wallpaper = (\n title: string,\n page: string = '1'\n ): Promise<ApiResponse<WallpaperResult[]>> => {\n return new Promise((resolve, reject) => {\n axios\n .get(\n `https://www.besthdwallpaper.com/search?CurrentPage=${page}&q=${title}`\n )\n .then(({ data }) => {\n const $ = cheerio.load(data);\n const hasil: WallpaperResult[] = [];\n\n $('div.grid-item').each(function (_, b) {\n const titleAttr = $(b).find('p[title]').attr('title');\n const typeText = $(b).find('div.info > a:nth-child(2)').text();\n const hrefAttr = $(b).find('a').attr('href');\n const imgSrc = $(b).find('picture > img').attr('src');\n const srcset1 = $(b)\n .find('picture > source:nth-child(1)')\n .attr('srcset');\n const srcset2 = $(b)\n .find('picture > source:nth-child(2)')\n .attr('srcset');\n\n if (titleAttr && hrefAttr) {\n hasil.push({\n title: titleAttr.trim(),\n type: typeText?.trim() || '',\n source: 'https://www.besthdwallpaper.com' + hrefAttr,\n image: [imgSrc || '', srcset1 || '', srcset2 || ''],\n });\n }\n });\n\n resolve({ creator: global.creator, status: 200, result: hasil });\n })\n .catch((error) => {\n reject(error);\n });\n });\n };\n\n wikimedia = (title: string): Promise<ApiResponse<WikimediaResult[]>> => {\n return new Promise((resolve, reject) => {\n axios\n .get(\n `https://commons.wikimedia.org/w/index.php?search=${title}&title=Special:MediaSearch&go=Go&type=image`\n )\n .then((res) => {\n const $ = cheerio.load(res.data);\n const hasil: WikimediaResult[] = [];\n\n $('.sdms-search-results__list-wrapper > div > a').each(function (\n _,\n b\n ) {\n const altText = $(b).find('img').attr('alt');\n const href = $(b).attr('href');\n const dataSrc = $(b).find('img').attr('data-src');\n const src = $(b).find('img').attr('src');\n\n if (altText && href) {\n hasil.push({\n title: altText,\n source: href,\n image: dataSrc || src || '',\n });\n }\n });\n\n resolve({ creator: global.creator, status: 200, result: hasil });\n })\n .catch(reject);\n });\n };\n}\n"],"mappings":"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","names":["crypto","axios","username","qs","import_axios","cheerio","axios","data"]}
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/scraper/downloader.ts","../src/utils/generator.ts","../src/scraper/search.ts"],"sourcesContent":["import Downloader from './scraper/downloader.js';\nimport Search from './scraper/search.js';\n\nconst downloader = new Downloader();\nconst search = new Search();\n\nexport default {\n downloader,\n search,\n};\n\nexport { Downloader, downloader, Search, search };\n","import axios, { AxiosResponse } from 'axios';\nimport * as cheerio from 'cheerio';\nimport qs from 'qs';\nimport {\n ApiResponse,\n FacebookResult,\n InstagramMediaItem,\n InstagramStoriesResult,\n SfileDownloadResult,\n TikTokResult,\n YoutubeResult,\n YoutubeResultV2,\n} from '../../types/index.js';\nimport Generator from '../utils/generator.js';\n\ninterface StoryItem {\n source: string;\n [key: string]: unknown;\n}\n\ninterface InstagramApiResponse {\n stories: StoryItem[];\n user_info: {\n username: string;\n [key: string]: unknown;\n };\n}\n\ninterface FileItem {\n __type: string;\n video_url?: string;\n download_url?: string;\n [key: string]: unknown;\n}\n\ninterface InstagramFilesResponse {\n files: FileItem[];\n}\n\ninterface YouTubeFormat {\n quality: string;\n video_url: string;\n [key: string]: unknown;\n}\n\ninterface YouTubeMedia {\n media_type: string;\n preview_url?: string;\n resource_url?: string;\n formats?: YouTubeFormat[];\n [key: string]: unknown;\n}\n\ninterface YouTubeApiResponse {\n text: string;\n medias: YouTubeMedia[];\n}\n\ndeclare global {\n // eslint-disable-next-line no-var\n var creator: string;\n}\n\nglobal.creator = '@abotscraper – ahmuq';\n\nexport default class Downloader {\n private generator: Generator;\n\n constructor() {\n this.generator = new Generator();\n }\n\n async facebook(url: string): Promise<ApiResponse<FacebookResult>> {\n try {\n const headers = {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 Edg/134.0.0.0',\n Origin: 'https://www.fdown.world',\n referer: 'https://www.fdown.world/',\n 'x-requested-with': 'XMLHttpRequest',\n Cookie: 'codehap_domain=www.fdown.world',\n };\n\n const data = new URLSearchParams({ codehap_link: url, codehap: 'true' });\n\n const response: AxiosResponse = await axios.post(\n 'https://www.fdown.world/result.php',\n data,\n { headers }\n );\n\n const $ = cheerio.load(response.data);\n const videoUrl = $('video source').attr('src');\n const imageUrl = $('img').attr('src');\n\n if (!videoUrl && !imageUrl) {\n throw new Error('No video or image found in the response.');\n }\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n thumbnail: imageUrl || '',\n videoUrl: videoUrl || '',\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async tiktokDownloader(url: string): Promise<ApiResponse<TikTokResult>> {\n try {\n const headers = {\n 'sec-ch-ua':\n '\" Not;A Brand\";v=\"99\", \"Google Chrome\";v=\"91\", \"Chromium\";v=\"91\"',\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n };\n\n const data = new URLSearchParams({\n id: url,\n locale: 'en',\n tt: 'WmNzZDk_',\n });\n\n const response: AxiosResponse = await axios.post(\n 'https://ssstik.io/abc?url=dl',\n data,\n {\n headers,\n }\n );\n\n const $ = cheerio.load(response.data);\n const title = $('p.maintext').text().trim();\n const audio = $('a.download_link.music').attr('href');\n const video = $('a.download_link.without_watermark').attr('href');\n\n if (!title || !video) {\n throw new Error('Failed to extract video or title from response.');\n }\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n title: title,\n video: video || '',\n audio: audio || '',\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async igstory(username: string): Promise<ApiResponse<InstagramStoriesResult>> {\n const payload = {\n username: username,\n }\n const headers = {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/',\n accept: 'application/json, text/plain, */*',\n 'accept-language': 'en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6',\n 'content-type': 'application/json',\n priority: 'u=1, i',\n 'sec-ch-ua':\n '\"Microsoft Edge\";v=\"137\", \"Chromium\";v=\"137\", \"Not/A)Brand\";v=\"24\"',\n 'sec-ch-ua-mobile': '?0',\n 'sec-ch-ua-platform': '\"Windows\"',\n 'sec-fetch-dest': 'empty',\n 'sec-fetch-mode': 'cors',\n 'sec-fetch-site': 'same-origin',\n Referer: 'https://storyviewer.com/',\n 'Referrer-Policy': 'strict-origin-when-cross-origin',\n };\n try {\n const response: AxiosResponse = await axios.post(\n `https://storyviewer.com/api/data`,\n payload,\n { headers }\n );\n\n const data: InstagramApiResponse = response.data;\n const sources = data.stories.map((story: StoryItem) => story.source);\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n user_info: data.user_info,\n links: sources,\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async instagram(url: string): Promise<ApiResponse<InstagramMediaItem[]>> {\n try {\n const config = new URLSearchParams({\n url: url,\n new: '2',\n lang: 'en',\n app: '',\n });\n\n const headers = {\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n };\n\n const response: AxiosResponse<InstagramFilesResponse> = await axios.post(\n 'https://snapinsta.app/get-data.php',\n config,\n { headers }\n );\n\n const downloadLinks = response.data.files\n .map((file: FileItem) =>\n file.__type === 'GraphVideo'\n ? { type: 'video' as const, url: file.video_url || '' }\n : file.__type === 'GraphImage'\n ? { type: 'image' as const, url: file.download_url || '' }\n : null\n )\n .filter((link: InstagramMediaItem | null): link is InstagramMediaItem => link !== null);\n\n return {\n creator: global.creator,\n status: 200,\n result: downloadLinks,\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async youtubeDownloader(url: string): Promise<ApiResponse<YoutubeResult>> {\n try {\n const config = qs.stringify({\n url: url,\n q_auto: 0,\n ajax: 1,\n lang: 'en',\n });\n\n const headers = {\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n };\n\n const response: AxiosResponse = await axios.post(\n 'https://yt1s.net/ajax?retry=undefined&platform=youtube',\n config,\n { headers }\n );\n\n const $ = cheerio.load(response.data.result);\n const title = $('.caption b').text().trim();\n const downloadLinks = {\n '480p': $('a[data-fquality=\"480p\"]').attr('href') || '',\n '720p': $('a[data-fquality=\"720p\"]').attr('href') || '',\n '1080p': $('a[data-fquality=\"1080p\"]').attr('href') || '',\n };\n const thumbnailUrl = $('.thumbnail.cover img').attr('src');\n\n const mp3ConvertElement = $('#convert-mp3 a');\n const hrefAttr = mp3ConvertElement.attr('href');\n\n if (!hrefAttr) throw new Error('MP3 conversion link not found.');\n\n const mp3ConvertTokenMatch = hrefAttr.match(\n /mp3_convert_task\\('(\\d+)',\\s*'([^']+)'\\)/\n );\n\n if (!mp3ConvertTokenMatch)\n throw new Error('MP3 conversion token not found.');\n\n const mp3ConvertToken = mp3ConvertTokenMatch[2];\n\n const mp3Response: AxiosResponse = await axios.get(\n `https://api.fabdl.com/youtube/mp3-convert-task?token=${mp3ConvertToken}`\n );\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n title: title,\n thumbnail: thumbnailUrl || '',\n downloadLinks: downloadLinks,\n mp3DownloadUrl: `https://api.fabdl.com${mp3Response.data.result.download_url}`,\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async youtubeDownloaderV2(url: string): Promise<ApiResponse<YoutubeResultV2>> {\n try {\n const timestamp = this.generator.generateTimeStampYoutubeDL();\n const footer = this.generator.generateFooterYoutubeDL(timestamp, url);\n\n const payload = {\n link: url,\n };\n\n const headers = {\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n 'g-footer': footer,\n 'g-timestamp': timestamp,\n accept: '*/*',\n 'accept-language': 'en',\n 'content-type': 'application/json',\n priority: 'u=1, i',\n 'sec-ch-ua':\n '\"Microsoft Edge\";v=\"137\", \"Chromium\";v=\"137\", \"Not/A)Brand\";v=\"24\"',\n 'sec-ch-ua-mobile': '?0',\n 'sec-ch-ua-platform': '\"Windows\"',\n 'sec-fetch-dest': 'empty',\n 'sec-fetch-mode': 'cors',\n 'sec-fetch-site': 'same-site',\n Referer: 'https://snapany.com/',\n 'Referrer-Policy': 'strict-origin-when-cross-origin',\n };\n\n const response: AxiosResponse<YouTubeApiResponse> = await axios.post(\n 'https://api.snapany.com/v1/extract',\n payload,\n { headers }\n );\n const data = response.data;\n\n const videoMedia = data.medias.find(\n (media: YouTubeMedia) => media.media_type === 'video'\n );\n const audioMedia = data.medias.find(\n (media: YouTubeMedia) => media.media_type === 'audio'\n );\n\n const downloadLinks: Record<string, string> = {};\n if (videoMedia && videoMedia.formats) {\n videoMedia.formats.forEach((format: YouTubeFormat) => {\n const qualityKey = `${format.quality}p`;\n downloadLinks[qualityKey] = format.video_url;\n });\n }\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n title: data.text,\n thumbnail: videoMedia?.preview_url || null,\n downloadLinks: downloadLinks,\n video: videoMedia?.resource_url || null,\n audio: audioMedia?.resource_url || null,\n formats: videoMedia?.formats || [],\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async sfileDownloader(url: string): Promise<ApiResponse<SfileDownloadResult>> {\n try {\n const response: AxiosResponse = await axios.get(url, {\n headers: {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n Referer: 'https://sfile.mobi/',\n 'Accept-Language': 'en-US,en;q=0.9',\n },\n });\n\n const $ = cheerio.load(response.data);\n const filename = $('.intro-container img').attr('alt') || '';\n const mimetype = $('div.list').text().split(' - ')[1]?.split('\\n')[0] || '';\n const downloadHref = $('#download').attr('href');\n const download = downloadHref\n ? downloadHref + '&k=' + Math.floor(Math.random() * (15 - 10 + 1) + 10)\n : '';\n\n return {\n creator: global.creator,\n status: 200,\n result: { filename, mimetype, download },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n}\n","import crypto from 'crypto';\n\nexport default class Generator {\n generateTimeStampYoutubeDL(): string {\n return Date.now().toString();\n }\n\n generateFooterYoutubeDL(timestamp: string, link: string): string {\n const locale = 'en';\n const secretKey = '6HTugjCXxR';\n const input = link + locale + timestamp + secretKey;\n const hash = crypto.createHash('md5').update(input).digest('hex');\n return hash;\n }\n}\n","import axios, { AxiosResponse } from 'axios';\nimport * as cheerio from 'cheerio';\nimport {\n ApiResponse,\n SfileSearchResult,\n WallpaperResult,\n WikimediaResult,\n YtPlayResult,\n YtSearchResult,\n} from '../../types/index.js';\n\ndeclare global {\n // eslint-disable-next-line no-var\n var creator: string;\n}\n\nglobal.creator = '@abotscraper – ahmuq';\n\ninterface YtPlayConfig {\n k_query: string;\n k_page: string;\n q_auto: number;\n hl?: string;\n}\n\ninterface ConvertConfig {\n vid: string;\n k: string;\n}\n\nexport default class Search {\n async sfileSearch(\n query: string,\n page: number = 1\n ): Promise<ApiResponse<SfileSearchResult[]>> {\n try {\n const response: AxiosResponse = await axios.get(\n `https://sfile.mobi/search.php?q=${query}&page=${page}`,\n {\n headers: {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n Referer: 'https://sfile.mobi/',\n 'Accept-Language': 'en-US,en;q=0.9',\n },\n }\n );\n const $ = cheerio.load(response.data);\n const results: SfileSearchResult[] = [];\n\n $('div.list').each(function () {\n const title = $(this).find('a').text();\n const sizeText = $(this).text().trim().split('(')[1];\n const link = $(this).find('a').attr('href');\n\n if (link && sizeText) {\n results.push({\n title,\n size: sizeText.replace(')', ''),\n link\n });\n }\n });\n\n return {\n creator: global.creator,\n status: 200,\n result: results,\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error'\n };\n }\n }\n\n async ytSearch(query: string): Promise<ApiResponse<YtSearchResult[]>> {\n try {\n const headers = {\n accept: \"*/*\",\n \"accept-language\": \"en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6\",\n priority: \"u=1, i\",\n \"sec-ch-ua\":\n '\"Microsoft Edge\";v=\"137\", \"Chromium\";v=\"137\", \"Not/A)Brand\";v=\"24\"',\n \"sec-ch-ua-mobile\": \"?0\",\n \"sec-ch-ua-platform\": '\"Windows\"',\n \"sec-fetch-dest\": \"empty\",\n \"sec-fetch-mode\": \"cors\",\n \"sec-fetch-site\": \"cross-site\",\n }\n const response: AxiosResponse = await axios.get(\n `https://line.1010diy.com/web/free-mp3-finder/query?q=${encodeURIComponent(query)}&type=youtube&pageToken=`,\n { headers }\n );\n\n const data = response.data;\n const videos = data?.data?.items || [];\n const results: YtSearchResult[] = videos.map((item: {\n title: string;\n thumbnail: string;\n url: string;\n }) => ({\n title: item.title,\n thumbnail: item.thumbnail,\n url: item.url\n }));\n\n return {\n creator: global.creator,\n status: 200,\n result: results,\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error'\n };\n }\n }\n\n ytPlay = (text: string): Promise<ApiResponse<YtPlayResult>> => {\n return new Promise((resolve, reject) => {\n const configd: YtPlayConfig = {\n k_query: text,\n k_page: 'mp3',\n q_auto: 1,\n };\n\n const headerss = {\n 'sec-ch-ua':\n '\" Not;A Brand\";v=\"99\", \"Google Chrome\";v=\"91\", \"Chromium\";v=\"91\"',\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n Cookie:\n 'PHPSESSID=6jo2ggb63g5mjvgj45f612ogt7; _ga=GA1.2.405896420.1625200423; _gid=GA1.2.2135261581.1625200423; _PN_SBSCRBR_FALLBACK_DENIED=1625200785624; MarketGidStorage={\"0\":{},\"C702514\":{\"page\":5,\"time\":1625200846733}}',\n };\n\n axios('https://www.y2mate.com/mates/analyzeV2/ajax', {\n method: 'POST',\n data: new URLSearchParams(Object.entries(configd)),\n headers: headerss,\n })\n .then(({ data }) => {\n const v = data.vitems;\n const v2 = v[Math.floor(Math.random() * v.length)].v;\n const url = 'https://www.youtube.com/watch?v=' + v2;\n\n const config: YtPlayConfig = {\n k_query: 'https://www.youtube.be/' + url,\n k_page: 'mp3',\n hl: 'en',\n q_auto: 1,\n };\n\n\n axios('https://www.y2mate.com/mates/en68/analyze/ajax', {\n method: 'POST',\n data: new URLSearchParams({\n url: 'https://www.youtube.be/' + url,\n q_auto: '0',\n ajax: '1',\n }),\n headers: headerss,\n }).then(({ data }) => {\n const $ = cheerio.load(data.result);\n const img = $('div.thumbnail.cover > a > img').attr('src');\n\n axios('https://www.y2mate.com/mates/analyzeV2/ajax', {\n method: 'POST',\n data: new URLSearchParams(Object.entries(config)),\n headers: headerss,\n }).then(({ data }) => {\n const convertConfig: ConvertConfig = {\n vid: data.vid,\n k: data.links.mp3.mp3128.k,\n };\n\n const size = data.links.mp3.mp3128.size;\n\n axios('https://www.y2mate.com/mates/convertV2/index', {\n method: 'POST',\n data: new URLSearchParams(Object.entries(convertConfig)),\n headers: headerss,\n })\n .then((response) => {\n resolve({\n creator: global.creator,\n status: 200,\n result: {\n status: response.data.status,\n title: response.data.title,\n ftype: response.data.ftype,\n thumb: img || '',\n size_mp3: size,\n link: response.data.dlink,\n },\n });\n })\n .catch(reject);\n });\n });\n })\n .catch(reject);\n });\n };\n\n wallpaper = (\n title: string,\n page: string = '1'\n ): Promise<ApiResponse<WallpaperResult[]>> => {\n return new Promise((resolve, reject) => {\n axios\n .get(\n `https://www.besthdwallpaper.com/search?CurrentPage=${page}&q=${title}`\n )\n .then(({ data }) => {\n const $ = cheerio.load(data);\n const hasil: WallpaperResult[] = [];\n\n $('div.grid-item').each(function (_, b) {\n const titleAttr = $(b).find('p[title]').attr('title');\n const typeText = $(b).find('div.info > a:nth-child(2)').text();\n const hrefAttr = $(b).find('a').attr('href');\n const imgSrc = $(b).find('picture > img').attr('src');\n const srcset1 = $(b)\n .find('picture > source:nth-child(1)')\n .attr('srcset');\n const srcset2 = $(b)\n .find('picture > source:nth-child(2)')\n .attr('srcset');\n\n if (titleAttr && hrefAttr) {\n hasil.push({\n title: titleAttr.trim(),\n type: typeText?.trim() || '',\n source: 'https://www.besthdwallpaper.com' + hrefAttr,\n image: [imgSrc || '', srcset1 || '', srcset2 || ''],\n });\n }\n });\n\n resolve({ creator: global.creator, status: 200, result: hasil });\n })\n .catch((error) => {\n reject(error);\n });\n });\n };\n\n wikimedia = (title: string): Promise<ApiResponse<WikimediaResult[]>> => {\n return new Promise((resolve, reject) => {\n axios\n .get(\n `https://commons.wikimedia.org/w/index.php?search=${title}&title=Special:MediaSearch&go=Go&type=image`\n )\n .then((res) => {\n const $ = cheerio.load(res.data);\n const hasil: WikimediaResult[] = [];\n\n $('.sdms-search-results__list-wrapper > div > a').each(function (\n _,\n b\n ) {\n const altText = $(b).find('img').attr('alt');\n const href = $(b).attr('href');\n const dataSrc = $(b).find('img').attr('data-src');\n const src = $(b).find('img').attr('src');\n\n if (altText && href) {\n hasil.push({\n title: altText,\n source: href,\n image: dataSrc || src || '',\n });\n }\n });\n\n resolve({ creator: global.creator, status: 200, result: hasil });\n })\n .catch(reject);\n });\n };\n}\n"],"mappings":"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","names":["crypto","axios","qs","import_axios","cheerio","axios","data"]}
|
package/dist/index.d.cts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
interface ApiResponse<T =
|
1
|
+
interface ApiResponse<T = unknown> {
|
2
2
|
creator: string;
|
3
3
|
status: number | boolean;
|
4
4
|
result?: T;
|
@@ -18,7 +18,7 @@ interface TikTokResult {
|
|
18
18
|
|
19
19
|
interface InstagramUserInfo {
|
20
20
|
username: string;
|
21
|
-
[key: string]:
|
21
|
+
[key: string]: unknown;
|
22
22
|
}
|
23
23
|
|
24
24
|
interface InstagramStoriesResult {
|
@@ -78,7 +78,7 @@ interface YoutubeResultV2 {
|
|
78
78
|
downloadLinks: Record<string, string>;
|
79
79
|
video: string | null;
|
80
80
|
audio: string | null;
|
81
|
-
formats:
|
81
|
+
formats: unknown[];
|
82
82
|
}
|
83
83
|
|
84
84
|
interface SfileDownloadResult {
|
package/dist/index.d.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
interface ApiResponse<T =
|
1
|
+
interface ApiResponse<T = unknown> {
|
2
2
|
creator: string;
|
3
3
|
status: number | boolean;
|
4
4
|
result?: T;
|
@@ -18,7 +18,7 @@ interface TikTokResult {
|
|
18
18
|
|
19
19
|
interface InstagramUserInfo {
|
20
20
|
username: string;
|
21
|
-
[key: string]:
|
21
|
+
[key: string]: unknown;
|
22
22
|
}
|
23
23
|
|
24
24
|
interface InstagramStoriesResult {
|
@@ -78,7 +78,7 @@ interface YoutubeResultV2 {
|
|
78
78
|
downloadLinks: Record<string, string>;
|
79
79
|
video: string | null;
|
80
80
|
audio: string | null;
|
81
|
-
formats:
|
81
|
+
formats: unknown[];
|
82
82
|
}
|
83
83
|
|
84
84
|
interface SfileDownloadResult {
|
package/dist/index.js
CHANGED
@@ -42,6 +42,9 @@ var Downloader = class {
|
|
42
42
|
const $ = cheerio.load(response.data);
|
43
43
|
const videoUrl = $("video source").attr("src");
|
44
44
|
const imageUrl = $("img").attr("src");
|
45
|
+
if (!videoUrl && !imageUrl) {
|
46
|
+
throw new Error("No video or image found in the response.");
|
47
|
+
}
|
45
48
|
return {
|
46
49
|
creator: global.creator,
|
47
50
|
status: 200,
|
@@ -80,6 +83,9 @@ var Downloader = class {
|
|
80
83
|
const title = $("p.maintext").text().trim();
|
81
84
|
const audio = $("a.download_link.music").attr("href");
|
82
85
|
const video = $("a.download_link.without_watermark").attr("href");
|
86
|
+
if (!title || !video) {
|
87
|
+
throw new Error("Failed to extract video or title from response.");
|
88
|
+
}
|
83
89
|
return {
|
84
90
|
creator: global.creator,
|
85
91
|
status: 200,
|
@@ -98,18 +104,28 @@ var Downloader = class {
|
|
98
104
|
}
|
99
105
|
}
|
100
106
|
async igstory(username) {
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
107
|
+
const payload = {
|
108
|
+
username
|
109
|
+
};
|
110
|
+
const headers = {
|
111
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/",
|
112
|
+
accept: "application/json, text/plain, */*",
|
113
|
+
"accept-language": "en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6",
|
114
|
+
"content-type": "application/json",
|
115
|
+
priority: "u=1, i",
|
116
|
+
"sec-ch-ua": '"Microsoft Edge";v="137", "Chromium";v="137", "Not/A)Brand";v="24"',
|
117
|
+
"sec-ch-ua-mobile": "?0",
|
118
|
+
"sec-ch-ua-platform": '"Windows"',
|
119
|
+
"sec-fetch-dest": "empty",
|
120
|
+
"sec-fetch-mode": "cors",
|
121
|
+
"sec-fetch-site": "same-origin",
|
122
|
+
Referer: "https://storyviewer.com/",
|
123
|
+
"Referrer-Policy": "strict-origin-when-cross-origin"
|
124
|
+
};
|
106
125
|
try {
|
107
|
-
const
|
108
|
-
|
109
|
-
|
110
|
-
const encodedParameter = encodeParameter(username);
|
111
|
-
const response = await axios.get(
|
112
|
-
`https://instanavigation.net/api/v1/stories/${encodedParameter}`,
|
126
|
+
const response = await axios.post(
|
127
|
+
`https://storyviewer.com/api/data`,
|
128
|
+
payload,
|
113
129
|
{ headers }
|
114
130
|
);
|
115
131
|
const data = response.data;
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/scraper/downloader.ts","../src/utils/generator.ts","../src/scraper/search.ts","../src/index.ts"],"sourcesContent":["import axios, { AxiosResponse } from 'axios';\nimport * as cheerio from 'cheerio';\nimport qs from 'qs';\nimport {\n ApiResponse,\n FacebookResult,\n InstagramMediaItem,\n InstagramStoriesResult,\n SfileDownloadResult,\n TikTokResult,\n YoutubeResult,\n YoutubeResultV2,\n} from '../../types/index.js';\nimport Generator from '../utils/generator.js';\n\ninterface StoryItem {\n source: string;\n [key: string]: unknown;\n}\n\ninterface InstagramApiResponse {\n stories: StoryItem[];\n user_info: {\n username: string;\n [key: string]: unknown;\n };\n}\n\ninterface FileItem {\n __type: string;\n video_url?: string;\n download_url?: string;\n [key: string]: unknown;\n}\n\ninterface InstagramFilesResponse {\n files: FileItem[];\n}\n\ninterface YouTubeFormat {\n quality: string;\n video_url: string;\n [key: string]: unknown;\n}\n\ninterface YouTubeMedia {\n media_type: string;\n preview_url?: string;\n resource_url?: string;\n formats?: YouTubeFormat[];\n [key: string]: unknown;\n}\n\ninterface YouTubeApiResponse {\n text: string;\n medias: YouTubeMedia[];\n}\n\ndeclare global {\n // eslint-disable-next-line no-var\n var creator: string;\n}\n\nglobal.creator = '@abotscraper – ahmuq';\n\nexport default class Downloader {\n private generator: Generator;\n\n constructor() {\n this.generator = new Generator();\n }\n\n async facebook(url: string): Promise<ApiResponse<FacebookResult>> {\n try {\n const headers = {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 Edg/134.0.0.0',\n Origin: 'https://www.fdown.world',\n referer: 'https://www.fdown.world/',\n 'x-requested-with': 'XMLHttpRequest',\n Cookie: 'codehap_domain=www.fdown.world',\n };\n\n const data = new URLSearchParams({ codehap_link: url, codehap: 'true' });\n\n const response: AxiosResponse = await axios.post(\n 'https://www.fdown.world/result.php',\n data,\n { headers }\n );\n\n const $ = cheerio.load(response.data);\n const videoUrl = $('video source').attr('src');\n const imageUrl = $('img').attr('src');\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n thumbnail: imageUrl || '',\n videoUrl: videoUrl || '',\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async tiktokDownloader(url: string): Promise<ApiResponse<TikTokResult>> {\n try {\n const headers = {\n 'sec-ch-ua':\n '\" Not;A Brand\";v=\"99\", \"Google Chrome\";v=\"91\", \"Chromium\";v=\"91\"',\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n };\n\n const data = new URLSearchParams({\n id: url,\n locale: 'en',\n tt: 'WmNzZDk_',\n });\n\n const response: AxiosResponse = await axios.post(\n 'https://ssstik.io/abc?url=dl',\n data,\n {\n headers,\n }\n );\n\n const $ = cheerio.load(response.data);\n const title = $('p.maintext').text().trim();\n const audio = $('a.download_link.music').attr('href');\n const video = $('a.download_link.without_watermark').attr('href');\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n title: title,\n video: video || '',\n audio: audio || '',\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async igstory(username: string): Promise<ApiResponse<InstagramStoriesResult>> {\n function encodeParameter(username: string): string {\n const parameter = `-1::${username}::rJP2tBRKf6ktbRqPUBtRE9klgBWb7d`;\n const encoded = Buffer.from(parameter).toString('base64');\n return encoded\n .replace(/[+]/g, '.')\n .replace(/[/]/g, '_')\n .replace(/[=]/g, '-');\n }\n\n try {\n const headers = {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/',\n };\n\n const encodedParameter = encodeParameter(username);\n const response: AxiosResponse = await axios.get(\n `https://instanavigation.net/api/v1/stories/${encodedParameter}`,\n { headers }\n );\n\n const data: InstagramApiResponse = response.data;\n const sources = data.stories.map((story: StoryItem) => story.source);\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n user_info: data.user_info,\n links: sources,\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async instagram(url: string): Promise<ApiResponse<InstagramMediaItem[]>> {\n try {\n const config = new URLSearchParams({\n url: url,\n new: '2',\n lang: 'en',\n app: '',\n });\n\n const headers = {\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n };\n\n const response: AxiosResponse<InstagramFilesResponse> = await axios.post(\n 'https://snapinsta.app/get-data.php',\n config,\n { headers }\n );\n\n const downloadLinks = response.data.files\n .map((file: FileItem) =>\n file.__type === 'GraphVideo'\n ? { type: 'video' as const, url: file.video_url || '' }\n : file.__type === 'GraphImage'\n ? { type: 'image' as const, url: file.download_url || '' }\n : null\n )\n .filter((link: InstagramMediaItem | null): link is InstagramMediaItem => link !== null);\n\n return {\n creator: global.creator,\n status: 200,\n result: downloadLinks,\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async youtubeDownloader(url: string): Promise<ApiResponse<YoutubeResult>> {\n try {\n const config = qs.stringify({\n url: url,\n q_auto: 0,\n ajax: 1,\n lang: 'en',\n });\n\n const headers = {\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n };\n\n const response: AxiosResponse = await axios.post(\n 'https://yt1s.net/ajax?retry=undefined&platform=youtube',\n config,\n { headers }\n );\n\n const $ = cheerio.load(response.data.result);\n const title = $('.caption b').text().trim();\n const downloadLinks = {\n '480p': $('a[data-fquality=\"480p\"]').attr('href') || '',\n '720p': $('a[data-fquality=\"720p\"]').attr('href') || '',\n '1080p': $('a[data-fquality=\"1080p\"]').attr('href') || '',\n };\n const thumbnailUrl = $('.thumbnail.cover img').attr('src');\n\n const mp3ConvertElement = $('#convert-mp3 a');\n const hrefAttr = mp3ConvertElement.attr('href');\n\n if (!hrefAttr) throw new Error('MP3 conversion link not found.');\n\n const mp3ConvertTokenMatch = hrefAttr.match(\n /mp3_convert_task\\('(\\d+)',\\s*'([^']+)'\\)/\n );\n\n if (!mp3ConvertTokenMatch)\n throw new Error('MP3 conversion token not found.');\n\n const mp3ConvertToken = mp3ConvertTokenMatch[2];\n\n const mp3Response: AxiosResponse = await axios.get(\n `https://api.fabdl.com/youtube/mp3-convert-task?token=${mp3ConvertToken}`\n );\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n title: title,\n thumbnail: thumbnailUrl || '',\n downloadLinks: downloadLinks,\n mp3DownloadUrl: `https://api.fabdl.com${mp3Response.data.result.download_url}`,\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async youtubeDownloaderV2(url: string): Promise<ApiResponse<YoutubeResultV2>> {\n try {\n const timestamp = this.generator.generateTimeStampYoutubeDL();\n const footer = this.generator.generateFooterYoutubeDL(timestamp, url);\n\n const payload = {\n link: url,\n };\n\n const headers = {\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n 'g-footer': footer,\n 'g-timestamp': timestamp,\n accept: '*/*',\n 'accept-language': 'en',\n 'content-type': 'application/json',\n priority: 'u=1, i',\n 'sec-ch-ua':\n '\"Microsoft Edge\";v=\"137\", \"Chromium\";v=\"137\", \"Not/A)Brand\";v=\"24\"',\n 'sec-ch-ua-mobile': '?0',\n 'sec-ch-ua-platform': '\"Windows\"',\n 'sec-fetch-dest': 'empty',\n 'sec-fetch-mode': 'cors',\n 'sec-fetch-site': 'same-site',\n Referer: 'https://snapany.com/',\n 'Referrer-Policy': 'strict-origin-when-cross-origin',\n };\n\n const response: AxiosResponse<YouTubeApiResponse> = await axios.post(\n 'https://api.snapany.com/v1/extract',\n payload,\n { headers }\n );\n const data = response.data;\n\n const videoMedia = data.medias.find(\n (media: YouTubeMedia) => media.media_type === 'video'\n );\n const audioMedia = data.medias.find(\n (media: YouTubeMedia) => media.media_type === 'audio'\n );\n\n const downloadLinks: Record<string, string> = {};\n if (videoMedia && videoMedia.formats) {\n videoMedia.formats.forEach((format: YouTubeFormat) => {\n const qualityKey = `${format.quality}p`;\n downloadLinks[qualityKey] = format.video_url;\n });\n }\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n title: data.text,\n thumbnail: videoMedia?.preview_url || null,\n downloadLinks: downloadLinks,\n video: videoMedia?.resource_url || null,\n audio: audioMedia?.resource_url || null,\n formats: videoMedia?.formats || [],\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async sfileDownloader(url: string): Promise<ApiResponse<SfileDownloadResult>> {\n try {\n const response: AxiosResponse = await axios.get(url, {\n headers: {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n Referer: 'https://sfile.mobi/',\n 'Accept-Language': 'en-US,en;q=0.9',\n },\n });\n\n const $ = cheerio.load(response.data);\n const filename = $('.intro-container img').attr('alt') || '';\n const mimetype = $('div.list').text().split(' - ')[1]?.split('\\n')[0] || '';\n const downloadHref = $('#download').attr('href');\n const download = downloadHref\n ? downloadHref + '&k=' + Math.floor(Math.random() * (15 - 10 + 1) + 10)\n : '';\n\n return {\n creator: global.creator,\n status: 200,\n result: { filename, mimetype, download },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n}\n","import crypto from 'crypto';\n\nexport default class Generator {\n generateTimeStampYoutubeDL(): string {\n return Date.now().toString();\n }\n\n generateFooterYoutubeDL(timestamp: string, link: string): string {\n const locale = 'en';\n const secretKey = '6HTugjCXxR';\n const input = link + locale + timestamp + secretKey;\n const hash = crypto.createHash('md5').update(input).digest('hex');\n return hash;\n }\n}\n","import axios, { AxiosResponse } from 'axios';\nimport * as cheerio from 'cheerio';\nimport {\n ApiResponse,\n SfileSearchResult,\n WallpaperResult,\n WikimediaResult,\n YtPlayResult,\n YtSearchResult,\n} from '../../types/index.js';\n\ndeclare global {\n // eslint-disable-next-line no-var\n var creator: string;\n}\n\nglobal.creator = '@abotscraper – ahmuq';\n\ninterface YtPlayConfig {\n k_query: string;\n k_page: string;\n q_auto: number;\n hl?: string;\n}\n\ninterface ConvertConfig {\n vid: string;\n k: string;\n}\n\nexport default class Search {\n async sfileSearch(\n query: string,\n page: number = 1\n ): Promise<ApiResponse<SfileSearchResult[]>> {\n try {\n const response: AxiosResponse = await axios.get(\n `https://sfile.mobi/search.php?q=${query}&page=${page}`,\n {\n headers: {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n Referer: 'https://sfile.mobi/',\n 'Accept-Language': 'en-US,en;q=0.9',\n },\n }\n );\n const $ = cheerio.load(response.data);\n const results: SfileSearchResult[] = [];\n\n $('div.list').each(function () {\n const title = $(this).find('a').text();\n const sizeText = $(this).text().trim().split('(')[1];\n const link = $(this).find('a').attr('href');\n\n if (link && sizeText) {\n results.push({\n title,\n size: sizeText.replace(')', ''),\n link\n });\n }\n });\n\n return {\n creator: global.creator,\n status: 200,\n result: results,\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error'\n };\n }\n }\n\n async ytSearch(query: string): Promise<ApiResponse<YtSearchResult[]>> {\n try {\n const headers = {\n accept: \"*/*\",\n \"accept-language\": \"en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6\",\n priority: \"u=1, i\",\n \"sec-ch-ua\":\n '\"Microsoft Edge\";v=\"137\", \"Chromium\";v=\"137\", \"Not/A)Brand\";v=\"24\"',\n \"sec-ch-ua-mobile\": \"?0\",\n \"sec-ch-ua-platform\": '\"Windows\"',\n \"sec-fetch-dest\": \"empty\",\n \"sec-fetch-mode\": \"cors\",\n \"sec-fetch-site\": \"cross-site\",\n }\n const response: AxiosResponse = await axios.get(\n `https://line.1010diy.com/web/free-mp3-finder/query?q=${encodeURIComponent(query)}&type=youtube&pageToken=`,\n { headers }\n );\n\n const data = response.data;\n const videos = data?.data?.items || [];\n const results: YtSearchResult[] = videos.map((item: {\n title: string;\n thumbnail: string;\n url: string;\n }) => ({\n title: item.title,\n thumbnail: item.thumbnail,\n url: item.url\n }));\n\n return {\n creator: global.creator,\n status: 200,\n result: results,\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error'\n };\n }\n }\n\n ytPlay = (text: string): Promise<ApiResponse<YtPlayResult>> => {\n return new Promise((resolve, reject) => {\n const configd: YtPlayConfig = {\n k_query: text,\n k_page: 'mp3',\n q_auto: 1,\n };\n\n const headerss = {\n 'sec-ch-ua':\n '\" Not;A Brand\";v=\"99\", \"Google Chrome\";v=\"91\", \"Chromium\";v=\"91\"',\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n Cookie:\n 'PHPSESSID=6jo2ggb63g5mjvgj45f612ogt7; _ga=GA1.2.405896420.1625200423; _gid=GA1.2.2135261581.1625200423; _PN_SBSCRBR_FALLBACK_DENIED=1625200785624; MarketGidStorage={\"0\":{},\"C702514\":{\"page\":5,\"time\":1625200846733}}',\n };\n\n axios('https://www.y2mate.com/mates/analyzeV2/ajax', {\n method: 'POST',\n data: new URLSearchParams(Object.entries(configd)),\n headers: headerss,\n })\n .then(({ data }) => {\n const v = data.vitems;\n const v2 = v[Math.floor(Math.random() * v.length)].v;\n const url = 'https://www.youtube.com/watch?v=' + v2;\n\n const config: YtPlayConfig = {\n k_query: 'https://www.youtube.be/' + url,\n k_page: 'mp3',\n hl: 'en',\n q_auto: 1,\n };\n\n\n axios('https://www.y2mate.com/mates/en68/analyze/ajax', {\n method: 'POST',\n data: new URLSearchParams({\n url: 'https://www.youtube.be/' + url,\n q_auto: '0',\n ajax: '1',\n }),\n headers: headerss,\n }).then(({ data }) => {\n const $ = cheerio.load(data.result);\n const img = $('div.thumbnail.cover > a > img').attr('src');\n\n axios('https://www.y2mate.com/mates/analyzeV2/ajax', {\n method: 'POST',\n data: new URLSearchParams(Object.entries(config)),\n headers: headerss,\n }).then(({ data }) => {\n const convertConfig: ConvertConfig = {\n vid: data.vid,\n k: data.links.mp3.mp3128.k,\n };\n\n const size = data.links.mp3.mp3128.size;\n\n axios('https://www.y2mate.com/mates/convertV2/index', {\n method: 'POST',\n data: new URLSearchParams(Object.entries(convertConfig)),\n headers: headerss,\n })\n .then((response) => {\n resolve({\n creator: global.creator,\n status: 200,\n result: {\n status: response.data.status,\n title: response.data.title,\n ftype: response.data.ftype,\n thumb: img || '',\n size_mp3: size,\n link: response.data.dlink,\n },\n });\n })\n .catch(reject);\n });\n });\n })\n .catch(reject);\n });\n };\n\n wallpaper = (\n title: string,\n page: string = '1'\n ): Promise<ApiResponse<WallpaperResult[]>> => {\n return new Promise((resolve, reject) => {\n axios\n .get(\n `https://www.besthdwallpaper.com/search?CurrentPage=${page}&q=${title}`\n )\n .then(({ data }) => {\n const $ = cheerio.load(data);\n const hasil: WallpaperResult[] = [];\n\n $('div.grid-item').each(function (_, b) {\n const titleAttr = $(b).find('p[title]').attr('title');\n const typeText = $(b).find('div.info > a:nth-child(2)').text();\n const hrefAttr = $(b).find('a').attr('href');\n const imgSrc = $(b).find('picture > img').attr('src');\n const srcset1 = $(b)\n .find('picture > source:nth-child(1)')\n .attr('srcset');\n const srcset2 = $(b)\n .find('picture > source:nth-child(2)')\n .attr('srcset');\n\n if (titleAttr && hrefAttr) {\n hasil.push({\n title: titleAttr.trim(),\n type: typeText?.trim() || '',\n source: 'https://www.besthdwallpaper.com' + hrefAttr,\n image: [imgSrc || '', srcset1 || '', srcset2 || ''],\n });\n }\n });\n\n resolve({ creator: global.creator, status: 200, result: hasil });\n })\n .catch((error) => {\n reject(error);\n });\n });\n };\n\n wikimedia = (title: string): Promise<ApiResponse<WikimediaResult[]>> => {\n return new Promise((resolve, reject) => {\n axios\n .get(\n `https://commons.wikimedia.org/w/index.php?search=${title}&title=Special:MediaSearch&go=Go&type=image`\n )\n .then((res) => {\n const $ = cheerio.load(res.data);\n const hasil: WikimediaResult[] = [];\n\n $('.sdms-search-results__list-wrapper > div > a').each(function (\n _,\n b\n ) {\n const altText = $(b).find('img').attr('alt');\n const href = $(b).attr('href');\n const dataSrc = $(b).find('img').attr('data-src');\n const src = $(b).find('img').attr('src');\n\n if (altText && href) {\n hasil.push({\n title: altText,\n source: href,\n image: dataSrc || src || '',\n });\n }\n });\n\n resolve({ creator: global.creator, status: 200, result: hasil });\n })\n .catch(reject);\n });\n };\n}\n","import Downloader from './scraper/downloader.js';\nimport Search from './scraper/search.js';\n\nconst downloader = new Downloader();\nconst search = new Search();\n\nexport default {\n downloader,\n search,\n};\n\nexport { Downloader, downloader, Search, search };\n"],"mappings":"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","names":["username","axios","cheerio","data"]}
|
1
|
+
{"version":3,"sources":["../src/scraper/downloader.ts","../src/utils/generator.ts","../src/scraper/search.ts","../src/index.ts"],"sourcesContent":["import axios, { AxiosResponse } from 'axios';\nimport * as cheerio from 'cheerio';\nimport qs from 'qs';\nimport {\n ApiResponse,\n FacebookResult,\n InstagramMediaItem,\n InstagramStoriesResult,\n SfileDownloadResult,\n TikTokResult,\n YoutubeResult,\n YoutubeResultV2,\n} from '../../types/index.js';\nimport Generator from '../utils/generator.js';\n\ninterface StoryItem {\n source: string;\n [key: string]: unknown;\n}\n\ninterface InstagramApiResponse {\n stories: StoryItem[];\n user_info: {\n username: string;\n [key: string]: unknown;\n };\n}\n\ninterface FileItem {\n __type: string;\n video_url?: string;\n download_url?: string;\n [key: string]: unknown;\n}\n\ninterface InstagramFilesResponse {\n files: FileItem[];\n}\n\ninterface YouTubeFormat {\n quality: string;\n video_url: string;\n [key: string]: unknown;\n}\n\ninterface YouTubeMedia {\n media_type: string;\n preview_url?: string;\n resource_url?: string;\n formats?: YouTubeFormat[];\n [key: string]: unknown;\n}\n\ninterface YouTubeApiResponse {\n text: string;\n medias: YouTubeMedia[];\n}\n\ndeclare global {\n // eslint-disable-next-line no-var\n var creator: string;\n}\n\nglobal.creator = '@abotscraper – ahmuq';\n\nexport default class Downloader {\n private generator: Generator;\n\n constructor() {\n this.generator = new Generator();\n }\n\n async facebook(url: string): Promise<ApiResponse<FacebookResult>> {\n try {\n const headers = {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 Edg/134.0.0.0',\n Origin: 'https://www.fdown.world',\n referer: 'https://www.fdown.world/',\n 'x-requested-with': 'XMLHttpRequest',\n Cookie: 'codehap_domain=www.fdown.world',\n };\n\n const data = new URLSearchParams({ codehap_link: url, codehap: 'true' });\n\n const response: AxiosResponse = await axios.post(\n 'https://www.fdown.world/result.php',\n data,\n { headers }\n );\n\n const $ = cheerio.load(response.data);\n const videoUrl = $('video source').attr('src');\n const imageUrl = $('img').attr('src');\n\n if (!videoUrl && !imageUrl) {\n throw new Error('No video or image found in the response.');\n }\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n thumbnail: imageUrl || '',\n videoUrl: videoUrl || '',\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async tiktokDownloader(url: string): Promise<ApiResponse<TikTokResult>> {\n try {\n const headers = {\n 'sec-ch-ua':\n '\" Not;A Brand\";v=\"99\", \"Google Chrome\";v=\"91\", \"Chromium\";v=\"91\"',\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n };\n\n const data = new URLSearchParams({\n id: url,\n locale: 'en',\n tt: 'WmNzZDk_',\n });\n\n const response: AxiosResponse = await axios.post(\n 'https://ssstik.io/abc?url=dl',\n data,\n {\n headers,\n }\n );\n\n const $ = cheerio.load(response.data);\n const title = $('p.maintext').text().trim();\n const audio = $('a.download_link.music').attr('href');\n const video = $('a.download_link.without_watermark').attr('href');\n\n if (!title || !video) {\n throw new Error('Failed to extract video or title from response.');\n }\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n title: title,\n video: video || '',\n audio: audio || '',\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async igstory(username: string): Promise<ApiResponse<InstagramStoriesResult>> {\n const payload = {\n username: username,\n }\n const headers = {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/',\n accept: 'application/json, text/plain, */*',\n 'accept-language': 'en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6',\n 'content-type': 'application/json',\n priority: 'u=1, i',\n 'sec-ch-ua':\n '\"Microsoft Edge\";v=\"137\", \"Chromium\";v=\"137\", \"Not/A)Brand\";v=\"24\"',\n 'sec-ch-ua-mobile': '?0',\n 'sec-ch-ua-platform': '\"Windows\"',\n 'sec-fetch-dest': 'empty',\n 'sec-fetch-mode': 'cors',\n 'sec-fetch-site': 'same-origin',\n Referer: 'https://storyviewer.com/',\n 'Referrer-Policy': 'strict-origin-when-cross-origin',\n };\n try {\n const response: AxiosResponse = await axios.post(\n `https://storyviewer.com/api/data`,\n payload,\n { headers }\n );\n\n const data: InstagramApiResponse = response.data;\n const sources = data.stories.map((story: StoryItem) => story.source);\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n user_info: data.user_info,\n links: sources,\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async instagram(url: string): Promise<ApiResponse<InstagramMediaItem[]>> {\n try {\n const config = new URLSearchParams({\n url: url,\n new: '2',\n lang: 'en',\n app: '',\n });\n\n const headers = {\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n };\n\n const response: AxiosResponse<InstagramFilesResponse> = await axios.post(\n 'https://snapinsta.app/get-data.php',\n config,\n { headers }\n );\n\n const downloadLinks = response.data.files\n .map((file: FileItem) =>\n file.__type === 'GraphVideo'\n ? { type: 'video' as const, url: file.video_url || '' }\n : file.__type === 'GraphImage'\n ? { type: 'image' as const, url: file.download_url || '' }\n : null\n )\n .filter((link: InstagramMediaItem | null): link is InstagramMediaItem => link !== null);\n\n return {\n creator: global.creator,\n status: 200,\n result: downloadLinks,\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async youtubeDownloader(url: string): Promise<ApiResponse<YoutubeResult>> {\n try {\n const config = qs.stringify({\n url: url,\n q_auto: 0,\n ajax: 1,\n lang: 'en',\n });\n\n const headers = {\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n };\n\n const response: AxiosResponse = await axios.post(\n 'https://yt1s.net/ajax?retry=undefined&platform=youtube',\n config,\n { headers }\n );\n\n const $ = cheerio.load(response.data.result);\n const title = $('.caption b').text().trim();\n const downloadLinks = {\n '480p': $('a[data-fquality=\"480p\"]').attr('href') || '',\n '720p': $('a[data-fquality=\"720p\"]').attr('href') || '',\n '1080p': $('a[data-fquality=\"1080p\"]').attr('href') || '',\n };\n const thumbnailUrl = $('.thumbnail.cover img').attr('src');\n\n const mp3ConvertElement = $('#convert-mp3 a');\n const hrefAttr = mp3ConvertElement.attr('href');\n\n if (!hrefAttr) throw new Error('MP3 conversion link not found.');\n\n const mp3ConvertTokenMatch = hrefAttr.match(\n /mp3_convert_task\\('(\\d+)',\\s*'([^']+)'\\)/\n );\n\n if (!mp3ConvertTokenMatch)\n throw new Error('MP3 conversion token not found.');\n\n const mp3ConvertToken = mp3ConvertTokenMatch[2];\n\n const mp3Response: AxiosResponse = await axios.get(\n `https://api.fabdl.com/youtube/mp3-convert-task?token=${mp3ConvertToken}`\n );\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n title: title,\n thumbnail: thumbnailUrl || '',\n downloadLinks: downloadLinks,\n mp3DownloadUrl: `https://api.fabdl.com${mp3Response.data.result.download_url}`,\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async youtubeDownloaderV2(url: string): Promise<ApiResponse<YoutubeResultV2>> {\n try {\n const timestamp = this.generator.generateTimeStampYoutubeDL();\n const footer = this.generator.generateFooterYoutubeDL(timestamp, url);\n\n const payload = {\n link: url,\n };\n\n const headers = {\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n 'g-footer': footer,\n 'g-timestamp': timestamp,\n accept: '*/*',\n 'accept-language': 'en',\n 'content-type': 'application/json',\n priority: 'u=1, i',\n 'sec-ch-ua':\n '\"Microsoft Edge\";v=\"137\", \"Chromium\";v=\"137\", \"Not/A)Brand\";v=\"24\"',\n 'sec-ch-ua-mobile': '?0',\n 'sec-ch-ua-platform': '\"Windows\"',\n 'sec-fetch-dest': 'empty',\n 'sec-fetch-mode': 'cors',\n 'sec-fetch-site': 'same-site',\n Referer: 'https://snapany.com/',\n 'Referrer-Policy': 'strict-origin-when-cross-origin',\n };\n\n const response: AxiosResponse<YouTubeApiResponse> = await axios.post(\n 'https://api.snapany.com/v1/extract',\n payload,\n { headers }\n );\n const data = response.data;\n\n const videoMedia = data.medias.find(\n (media: YouTubeMedia) => media.media_type === 'video'\n );\n const audioMedia = data.medias.find(\n (media: YouTubeMedia) => media.media_type === 'audio'\n );\n\n const downloadLinks: Record<string, string> = {};\n if (videoMedia && videoMedia.formats) {\n videoMedia.formats.forEach((format: YouTubeFormat) => {\n const qualityKey = `${format.quality}p`;\n downloadLinks[qualityKey] = format.video_url;\n });\n }\n\n return {\n creator: global.creator,\n status: 200,\n result: {\n title: data.text,\n thumbnail: videoMedia?.preview_url || null,\n downloadLinks: downloadLinks,\n video: videoMedia?.resource_url || null,\n audio: audioMedia?.resource_url || null,\n formats: videoMedia?.formats || [],\n },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n\n async sfileDownloader(url: string): Promise<ApiResponse<SfileDownloadResult>> {\n try {\n const response: AxiosResponse = await axios.get(url, {\n headers: {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n Referer: 'https://sfile.mobi/',\n 'Accept-Language': 'en-US,en;q=0.9',\n },\n });\n\n const $ = cheerio.load(response.data);\n const filename = $('.intro-container img').attr('alt') || '';\n const mimetype = $('div.list').text().split(' - ')[1]?.split('\\n')[0] || '';\n const downloadHref = $('#download').attr('href');\n const download = downloadHref\n ? downloadHref + '&k=' + Math.floor(Math.random() * (15 - 10 + 1) + 10)\n : '';\n\n return {\n creator: global.creator,\n status: 200,\n result: { filename, mimetype, download },\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n}\n","import crypto from 'crypto';\n\nexport default class Generator {\n generateTimeStampYoutubeDL(): string {\n return Date.now().toString();\n }\n\n generateFooterYoutubeDL(timestamp: string, link: string): string {\n const locale = 'en';\n const secretKey = '6HTugjCXxR';\n const input = link + locale + timestamp + secretKey;\n const hash = crypto.createHash('md5').update(input).digest('hex');\n return hash;\n }\n}\n","import axios, { AxiosResponse } from 'axios';\nimport * as cheerio from 'cheerio';\nimport {\n ApiResponse,\n SfileSearchResult,\n WallpaperResult,\n WikimediaResult,\n YtPlayResult,\n YtSearchResult,\n} from '../../types/index.js';\n\ndeclare global {\n // eslint-disable-next-line no-var\n var creator: string;\n}\n\nglobal.creator = '@abotscraper – ahmuq';\n\ninterface YtPlayConfig {\n k_query: string;\n k_page: string;\n q_auto: number;\n hl?: string;\n}\n\ninterface ConvertConfig {\n vid: string;\n k: string;\n}\n\nexport default class Search {\n async sfileSearch(\n query: string,\n page: number = 1\n ): Promise<ApiResponse<SfileSearchResult[]>> {\n try {\n const response: AxiosResponse = await axios.get(\n `https://sfile.mobi/search.php?q=${query}&page=${page}`,\n {\n headers: {\n 'User-Agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n Referer: 'https://sfile.mobi/',\n 'Accept-Language': 'en-US,en;q=0.9',\n },\n }\n );\n const $ = cheerio.load(response.data);\n const results: SfileSearchResult[] = [];\n\n $('div.list').each(function () {\n const title = $(this).find('a').text();\n const sizeText = $(this).text().trim().split('(')[1];\n const link = $(this).find('a').attr('href');\n\n if (link && sizeText) {\n results.push({\n title,\n size: sizeText.replace(')', ''),\n link\n });\n }\n });\n\n return {\n creator: global.creator,\n status: 200,\n result: results,\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error'\n };\n }\n }\n\n async ytSearch(query: string): Promise<ApiResponse<YtSearchResult[]>> {\n try {\n const headers = {\n accept: \"*/*\",\n \"accept-language\": \"en-US,en;q=0.9,ar;q=0.8,id;q=0.7,vi;q=0.6\",\n priority: \"u=1, i\",\n \"sec-ch-ua\":\n '\"Microsoft Edge\";v=\"137\", \"Chromium\";v=\"137\", \"Not/A)Brand\";v=\"24\"',\n \"sec-ch-ua-mobile\": \"?0\",\n \"sec-ch-ua-platform\": '\"Windows\"',\n \"sec-fetch-dest\": \"empty\",\n \"sec-fetch-mode\": \"cors\",\n \"sec-fetch-site\": \"cross-site\",\n }\n const response: AxiosResponse = await axios.get(\n `https://line.1010diy.com/web/free-mp3-finder/query?q=${encodeURIComponent(query)}&type=youtube&pageToken=`,\n { headers }\n );\n\n const data = response.data;\n const videos = data?.data?.items || [];\n const results: YtSearchResult[] = videos.map((item: {\n title: string;\n thumbnail: string;\n url: string;\n }) => ({\n title: item.title,\n thumbnail: item.thumbnail,\n url: item.url\n }));\n\n return {\n creator: global.creator,\n status: 200,\n result: results,\n };\n } catch (error) {\n return {\n creator: global.creator,\n status: false,\n msg: error instanceof Error ? error.message : 'Unknown error'\n };\n }\n }\n\n ytPlay = (text: string): Promise<ApiResponse<YtPlayResult>> => {\n return new Promise((resolve, reject) => {\n const configd: YtPlayConfig = {\n k_query: text,\n k_page: 'mp3',\n q_auto: 1,\n };\n\n const headerss = {\n 'sec-ch-ua':\n '\" Not;A Brand\";v=\"99\", \"Google Chrome\";v=\"91\", \"Chromium\";v=\"91\"',\n 'user-agent':\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n Cookie:\n 'PHPSESSID=6jo2ggb63g5mjvgj45f612ogt7; _ga=GA1.2.405896420.1625200423; _gid=GA1.2.2135261581.1625200423; _PN_SBSCRBR_FALLBACK_DENIED=1625200785624; MarketGidStorage={\"0\":{},\"C702514\":{\"page\":5,\"time\":1625200846733}}',\n };\n\n axios('https://www.y2mate.com/mates/analyzeV2/ajax', {\n method: 'POST',\n data: new URLSearchParams(Object.entries(configd)),\n headers: headerss,\n })\n .then(({ data }) => {\n const v = data.vitems;\n const v2 = v[Math.floor(Math.random() * v.length)].v;\n const url = 'https://www.youtube.com/watch?v=' + v2;\n\n const config: YtPlayConfig = {\n k_query: 'https://www.youtube.be/' + url,\n k_page: 'mp3',\n hl: 'en',\n q_auto: 1,\n };\n\n\n axios('https://www.y2mate.com/mates/en68/analyze/ajax', {\n method: 'POST',\n data: new URLSearchParams({\n url: 'https://www.youtube.be/' + url,\n q_auto: '0',\n ajax: '1',\n }),\n headers: headerss,\n }).then(({ data }) => {\n const $ = cheerio.load(data.result);\n const img = $('div.thumbnail.cover > a > img').attr('src');\n\n axios('https://www.y2mate.com/mates/analyzeV2/ajax', {\n method: 'POST',\n data: new URLSearchParams(Object.entries(config)),\n headers: headerss,\n }).then(({ data }) => {\n const convertConfig: ConvertConfig = {\n vid: data.vid,\n k: data.links.mp3.mp3128.k,\n };\n\n const size = data.links.mp3.mp3128.size;\n\n axios('https://www.y2mate.com/mates/convertV2/index', {\n method: 'POST',\n data: new URLSearchParams(Object.entries(convertConfig)),\n headers: headerss,\n })\n .then((response) => {\n resolve({\n creator: global.creator,\n status: 200,\n result: {\n status: response.data.status,\n title: response.data.title,\n ftype: response.data.ftype,\n thumb: img || '',\n size_mp3: size,\n link: response.data.dlink,\n },\n });\n })\n .catch(reject);\n });\n });\n })\n .catch(reject);\n });\n };\n\n wallpaper = (\n title: string,\n page: string = '1'\n ): Promise<ApiResponse<WallpaperResult[]>> => {\n return new Promise((resolve, reject) => {\n axios\n .get(\n `https://www.besthdwallpaper.com/search?CurrentPage=${page}&q=${title}`\n )\n .then(({ data }) => {\n const $ = cheerio.load(data);\n const hasil: WallpaperResult[] = [];\n\n $('div.grid-item').each(function (_, b) {\n const titleAttr = $(b).find('p[title]').attr('title');\n const typeText = $(b).find('div.info > a:nth-child(2)').text();\n const hrefAttr = $(b).find('a').attr('href');\n const imgSrc = $(b).find('picture > img').attr('src');\n const srcset1 = $(b)\n .find('picture > source:nth-child(1)')\n .attr('srcset');\n const srcset2 = $(b)\n .find('picture > source:nth-child(2)')\n .attr('srcset');\n\n if (titleAttr && hrefAttr) {\n hasil.push({\n title: titleAttr.trim(),\n type: typeText?.trim() || '',\n source: 'https://www.besthdwallpaper.com' + hrefAttr,\n image: [imgSrc || '', srcset1 || '', srcset2 || ''],\n });\n }\n });\n\n resolve({ creator: global.creator, status: 200, result: hasil });\n })\n .catch((error) => {\n reject(error);\n });\n });\n };\n\n wikimedia = (title: string): Promise<ApiResponse<WikimediaResult[]>> => {\n return new Promise((resolve, reject) => {\n axios\n .get(\n `https://commons.wikimedia.org/w/index.php?search=${title}&title=Special:MediaSearch&go=Go&type=image`\n )\n .then((res) => {\n const $ = cheerio.load(res.data);\n const hasil: WikimediaResult[] = [];\n\n $('.sdms-search-results__list-wrapper > div > a').each(function (\n _,\n b\n ) {\n const altText = $(b).find('img').attr('alt');\n const href = $(b).attr('href');\n const dataSrc = $(b).find('img').attr('data-src');\n const src = $(b).find('img').attr('src');\n\n if (altText && href) {\n hasil.push({\n title: altText,\n source: href,\n image: dataSrc || src || '',\n });\n }\n });\n\n resolve({ creator: global.creator, status: 200, result: hasil });\n })\n .catch(reject);\n });\n };\n}\n","import Downloader from './scraper/downloader.js';\nimport Search from './scraper/search.js';\n\nconst downloader = new Downloader();\nconst search = new Search();\n\nexport default {\n downloader,\n search,\n};\n\nexport { Downloader, downloader, Search, search };\n"],"mappings":"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","names":["axios","cheerio","data"]}
|
package/package.json
CHANGED
package/types/index.d.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
export interface ApiResponse<T =
|
1
|
+
export interface ApiResponse<T = unknown> {
|
2
2
|
creator: string;
|
3
3
|
status: number | boolean;
|
4
4
|
result?: T;
|
@@ -18,7 +18,7 @@ export interface TikTokResult {
|
|
18
18
|
|
19
19
|
export interface InstagramUserInfo {
|
20
20
|
username: string;
|
21
|
-
[key: string]:
|
21
|
+
[key: string]: unknown;
|
22
22
|
}
|
23
23
|
|
24
24
|
export interface InstagramStoriesResult {
|
@@ -125,7 +125,7 @@ export interface YoutubeResultV2 {
|
|
125
125
|
downloadLinks: Record<string, string>;
|
126
126
|
video: string | null;
|
127
127
|
audio: string | null;
|
128
|
-
formats:
|
128
|
+
formats: unknown[];
|
129
129
|
}
|
130
130
|
|
131
131
|
export interface SfileDownloadResult {
|