@heavstaltech/api 1.2.6 → 1.3.7

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/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
  ![Build Status](https://img.shields.io/github/actions/workflow/status/HeavstalTech/heavstaltech-api/test.yml?style=flat-square&label=tests)
7
7
  ![License](https://img.shields.io/npm/l/@heavstaltech/api?style=flat-square)
8
8
 
9
- A powerful, all-in-one scraping and utility library built by **HEAVSTAL TECH**.
9
+ A Lightweight, powerful, all-in-one scraping and utility library built by **HEAVSTAL TECH**.
10
10
  This module provides easy access to media downloaders (TikTok, YouTube, Instagram, Facebook), search engines, and AI tools.
11
11
 
12
12
  It is designed to work seamlessly in both **CommonJS (`require`)** and **ES Modules (`import`)** environments.
@@ -269,19 +269,24 @@ console.log(`Artist: ${song.artist}`);
269
269
  console.log(`Lyrics:\n${song.lyrics}`);
270
270
  ```
271
271
 
272
- #### Zip to Text Extractor (LLM Context)
273
- Download a remote ZIP file (like a GitHub repo), extract all files recursively, and compile them into a single text buffer. Perfect for feeding codebases to AI & others.
272
+ #### Zip to Text Extractor
273
+ Download a remote ZIP file, extract recursively, and compile to a single text buffer.
274
274
 
275
275
  ```javascript
276
276
  import { tools } from '@heavstaltech/api';
277
277
  import fs from 'fs';
278
278
 
279
- // 1. Extract from URL
280
- const { buffer, filename } = await tools.unzip("https://github.com/octocat/Hello-World/archive/master.zip");
279
+ // Option 1: Text Only (Best for LLMs - Skips Images/PDFs)
280
+ const result = await tools.unzip("https://github.com/user/repo/archive/main.zip", {
281
+ includeBinary: false
282
+ });
283
+
284
+ // Option 2: Include Everything (Base64 encoded binary files)
285
+ const fullBackup = await tools.unzip("https://github.com/user/repo/archive/main.zip", {
286
+ includeBinary: true
287
+ });
281
288
 
282
- // 2. Save to file
283
- fs.writeFileSync(filename, buffer);
284
- console.log("Extraction complete!");
289
+ fs.writeFileSync(result.filename, result.buffer);
285
290
  ```
286
291
 
287
292
  ---
package/dist/index.d.mts CHANGED
@@ -83,6 +83,15 @@ interface LyricsResult {
83
83
  lyrics: string;
84
84
  }
85
85
 
86
+ interface UnzipOptions {
87
+ includeBinary?: boolean;
88
+ }
89
+ declare const unzipToText: (url: string, options?: UnzipOptions) => Promise<{
90
+ author: typeof AUTHOR;
91
+ buffer: Buffer;
92
+ filename: string;
93
+ }>;
94
+
86
95
  /**
87
96
  * Main TikTok Function
88
97
  * Supports: URL Download & Search Query
@@ -137,12 +146,6 @@ declare const chords: (query: string) => Promise<any>;
137
146
 
138
147
  declare const lyrics: (query: string) => Promise<LyricsResult>;
139
148
 
140
- declare const unzipToText: (url: string) => Promise<{
141
- author: typeof AUTHOR;
142
- buffer: Buffer;
143
- filename: string;
144
- }>;
145
-
146
149
  declare const downloader: {
147
150
  tiktok: (input: string) => Promise<TikTokResult>;
148
151
  tiktokSlide: (url: string) => Promise<TikTokResult>;
@@ -163,12 +166,12 @@ declare const search: {
163
166
  declare const tools: {
164
167
  ssweb: (url: string, device?: "desktop" | "tablet" | "phone") => Promise<Buffer>;
165
168
  remini: (imageUrl: string, method?: "enhance" | "recolor" | "dehaze") => Promise<Buffer>;
166
- unzipToText: (url: string) => Promise<{
169
+ unzipToText: (url: string, options?: UnzipOptions) => Promise<{
167
170
  author: typeof AUTHOR;
168
171
  buffer: Buffer;
169
172
  filename: string;
170
173
  }>;
171
- unzip: (url: string) => Promise<{
174
+ unzip: (url: string, options?: UnzipOptions) => Promise<{
172
175
  author: typeof AUTHOR;
173
176
  buffer: Buffer;
174
177
  filename: string;
@@ -202,12 +205,12 @@ declare const _default: {
202
205
  tools: {
203
206
  ssweb: (url: string, device?: "desktop" | "tablet" | "phone") => Promise<Buffer>;
204
207
  remini: (imageUrl: string, method?: "enhance" | "recolor" | "dehaze") => Promise<Buffer>;
205
- unzipToText: (url: string) => Promise<{
208
+ unzipToText: (url: string, options?: UnzipOptions) => Promise<{
206
209
  author: typeof AUTHOR;
207
210
  buffer: Buffer;
208
211
  filename: string;
209
212
  }>;
210
- unzip: (url: string) => Promise<{
213
+ unzip: (url: string, options?: UnzipOptions) => Promise<{
211
214
  author: typeof AUTHOR;
212
215
  buffer: Buffer;
213
216
  filename: string;
package/dist/index.d.ts CHANGED
@@ -83,6 +83,15 @@ interface LyricsResult {
83
83
  lyrics: string;
84
84
  }
85
85
 
86
+ interface UnzipOptions {
87
+ includeBinary?: boolean;
88
+ }
89
+ declare const unzipToText: (url: string, options?: UnzipOptions) => Promise<{
90
+ author: typeof AUTHOR;
91
+ buffer: Buffer;
92
+ filename: string;
93
+ }>;
94
+
86
95
  /**
87
96
  * Main TikTok Function
88
97
  * Supports: URL Download & Search Query
@@ -137,12 +146,6 @@ declare const chords: (query: string) => Promise<any>;
137
146
 
138
147
  declare const lyrics: (query: string) => Promise<LyricsResult>;
139
148
 
140
- declare const unzipToText: (url: string) => Promise<{
141
- author: typeof AUTHOR;
142
- buffer: Buffer;
143
- filename: string;
144
- }>;
145
-
146
149
  declare const downloader: {
147
150
  tiktok: (input: string) => Promise<TikTokResult>;
148
151
  tiktokSlide: (url: string) => Promise<TikTokResult>;
@@ -163,12 +166,12 @@ declare const search: {
163
166
  declare const tools: {
164
167
  ssweb: (url: string, device?: "desktop" | "tablet" | "phone") => Promise<Buffer>;
165
168
  remini: (imageUrl: string, method?: "enhance" | "recolor" | "dehaze") => Promise<Buffer>;
166
- unzipToText: (url: string) => Promise<{
169
+ unzipToText: (url: string, options?: UnzipOptions) => Promise<{
167
170
  author: typeof AUTHOR;
168
171
  buffer: Buffer;
169
172
  filename: string;
170
173
  }>;
171
- unzip: (url: string) => Promise<{
174
+ unzip: (url: string, options?: UnzipOptions) => Promise<{
172
175
  author: typeof AUTHOR;
173
176
  buffer: Buffer;
174
177
  filename: string;
@@ -202,12 +205,12 @@ declare const _default: {
202
205
  tools: {
203
206
  ssweb: (url: string, device?: "desktop" | "tablet" | "phone") => Promise<Buffer>;
204
207
  remini: (imageUrl: string, method?: "enhance" | "recolor" | "dehaze") => Promise<Buffer>;
205
- unzipToText: (url: string) => Promise<{
208
+ unzipToText: (url: string, options?: UnzipOptions) => Promise<{
206
209
  author: typeof AUTHOR;
207
210
  buffer: Buffer;
208
211
  filename: string;
209
212
  }>;
210
- unzip: (url: string) => Promise<{
213
+ unzip: (url: string, options?: UnzipOptions) => Promise<{
211
214
  author: typeof AUTHOR;
212
215
  buffer: Buffer;
213
216
  filename: string;
package/dist/index.js CHANGED
@@ -826,7 +826,11 @@ var TEXT_EXTENSIONS = [
826
826
  "bat",
827
827
  "conf",
828
828
  "ini",
829
- "properties"
829
+ "properties",
830
+ "toml",
831
+ "prisma",
832
+ "lock",
833
+ "package"
830
834
  ];
831
835
  var BINARY_EXTENSIONS = [
832
836
  "png",
@@ -848,9 +852,19 @@ var BINARY_EXTENSIONS = [
848
852
  "tar",
849
853
  "gz",
850
854
  "7z",
851
- "rar"
855
+ "rar",
856
+ "pdf",
857
+ "docx",
858
+ "doc",
859
+ "xlsx",
860
+ "pptx",
861
+ "exe",
862
+ "bin",
863
+ "dll",
864
+ "so",
865
+ "dylib"
852
866
  ];
853
- var unzipToText = async (url) => {
867
+ var unzipToText = async (url, options = { includeBinary: false }) => {
854
868
  try {
855
869
  const response = await axios4__default.default.get(url, {
856
870
  responseType: "arraybuffer",
@@ -864,6 +878,8 @@ var unzipToText = async (url) => {
864
878
  let output = `EXTRACTED BY HEAVSTAL TECH
865
879
  SOURCE: ${url}
866
880
  DATE: ${(/* @__PURE__ */ new Date()).toISOString()}
881
+ `;
882
+ output += `OPTIONS: Include Binary = ${options.includeBinary}
867
883
 
868
884
  `;
869
885
  for (const entry of zipEntries) {
@@ -877,16 +893,24 @@ DATE: ${(/* @__PURE__ */ new Date()).toISOString()}
877
893
  output += `================================================================================
878
894
  `;
879
895
  try {
880
- if (ext === "pdf") {
881
- output += `[File contents not extracted - PDF Document]
896
+ if (BINARY_EXTENSIONS.includes(ext)) {
897
+ if (options.includeBinary) {
898
+ const b64 = entry.getData().toString("base64");
899
+ const mime = ext === "mp3" ? "audio/mpeg" : `image/${ext}`;
900
+ if (["pdf", "docx", "doc", "xlsx", "pptx"].includes(ext)) {
901
+ output += `data:application/octet-stream;base64,${b64}
902
+
903
+ `;
904
+ } else {
905
+ output += `data:${mime};base64,${b64}
882
906
 
883
907
  `;
884
- } else if (BINARY_EXTENSIONS.includes(ext)) {
885
- const b64 = entry.getData().toString("base64");
886
- const mime = ext === "mp3" ? "audio/mpeg" : `image/${ext}`;
887
- output += `data:${mime};base64,${b64}
908
+ }
909
+ } else {
910
+ output += `[Binary File Skipped] (Type: ${ext}, Size: ${entry.header.size} bytes)
888
911
 
889
912
  `;
913
+ }
890
914
  } else if (TEXT_EXTENSIONS.includes(ext) || !ext) {
891
915
  const content = entry.getData().toString("utf8");
892
916
  output += `${content}
@@ -895,9 +919,15 @@ DATE: ${(/* @__PURE__ */ new Date()).toISOString()}
895
919
  } else {
896
920
  const buffer = entry.getData();
897
921
  if (buffer.includes(0)) {
898
- output += `data:application/octet-stream;base64,${buffer.toString("base64")}
922
+ if (options.includeBinary) {
923
+ output += `data:application/octet-stream;base64,${buffer.toString("base64")}
924
+
925
+ `;
926
+ } else {
927
+ output += `[Unknown Binary File Skipped]
899
928
 
900
929
  `;
930
+ }
901
931
  } else {
902
932
  output += `${buffer.toString("utf8")}
903
933
 
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types.ts","../src/dl/tiktok.ts","../src/dl/social.ts","../src/dl/twitter.ts","../src/dl/youtube.ts","../src/utils/tools.ts","../src/search/lyrics.ts","../src/utils/zipper.ts","../src/index.ts"],"names":["axios","cheerio","USER_AGENTS","getRandomHeaders","cheerio2","cleanUrl","cheerio3","yts","ytdl","https","FormData","cheerio4","AdmZip","search"],"mappings":"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","file":"index.js","sourcesContent":["export interface Author {\n name: string;\n source: string;\n}\n\nexport const AUTHOR: Author = {\n name: \"HEAVSTAL TECH\",\n source: \"https://heavstal-tech.vercel.app\"\n};\n\nexport interface TikTokResult {\n author: Author;\n status: boolean;\n title: string;\n cover?: string;\n origin_cover?: string;\n no_watermark?: string;\n watermark?: string;\n music?: string;\n views?: number | string;\n likes?: number | string;\n comments?: number | string;\n shares?: number | string;\n downloads?: number | string;\n uniqueId?: string;\n profileUrl?: string;\n profileImage?: string;\n hashtags?: string[];\n slideImages?: string[];\n author_name?: string;\n}\n\nexport interface SocialResult {\n author: Author;\n status: boolean;\n type: 'video' | 'image';\n title?: string;\n thumbnail?: string;\n url: string;\n}\n\nexport interface YouTubeResult {\n author: Author;\n title: string;\n thumbnail: string;\n channel: string;\n published: string;\n views: string;\n url: string;\n duration?: number | string;\n status?: boolean;\n}\n\nexport interface YouTubeSearchResult {\n type: 'video' | 'channel' | 'list' | 'live';\n url: string;\n title: string;\n description?: string;\n image?: string;\n thumbnail?: string;\n seconds?: number;\n timestamp?: string;\n views?: number;\n ago?: string;\n author?: {\n name: string;\n url: string;\n };\n}\n\nexport interface UtilsResult {\n author: Author;\n status: boolean;\n data: Buffer | string | any;\n}\n\nexport interface TwitterResult {\n author: Author;\n status: boolean;\n desc: string;\n thumbnail: string;\n video_sd?: string;\n video_hd?: string;\n audio?: string;\n}\n\nexport interface LyricsResult {\n author: Author;\n status: boolean;\n title: string;\n artist: string;\n image: string;\n url: string;\n lyrics: string;\n}\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport { AUTHOR, TikTokResult } from '../types';\n\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36',\n 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1'\n];\n\nconst getRandomHeaders = () => ({\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)],\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n 'Accept': 'application/json, text/javascript, */*; q=0.01'\n});\n\nconst cleanText = (str: string) => str ? str.replace(/(<br?\\s?\\/?>)/gi, \" \\n\").replace(/(<([^>]+)>)/gi, \"\").trim() : \"\";\nconst cleanUrl = (url: string) => url ? url.replace('https:', 'http:') : \"\";\n\nconst lovetikFallback = async (url: string): Promise<TikTokResult> => {\n try {\n const { data } = await axios.post(\"https://lovetik.com/api/ajax/search\", \n new URLSearchParams({ query: url }), \n { headers: getRandomHeaders() }\n );\n\n if (!data.links) throw new Error(\"Lovetik: No links found\");\n\n return {\n author: AUTHOR,\n status: true,\n title: cleanText(data.desc),\n cover: cleanUrl(data.cover),\n no_watermark: cleanUrl(data.links.find((l: any) => l.a && !l.s)?.a), // Usually the first link is No WM\n watermark: cleanUrl(data.links.find((l: any) => l.s?.includes('Watermark'))?.a),\n music: cleanUrl(data.links.find((l: any) => l.t?.includes('Audio'))?.a),\n author_name: cleanText(data.author),\n views: \"N/A\"\n } as TikTokResult;\n\n } catch (error: any) {\n throw new Error(`Fallback Failed: ${error.message}`);\n }\n};\n\n/**\n * Main TikTok Function\n * Supports: URL Download & Search Query\n */\nexport const tiktok = async (input: string): Promise<TikTokResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n const isUrl = input.match(/tiktok\\.com/i);\n let data;\n \n try {\n if (isUrl) {\n const apiUrl = `https://www.tikwm.com/api/?url=${encodeURIComponent(input)}`;\n const response = await axios.get(apiUrl, { headers: getRandomHeaders() });\n if (response.data.code !== 0) throw new Error(\"Private video or Invalid URL\");\n data = response.data.data;\n } else {\n const apiUrl = `https://www.tikwm.com/api/feed/search`;\n const response = await axios.post(apiUrl, \n new URLSearchParams({\n keywords: input,\n count: '1',\n cursor: '0',\n HD: '1'\n }), \n { headers: { ...getRandomHeaders(), 'Cookie': 'current_language=en' } }\n );\n \n if (!response.data.data?.videos || response.data.data.videos.length === 0) {\n throw new Error(`No results found for: ${input}`);\n }\n data = response.data.data.videos[0];\n }\n\n const result: TikTokResult = {\n author: AUTHOR,\n status: true,\n title: data.title,\n cover: data.cover,\n origin_cover: data.origin_cover,\n no_watermark: data.play,\n watermark: data.wmplay,\n music: data.music,\n views: data.play_count,\n likes: data.digg_count,\n comments: data.comment_count,\n shares: data.share_count,\n downloads: data.download_count\n };\n resolve(result);\n\n } catch (primaryError) {\n if (isUrl) {\n console.warn(\"Primary TikTok API failed, switching to fallback...\");\n const fallbackData = await lovetikFallback(input);\n resolve(fallbackData);\n } else {\n throw primaryError;\n }\n }\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"TikTok processing failed\"\n });\n }\n });\n};\n\n/**\n * TikTok Slide Downloader\n */\nexport const tiktokSlide = async (url: string): Promise<TikTokResult> => {\n try {\n const response = await axios.post(\"https://api.ttsave.app/\", {\n id: url,\n hash: '1e3a27c51eb6370b0db6f9348a481d69',\n mode: 'slide',\n locale: 'en',\n loading_indicator_url: 'https://ttsave.app/images/slow-down.gif',\n unlock_url: 'https://ttsave.app/en/unlock'\n }, {\n headers: getRandomHeaders()\n });\n\n const $ = cheerio.load(response.data);\n const $element = $('div.flex.flex-col.items-center.justify-center.mt-2.mb-5');\n if ($element.length === 0) throw new Error(\"Slide not found or service unavailable\");\n const statsDiv = $element.find('div.flex.flex-row.items-center.justify-center');\n return {\n author: AUTHOR,\n status: true,\n uniqueId: $element.find('input#unique-id').attr('value'),\n title: $element.find('div.flex.flex-row.items-center.justify-center h2').text().trim(),\n profileImage: $element.find('a').first().find('img').attr('src'),\n profileUrl: $element.find('a').first().attr('href'),\n hashtags: $element.find('p.text-gray-600').text().split(' ').filter(Boolean),\n likes: statsDiv.eq(0).find('span').text().trim(),\n comments: statsDiv.eq(1).find('span').text().trim(),\n shares: statsDiv.eq(2).find('span').text().trim(),\n downloads: statsDiv.eq(3).find('span').text().trim(),\n views: statsDiv.eq(4).find('span').text().trim()\n };\n } catch (error: any) {\n return {\n author: AUTHOR,\n status: false,\n title: \"Error\",\n views: error.message\n } as TikTokResult;\n }\n};\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport { AUTHOR, SocialResult } from '../types';\n\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36',\n 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1'\n];\nconst getRandomHeaders = () => ({\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)],\n 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',\n 'Accept-Language': 'en-US,en;q=0.5',\n 'Accept-Encoding': 'gzip, deflate, br',\n 'Connection': 'keep-alive'\n});\n\n/**\n * Facebook Video Downloader\n * Source: getmyfb.com\n */\nexport const fbdl = async (url: string): Promise<SocialResult[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const { data } = await axios.post(\"https://getmyfb.com/process\", \n new URLSearchParams({\n id: url,\n locale: \"en\"\n }), \n {\n headers: {\n ...getRandomHeaders(),\n \"Content-Type\": \"application/x-www-form-urlencoded; charset=UTF-8\",\n \"Cookie\": \"PHPSESSID=mtkljtmk74aiej5h6d846gjbo4; __cflb=04dToeZfC9vebXjRcJCMjjSQh5PprejufZXs2vHCt5; _token=K5Qobnj4QvoYKeLCW6uk\" //s\n }\n }\n );\n\n const $ = cheerio.load(data);\n const results: SocialResult[] = [];\n const title = $(\"div.results-item-text\").eq(0).text().trim();\n const thumbnail = $(\".results-item-image-wrapper img\").attr(\"src\") || \"\";\n $(\"a.btn-download\").each((i, el) => {\n const link = $(el).attr(\"href\");\n if (link) {\n results.push({\n author: AUTHOR,\n status: true,\n type: 'video',\n title: title || \"Facebook Video\",\n thumbnail: thumbnail,\n url: link\n });\n }\n });\n\n if (results.length === 0) {\n const singleLink = $(\"a\").attr(\"href\");\n if(singleLink && singleLink.startsWith('http')) {\n results.push({\n author: AUTHOR,\n status: true,\n type: 'video',\n title: title,\n thumbnail: thumbnail,\n url: singleLink\n })\n } else {\n reject(new Error(\"No Facebook video found (Private or Invalid URL)\"));\n return;\n }\n }\n resolve(results);\n\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"Facebook Download Failed\"\n });\n }\n });\n};\n\n/**\n * Instagram Downloader\n * Source: indown.io\n */\nexport const igdl = async (url: string): Promise<SocialResult[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const initialResponse = await axios.get(\"https://indown.io/\", {\n headers: getRandomHeaders()\n });\n \n const _$ = cheerio.load(initialResponse.data);\n const referer = _$(\"input[name=referer]\").val() as string;\n const locale = _$(\"input[name=locale]\").val() as string;\n const _token = _$(\"input[name=_token]\").val() as string;\n const cookies = initialResponse.headers[\"set-cookie\"]?.join(\" \") || \"\";\n\n if (!_token) throw new Error(\"Failed to fetch Instagram token\");\n const { data } = await axios.post(\n \"https://indown.io/download\",\n new URLSearchParams({\n link: url,\n referer,\n locale,\n _token,\n }),\n {\n headers: {\n ...getRandomHeaders(),\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n \"Cookie\": cookies,\n \"Origin\": \"https://indown.io\",\n \"Referer\": \"https://indown.io/\"\n },\n }\n );\n\n const $ = cheerio.load(data);\n const result: SocialResult[] = [];\n $(\"video\").each(function () {\n const $$ = $(this);\n const src = $$.find(\"source\").attr(\"src\");\n const poster = $$.attr(\"poster\");\n if (src) {\n result.push({\n author: AUTHOR,\n status: true,\n type: \"video\",\n thumbnail: poster,\n url: src,\n });\n }\n });\n\n $(\"img.img-fluid\").each(function () {\n const $$ = $(this);\n const src = $$.attr(\"src\");\n if (src) {\n result.push({\n author: AUTHOR,\n status: true,\n type: \"image\",\n thumbnail: src,\n url: src,\n });\n }\n });\n \n if(result.length === 0) {\n $(\".btn-group a\").each((i, el) => {\n const link = $(el).attr(\"href\");\n if(link && link !== \"#\") {\n result.push({\n author: AUTHOR,\n status: true,\n type: \"video\",\n url: link\n });\n }\n });\n }\n\n if (result.length === 0) {\n const errorMsg = $(\".alert-danger\").text().trim();\n reject(new Error(errorMsg || \"No media found. Account might be private.\"));\n } else {\n resolve(result);\n }\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"Instagram Download Failed\"\n });\n }\n });\n};\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport { AUTHOR, TwitterResult } from '../types';\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36'\n];\nconst getRandomHeaders = () => ({\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)],\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Origin': 'https://twdown.net',\n 'Referer': 'https://twdown.net/'\n});\n\n/**\n * Twitter/X Video Downloader\n * x.com and twitter.com links\n */\nexport const twitter = async (url: string): Promise<TwitterResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n const cleanUrl = url.replace(\"x.com\", \"twitter.com\");\n const config = new URLSearchParams({ URL: cleanUrl });\n const { data } = await axios.post('https://twdown.net/download.php', config, {\n headers: getRandomHeaders()\n });\n const $ = cheerio.load(data);\n const desc = $('div:nth-child(1) > div:nth-child(2) > p').text().trim();\n const thumb = $('div:nth-child(1) > img').attr('src'); \n const video_hd = $('tbody > tr:nth-child(1) > td:nth-child(4) > a').attr('href');\n const video_sd = $('tr:nth-child(2) > td:nth-child(4) > a').attr('href'); \n let audio = $('body > div.jumbotron > div > center > div.row > div > div:nth-child(5) > table > tbody > tr:nth-child(3) > td:nth-child(4) > a').attr('href');\n if (audio && !audio.startsWith('http')) audio = 'https://twdown.net/' + audio;\n if (!video_sd && !video_hd) {\n throw new Error(\"No media found. Account might be private or link is invalid.\");\n }\n const result: TwitterResult = {\n author: AUTHOR,\n status: true,\n desc: desc || \"X/Twitter Video\",\n thumbnail: thumb || \"\",\n video_sd,\n video_hd,\n audio\n };\n resolve(result);\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"X/Twitter Download Failed\"\n });\n }\n });\n};\n","import ytdl from '@distube/ytdl-core';\nimport yts from 'yt-search';\nimport { AUTHOR, YouTubeResult, YouTubeSearchResult } from '../types';\n\n/*\n * YouTube Search\n */\nexport const search = async (query: string): Promise<YouTubeSearchResult[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const result = await yts(query);\n if (!result.all || result.all.length === 0) {\n return reject(new Error(\"No results found on YouTube.\"));\n }\n const data: YouTubeSearchResult[] = result.all.map((item: any) => {\n return {\n type: item.type as 'video' | 'channel' | 'list' | 'live',\n url: item.url,\n title: item.title,\n description: item.description,\n image: item.image,\n thumbnail: item.thumbnail,\n seconds: (item as any).seconds,\n timestamp: (item as any).timestamp,\n views: (item as any).views,\n ago: (item as any).ago,\n author: (item as any).author ? {\n name: (item as any).author.name,\n url: (item as any).author.url\n } : undefined\n };\n });\n resolve(data);\n } catch (error: any) {\n reject({\n message: error.message || \"YouTube Search Failed\"\n });\n }\n });\n};\n\n/*\n * YouTube Audio Downloader\n */\nexport const ytmp3 = async (url: string): Promise<YouTubeResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n if (!ytdl.validateURL(url)) {\n throw new Error(\"Invalid YouTube URL\");\n }\n const info = await ytdl.getInfo(url);\n const format = ytdl.chooseFormat(info.formats, { \n quality: 'highestaudio',\n filter: 'audioonly' \n });\n if (!format) throw new Error(\"No audio stream found\");\n const result: YouTubeResult = {\n author: AUTHOR,\n title: info.videoDetails.title,\n thumbnail: info.videoDetails.thumbnails[info.videoDetails.thumbnails.length - 1].url, // Highest res\n channel: info.videoDetails.ownerChannelName,\n published: info.videoDetails.publishDate,\n views: info.videoDetails.viewCount,\n duration: info.videoDetails.lengthSeconds,\n url: format.url\n };\n resolve(result);\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"YouTube MP3 Failed\"\n });\n }\n });\n};\n\n/*\n * YouTube Video Downloader\n */\nexport const ytmp4 = async (url: string): Promise<YouTubeResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n if (!ytdl.validateURL(url)) {\n throw new Error(\"Invalid YouTube URL\");\n }\n const info = await ytdl.getInfo(url);\n const format = ytdl.chooseFormat(info.formats, { \n quality: 'highest',\n filter: (f) => f.hasAudio === true && f.hasVideo === true && f.container === 'mp4'\n });\n const finalFormat = format || ytdl.chooseFormat(info.formats, { \n quality: 'highest',\n filter: (f) => f.hasAudio === true && f.hasVideo === true\n });\n if (!finalFormat) throw new Error(\"No video stream found\");\n const result: YouTubeResult = {\n author: AUTHOR,\n title: info.videoDetails.title,\n thumbnail: info.videoDetails.thumbnails[info.videoDetails.thumbnails.length - 1].url,\n channel: info.videoDetails.ownerChannelName,\n published: info.videoDetails.publishDate,\n views: info.videoDetails.viewCount,\n duration: info.videoDetails.lengthSeconds,\n url: finalFormat.url\n };\n resolve(result);\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"YouTube MP4 Failed\"\n });\n }\n });\n};\n\n/**\n * YouTube Play (Search & Download)\n * Searches for a query, grabs the first result, and returns the download link\n */\nexport const play = async (query: string, type: 'mp3' | 'mp4' = 'mp3'): Promise<YouTubeResult> => {\n try {\n const searchResults = await yts(query);\n const videos = searchResults.all.filter((v: any) => v.type === 'video');\n if (videos.length === 0) {\n throw new Error(`No video results found for: ${query}`);\n }\n const firstVideo = videos[0];\n if (type === 'mp4') {\n return await ytmp4(firstVideo.url);\n } else {\n return await ytmp3(firstVideo.url);\n }\n } catch (error: any) {\n throw new Error(`Play Failed: ${error.message}`);\n }\n};\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport FormData from 'form-data';\nimport https from 'https';\nimport { AUTHOR, Author } from '../types';\n\nconst HEADERS = {\n 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'\n};\n\nconst ignoreSSL = new https.Agent({ \n rejectUnauthorized: false,\n servername: 'inferenceengine.vyro.ai'\n});\n\nconst MORSE_MAP: Record<string, string> = {\n 'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.',\n 'G': '--.', 'H': '....', 'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..',\n 'M': '--', 'N': '-.', 'O': '---', 'P': '.--.', 'Q': '--.-', 'R': '.-.',\n 'S': '...', 'T': '-', 'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-',\n 'Y': '-.--', 'Z': '--..',\n '0': '-----', '1': '.----', '2': '..---', '3': '...--', '4': '....-',\n '5': '.....', '6': '-....', '7': '--...', '8': '---..', '9': '----.',\n '.': '.-.-.-', ',': '--..--', '?': '..--..', \"'\": '.----.', '!': '-.-.--',\n '/': '-..-.', '(': '-.--.', ')': '-.--.-', '&': '.-...', ':': '---...',\n ';': '-.-.-.', '=': '-...-', '+': '.-.-.', '-': '-....-', '_': '..--.-',\n '\"': '.-..-.', '$': '...-..-', '@': '.--.-.',\n ' ': '/' \n};\nconst REVERSE_MORSE = Object.fromEntries(\n Object.entries(MORSE_MAP).map(([char, code]) => [code, char])\n);\n\nexport const ssweb = async (url: string, device: 'desktop' | 'tablet' | 'phone' = 'desktop'): Promise<Buffer> => {\n return new Promise(async (resolve, reject) => {\n try {\n const baseURL = 'https://www.screenshotmachine.com';\n const param = { url: url, device: device, cacheLimit: 0 };\n const { data, headers } = await axios.post(`${baseURL}/capture.php`, \n new URLSearchParams(param as any), {\n headers: { 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', 'User-Agent': HEADERS['User-Agent'] }\n });\n if (data.status !== 'success') throw new Error('Screenshot generation failed');\n const cookies = headers['set-cookie']?.join('') || '';\n const imageResponse = await axios.get(`${baseURL}/${data.link}`, {\n headers: { 'cookie': cookies, 'User-Agent': HEADERS['User-Agent'] },\n responseType: 'arraybuffer'\n });\n resolve(imageResponse.data);\n } catch (error: any) {\n reject(new Error(`SSWeb Failed: ${error.message}`));\n }\n });\n};\n\nexport const remini = async (imageUrl: string, method: 'enhance' | 'recolor' | 'dehaze' = 'enhance'): Promise<Buffer> => {\n return new Promise(async (resolve, reject) => {\n try {\n const validMethods = [\"enhance\", \"recolor\", \"dehaze\"];\n const selectedMethod = validMethods.includes(method) ? method : \"enhance\";\n const imgBuffer = await axios.get(imageUrl, { responseType: 'arraybuffer' });\n const form = new FormData();\n form.append(\"model_version\", 1, {\n header: { \"Content-Transfer-Encoding\": \"binary\", \"contentType\": \"multipart/form-data; charset=utf-8\" }\n });\n form.append(\"image\", Buffer.from(imgBuffer.data), {\n filename: \"enhance_image_body.jpg\",\n contentType: \"image/jpeg\",\n });\n const url = `https://inferenceengine.vyro.ai/${selectedMethod}`;\n const response = await axios.post(url, form, {\n headers: {\n ...form.getHeaders(),\n \"User-Agent\": \"okhttp/4.9.3\",\n \"Connection\": \"Keep-Alive\",\n \"Accept-Encoding\": \"gzip\"\n },\n responseType: 'arraybuffer',\n httpsAgent: ignoreSSL \n });\n resolve(response.data);\n } catch (error: any) {\n reject(new Error(`Remini Failed: ${error.message}`));\n }\n });\n};\n\nexport const styleText = async (text: string): Promise<{ author: Author, name: string, result: string }[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const { data } = await axios.get(`http://qaz.wtf/u/convert.cgi?text=${encodeURIComponent(text)}`);\n const $ = cheerio.load(data);\n const result: { author: Author, name: string, result: string }[] = [];\n $('table > tbody > tr').each((i, el) => {\n const name = $(el).find('td').first().text().trim();\n const styled = $(el).find('td').eq(1).text().trim();\n if (name && styled) {\n result.push({ author: AUTHOR, name: name, result: styled });\n }\n });\n resolve(result);\n } catch (error: any) {\n reject(new Error(`StyleText Failed: ${error.message}`));\n }\n });\n};\n\nexport const wattpad = async (query: string): Promise<any[]> => {\n try {\n const { data } = await axios.get(`https://www.wattpad.com/search/${encodeURIComponent(query)}`, { headers: HEADERS });\n const $ = cheerio.load(data);\n const results: any[] = [];\n $('.story-card').each((i, el) => {\n const title = $(el).find('.story-title').text().trim();\n const image = $(el).find('.cover img').attr('src');\n const link = 'https://www.wattpad.com' + $(el).find('a.story-card-data').attr('href');\n const reads = $(el).find('.read-count').text().trim(); \n if (title) results.push({ author: AUTHOR, title, image, link, reads });\n });\n if (results.length === 0) {\n $('div.cover').each((i, el) => {\n results.push({ author: AUTHOR, image: $(el).find('img').attr('src') });\n });\n }\n return results;\n } catch (error: any) {\n throw new Error(`Wattpad Failed: ${error.message}`);\n }\n};\n\n/**\n * Morse Code Engine\n * Encodes Text to Morse OR Decodes Morse to Text\n */\nexport const morse = async (input: string, mode: 'encode' | 'decode' = 'encode'): Promise<string> => {\n return new Promise((resolve) => {\n if (mode === 'encode') {\n const result = input\n .toUpperCase()\n .split('')\n .map(char => MORSE_MAP[char] || char)\n .join(' ');\n resolve(result);\n } else {\n const result = input\n .split(' ') \n .map(code => REVERSE_MORSE[code] || (code === '/' ? ' ' : code))\n .join('')\n .replace(/\\s+/g, ' ').trim();\n resolve(result);\n }\n });\n};\n\nexport const tts = async (text: string, lang: string = 'en'): Promise<Buffer> => {\n return new Promise(async (resolve, reject) => {\n try {\n const GOOGLE_TTS_URL = 'https://translate.google.com/translate_tts';\n \n // Limit text length (Google blocks long requests ~200 chars)\n if (text.length > 200) {\n throw new Error(\"Text is too long. Maximum 200 characters.\");\n }\n\n const { data } = await axios.get(GOOGLE_TTS_URL, {\n params: {\n ie: 'UTF-8',\n q: text,\n tl: lang,\n client: 'tw-ob' // The magic key to bypass auth\n },\n responseType: 'arraybuffer', // We need raw audio data\n headers: HEADERS\n });\n\n resolve(data);\n } catch (error: any) {\n reject(new Error(`TTS Failed: ${error.message}`));\n }\n });\n};\n\n\nexport const chords = async (query: string): Promise<any> => {\n try {\n const searchUrl = `https://www.gitagram.com/?s=${encodeURIComponent(query).replace(/%20/g, \"+\")}`;\n const { data } = await axios.get(searchUrl, { headers: HEADERS });\n const $ = cheerio.load(data); \n const firstResultUrl = $(\"table.table > tbody > tr\").eq(0).find(\"td\").eq(0).find(\"a\").eq(0).attr(\"href\");\n if (!firstResultUrl) throw new Error(\"No chords found\");\n const songPage = await axios.get(firstResultUrl, { headers: HEADERS });\n const $song = cheerio.load(songPage.data); \n const $hcontent = $song(\"div.hcontent\");\n const artist = $hcontent.find(\"div > a > span.subtitle\").text().trim();\n const title = $hcontent.find(\"h1.title\").text().trim();\n const content = $song(\"div.content > pre\").text().trim();\n return { author: AUTHOR, title, artist, url: firstResultUrl, chord: content };\n } catch (error: any) {\n throw new Error(`Chords Failed: ${error.message}`);\n }\n};\n","import axios from 'axios';\nimport { AUTHOR, LyricsResult } from '../types';\n\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'\n];\n\nconst getRandomHeaders = () => ({\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)]\n});\n\nconst fetchLrcLib = async (query: string): Promise<LyricsResult> => {\n const searchUrl = `https://lrclib.net/api/search?q=${encodeURIComponent(query)}`;\n const { data } = await axios.get(searchUrl, { headers: getRandomHeaders() });\n if (!Array.isArray(data) || data.length === 0) {\n throw new Error(\"No lyrics found on LRCLIB.\");\n }\n \n const track = data.find((t: any) => t.plainLyrics) || data[0];\n if (!track.plainLyrics && !track.syncedLyrics) {\n throw new Error(\"Track found but no lyrics content.\");\n }\n return {\n author: AUTHOR,\n status: true,\n title: track.trackName,\n artist: track.artistName,\n image: track.albumArt || \"https://ibb.co/fVyg0TN6\",\n url: `https://lrclib.net/api/get/${track.id}`,\n lyrics: track.plainLyrics || track.syncedLyrics\n };\n};\n\nconst fetchGenius = async (query: string): Promise<LyricsResult> => {\n const searchUrl = `https://genius.com/api/search/multi?per_page=1&q=${encodeURIComponent(query)}`;\n const { data } = await axios.get(searchUrl, { \n headers: { ...getRandomHeaders(), 'Referer': 'https://genius.com/' } \n });\n\n const hit = data.response?.sections?.find((s: any) => s.type === 'song')?.hits?.[0]?.result;\n if (!hit) throw new Error(\"No songs found on Genius.\");\n return {\n author: AUTHOR,\n status: true,\n title: hit.title,\n artist: hit.artist_names,\n image: hit.song_art_image_thumbnail_url,\n url: hit.url,\n lyrics: `[Lyrics available at source]\\n${hit.url}`\n };\n};\n\nexport const lyrics = async (query: string): Promise<LyricsResult> => {\n try {\n return await fetchLrcLib(query);\n } catch (lrcError) {\n try {\n return await fetchGenius(query);\n } catch (geniusError: any) {\n throw new Error(`Lyrics lookup failed. LRCLIB: ${lrcError}. Genius: ${geniusError.message}`);\n }\n }\n};\n","import axios from 'axios';\nimport AdmZip from 'adm-zip';\nimport { AUTHOR } from '../types';\n\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'\n];\n\nconst TEXT_EXTENSIONS = [\n 'js', 'ts', 'jsx', 'tsx', 'json', 'html', 'css', 'scss', 'less', \n 'md', 'txt', 'yml', 'yaml', 'sql', 'py', 'java', 'c', 'cpp', 'h', \n 'cs', 'php', 'rb', 'go', 'rs', 'swift', 'kt', 'xml', 'svg', 'env', \n 'gitignore', 'dockerfile', 'sh', 'bat', 'conf', 'ini', 'properties'\n];\n\nconst BINARY_EXTENSIONS = [\n 'png', 'jpg', 'jpeg', 'gif', 'webp', 'ico', 'bmp', 'tiff', \n 'mp3', 'wav', 'ogg', 'mp4', 'webm', 'mov', 'mkv', 'zip', 'tar', 'gz', '7z', 'rar'\n];\n\nexport const unzipToText = async (url: string): Promise<{ author: typeof AUTHOR, buffer: Buffer, filename: string }> => {\n try {\n const response = await axios.get(url, { \n responseType: 'arraybuffer',\n headers: {\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)]\n }\n });\n\n const zipBuffer = Buffer.from(response.data);\n const zip = new AdmZip(zipBuffer);\n const zipEntries = zip.getEntries();\n\n let output = `EXTRACTED BY HEAVSTAL TECH\\nSOURCE: ${url}\\nDATE: ${new Date().toISOString()}\\n\\n`;\n\n for (const entry of zipEntries) {\n if (entry.isDirectory) continue;\n\n const path = entry.entryName;\n const ext = path.split('.').pop()?.toLowerCase() || '';\n \n output += `================================================================================\\n`;\n output += `FILE: ${path}\\n`;\n output += `================================================================================\\n`;\n\n try {\n if (ext === 'pdf') {\n output += `[File contents not extracted - PDF Document]\\n\\n`;\n } \n else if (BINARY_EXTENSIONS.includes(ext)) {\n const b64 = entry.getData().toString('base64');\n const mime = ext === 'mp3' ? 'audio/mpeg' : `image/${ext}`;\n output += `data:${mime};base64,${b64}\\n\\n`;\n } \n else if (TEXT_EXTENSIONS.includes(ext) || !ext) {\n const content = entry.getData().toString('utf8');\n output += `${content}\\n\\n`;\n } \n else {\n const buffer = entry.getData();\n if (buffer.includes(0x00)) {\n output += `data:application/octet-stream;base64,${buffer.toString('base64')}\\n\\n`;\n } else {\n output += `${buffer.toString('utf8')}\\n\\n`;\n }\n }\n } catch (err) {\n output += `[Error reading file: ${(err as Error).message}]\\n\\n`;\n }\n }\n\n return {\n author: AUTHOR,\n buffer: Buffer.from(output, 'utf-8'),\n filename: 'extracted_codebase.txt'\n };\n\n } catch (error: any) {\n throw new Error(`Unzip Failed: ${error.message}`);\n }\n};\n","import { tiktok, tiktokSlide } from './dl/tiktok';\nimport { igdl, fbdl } from './dl/social';\nimport { twitter } from './dl/twitter';\nimport { search as ytSearch, ytmp3, ytmp4, play } from './dl/youtube';\nimport { ssweb, remini, styleText, wattpad, chords, morse, tts } from './utils/tools';\n// import { ephoto } from './utils/maker';\nimport { lyrics } from './search/lyrics';\nimport { unzipToText } from './utils/zipper';\n\nexport * from './types';\n\nexport { \n tiktok, \n tiktokSlide, \n igdl, \n fbdl, \n twitter,\n unzipToText,\n twitter as xdl,\n ytSearch, \n ytmp3, \n ytmp4, \n play,\n ssweb, \n remini, \n styleText, \n wattpad, \n chords,\n morse,\n tts,\n // ephoto,\n lyrics\n};\n\nexport const downloader = {\n tiktok,\n tiktokSlide,\n igdl,\n fbdl,\n twitter,\n xdl: twitter,\n ytmp3,\n ytmp4,\n play\n};\n\nexport const search = {\n youtube: ytSearch,\n wattpad,\n chords,\n lyrics\n};\n\nexport const tools = {\n ssweb,\n remini,\n unzipToText,\n unzip: unzipToText,\n styleText,\n morse,\n tts,\n// ephoto\n};\n\nexport default {\n downloader,\n search,\n tools\n};\n"]}
1
+ {"version":3,"sources":["../src/types.ts","../src/dl/tiktok.ts","../src/dl/social.ts","../src/dl/twitter.ts","../src/dl/youtube.ts","../src/utils/tools.ts","../src/search/lyrics.ts","../src/utils/zipper.ts","../src/index.ts"],"names":["axios","cheerio","USER_AGENTS","getRandomHeaders","cheerio2","cleanUrl","cheerio3","yts","ytdl","https","FormData","cheerio4","AdmZip","search"],"mappings":"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","file":"index.js","sourcesContent":["export interface Author {\n name: string;\n source: string;\n}\n\nexport const AUTHOR: Author = {\n name: \"HEAVSTAL TECH\",\n source: \"https://heavstal-tech.vercel.app\"\n};\n\nexport interface TikTokResult {\n author: Author;\n status: boolean;\n title: string;\n cover?: string;\n origin_cover?: string;\n no_watermark?: string;\n watermark?: string;\n music?: string;\n views?: number | string;\n likes?: number | string;\n comments?: number | string;\n shares?: number | string;\n downloads?: number | string;\n uniqueId?: string;\n profileUrl?: string;\n profileImage?: string;\n hashtags?: string[];\n slideImages?: string[];\n author_name?: string;\n}\n\nexport interface SocialResult {\n author: Author;\n status: boolean;\n type: 'video' | 'image';\n title?: string;\n thumbnail?: string;\n url: string;\n}\n\nexport interface YouTubeResult {\n author: Author;\n title: string;\n thumbnail: string;\n channel: string;\n published: string;\n views: string;\n url: string;\n duration?: number | string;\n status?: boolean;\n}\n\nexport interface YouTubeSearchResult {\n type: 'video' | 'channel' | 'list' | 'live';\n url: string;\n title: string;\n description?: string;\n image?: string;\n thumbnail?: string;\n seconds?: number;\n timestamp?: string;\n views?: number;\n ago?: string;\n author?: {\n name: string;\n url: string;\n };\n}\n\nexport interface UtilsResult {\n author: Author;\n status: boolean;\n data: Buffer | string | any;\n}\n\nexport interface TwitterResult {\n author: Author;\n status: boolean;\n desc: string;\n thumbnail: string;\n video_sd?: string;\n video_hd?: string;\n audio?: string;\n}\n\nexport interface LyricsResult {\n author: Author;\n status: boolean;\n title: string;\n artist: string;\n image: string;\n url: string;\n lyrics: string;\n}\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport { AUTHOR, TikTokResult } from '../types';\n\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36',\n 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1'\n];\n\nconst getRandomHeaders = () => ({\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)],\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n 'Accept': 'application/json, text/javascript, */*; q=0.01'\n});\n\nconst cleanText = (str: string) => str ? str.replace(/(<br?\\s?\\/?>)/gi, \" \\n\").replace(/(<([^>]+)>)/gi, \"\").trim() : \"\";\nconst cleanUrl = (url: string) => url ? url.replace('https:', 'http:') : \"\";\n\nconst lovetikFallback = async (url: string): Promise<TikTokResult> => {\n try {\n const { data } = await axios.post(\"https://lovetik.com/api/ajax/search\", \n new URLSearchParams({ query: url }), \n { headers: getRandomHeaders() }\n );\n\n if (!data.links) throw new Error(\"Lovetik: No links found\");\n\n return {\n author: AUTHOR,\n status: true,\n title: cleanText(data.desc),\n cover: cleanUrl(data.cover),\n no_watermark: cleanUrl(data.links.find((l: any) => l.a && !l.s)?.a), // Usually the first link is No WM\n watermark: cleanUrl(data.links.find((l: any) => l.s?.includes('Watermark'))?.a),\n music: cleanUrl(data.links.find((l: any) => l.t?.includes('Audio'))?.a),\n author_name: cleanText(data.author),\n views: \"N/A\"\n } as TikTokResult;\n\n } catch (error: any) {\n throw new Error(`Fallback Failed: ${error.message}`);\n }\n};\n\n/**\n * Main TikTok Function\n * Supports: URL Download & Search Query\n */\nexport const tiktok = async (input: string): Promise<TikTokResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n const isUrl = input.match(/tiktok\\.com/i);\n let data;\n \n try {\n if (isUrl) {\n const apiUrl = `https://www.tikwm.com/api/?url=${encodeURIComponent(input)}`;\n const response = await axios.get(apiUrl, { headers: getRandomHeaders() });\n if (response.data.code !== 0) throw new Error(\"Private video or Invalid URL\");\n data = response.data.data;\n } else {\n const apiUrl = `https://www.tikwm.com/api/feed/search`;\n const response = await axios.post(apiUrl, \n new URLSearchParams({\n keywords: input,\n count: '1',\n cursor: '0',\n HD: '1'\n }), \n { headers: { ...getRandomHeaders(), 'Cookie': 'current_language=en' } }\n );\n \n if (!response.data.data?.videos || response.data.data.videos.length === 0) {\n throw new Error(`No results found for: ${input}`);\n }\n data = response.data.data.videos[0];\n }\n\n const result: TikTokResult = {\n author: AUTHOR,\n status: true,\n title: data.title,\n cover: data.cover,\n origin_cover: data.origin_cover,\n no_watermark: data.play,\n watermark: data.wmplay,\n music: data.music,\n views: data.play_count,\n likes: data.digg_count,\n comments: data.comment_count,\n shares: data.share_count,\n downloads: data.download_count\n };\n resolve(result);\n\n } catch (primaryError) {\n if (isUrl) {\n console.warn(\"Primary TikTok API failed, switching to fallback...\");\n const fallbackData = await lovetikFallback(input);\n resolve(fallbackData);\n } else {\n throw primaryError;\n }\n }\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"TikTok processing failed\"\n });\n }\n });\n};\n\n/**\n * TikTok Slide Downloader\n */\nexport const tiktokSlide = async (url: string): Promise<TikTokResult> => {\n try {\n const response = await axios.post(\"https://api.ttsave.app/\", {\n id: url,\n hash: '1e3a27c51eb6370b0db6f9348a481d69',\n mode: 'slide',\n locale: 'en',\n loading_indicator_url: 'https://ttsave.app/images/slow-down.gif',\n unlock_url: 'https://ttsave.app/en/unlock'\n }, {\n headers: getRandomHeaders()\n });\n\n const $ = cheerio.load(response.data);\n const $element = $('div.flex.flex-col.items-center.justify-center.mt-2.mb-5');\n if ($element.length === 0) throw new Error(\"Slide not found or service unavailable\");\n const statsDiv = $element.find('div.flex.flex-row.items-center.justify-center');\n return {\n author: AUTHOR,\n status: true,\n uniqueId: $element.find('input#unique-id').attr('value'),\n title: $element.find('div.flex.flex-row.items-center.justify-center h2').text().trim(),\n profileImage: $element.find('a').first().find('img').attr('src'),\n profileUrl: $element.find('a').first().attr('href'),\n hashtags: $element.find('p.text-gray-600').text().split(' ').filter(Boolean),\n likes: statsDiv.eq(0).find('span').text().trim(),\n comments: statsDiv.eq(1).find('span').text().trim(),\n shares: statsDiv.eq(2).find('span').text().trim(),\n downloads: statsDiv.eq(3).find('span').text().trim(),\n views: statsDiv.eq(4).find('span').text().trim()\n };\n } catch (error: any) {\n return {\n author: AUTHOR,\n status: false,\n title: \"Error\",\n views: error.message\n } as TikTokResult;\n }\n};\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport { AUTHOR, SocialResult } from '../types';\n\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36',\n 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1'\n];\nconst getRandomHeaders = () => ({\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)],\n 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',\n 'Accept-Language': 'en-US,en;q=0.5',\n 'Accept-Encoding': 'gzip, deflate, br',\n 'Connection': 'keep-alive'\n});\n\n/**\n * Facebook Video Downloader\n * Source: getmyfb.com\n */\nexport const fbdl = async (url: string): Promise<SocialResult[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const { data } = await axios.post(\"https://getmyfb.com/process\", \n new URLSearchParams({\n id: url,\n locale: \"en\"\n }), \n {\n headers: {\n ...getRandomHeaders(),\n \"Content-Type\": \"application/x-www-form-urlencoded; charset=UTF-8\",\n \"Cookie\": \"PHPSESSID=mtkljtmk74aiej5h6d846gjbo4; __cflb=04dToeZfC9vebXjRcJCMjjSQh5PprejufZXs2vHCt5; _token=K5Qobnj4QvoYKeLCW6uk\" //s\n }\n }\n );\n\n const $ = cheerio.load(data);\n const results: SocialResult[] = [];\n const title = $(\"div.results-item-text\").eq(0).text().trim();\n const thumbnail = $(\".results-item-image-wrapper img\").attr(\"src\") || \"\";\n $(\"a.btn-download\").each((i, el) => {\n const link = $(el).attr(\"href\");\n if (link) {\n results.push({\n author: AUTHOR,\n status: true,\n type: 'video',\n title: title || \"Facebook Video\",\n thumbnail: thumbnail,\n url: link\n });\n }\n });\n\n if (results.length === 0) {\n const singleLink = $(\"a\").attr(\"href\");\n if(singleLink && singleLink.startsWith('http')) {\n results.push({\n author: AUTHOR,\n status: true,\n type: 'video',\n title: title,\n thumbnail: thumbnail,\n url: singleLink\n })\n } else {\n reject(new Error(\"No Facebook video found (Private or Invalid URL)\"));\n return;\n }\n }\n resolve(results);\n\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"Facebook Download Failed\"\n });\n }\n });\n};\n\n/**\n * Instagram Downloader\n * Source: indown.io\n */\nexport const igdl = async (url: string): Promise<SocialResult[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const initialResponse = await axios.get(\"https://indown.io/\", {\n headers: getRandomHeaders()\n });\n \n const _$ = cheerio.load(initialResponse.data);\n const referer = _$(\"input[name=referer]\").val() as string;\n const locale = _$(\"input[name=locale]\").val() as string;\n const _token = _$(\"input[name=_token]\").val() as string;\n const cookies = initialResponse.headers[\"set-cookie\"]?.join(\" \") || \"\";\n\n if (!_token) throw new Error(\"Failed to fetch Instagram token\");\n const { data } = await axios.post(\n \"https://indown.io/download\",\n new URLSearchParams({\n link: url,\n referer,\n locale,\n _token,\n }),\n {\n headers: {\n ...getRandomHeaders(),\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n \"Cookie\": cookies,\n \"Origin\": \"https://indown.io\",\n \"Referer\": \"https://indown.io/\"\n },\n }\n );\n\n const $ = cheerio.load(data);\n const result: SocialResult[] = [];\n $(\"video\").each(function () {\n const $$ = $(this);\n const src = $$.find(\"source\").attr(\"src\");\n const poster = $$.attr(\"poster\");\n if (src) {\n result.push({\n author: AUTHOR,\n status: true,\n type: \"video\",\n thumbnail: poster,\n url: src,\n });\n }\n });\n\n $(\"img.img-fluid\").each(function () {\n const $$ = $(this);\n const src = $$.attr(\"src\");\n if (src) {\n result.push({\n author: AUTHOR,\n status: true,\n type: \"image\",\n thumbnail: src,\n url: src,\n });\n }\n });\n \n if(result.length === 0) {\n $(\".btn-group a\").each((i, el) => {\n const link = $(el).attr(\"href\");\n if(link && link !== \"#\") {\n result.push({\n author: AUTHOR,\n status: true,\n type: \"video\",\n url: link\n });\n }\n });\n }\n\n if (result.length === 0) {\n const errorMsg = $(\".alert-danger\").text().trim();\n reject(new Error(errorMsg || \"No media found. Account might be private.\"));\n } else {\n resolve(result);\n }\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"Instagram Download Failed\"\n });\n }\n });\n};\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport { AUTHOR, TwitterResult } from '../types';\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36'\n];\nconst getRandomHeaders = () => ({\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)],\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Origin': 'https://twdown.net',\n 'Referer': 'https://twdown.net/'\n});\n\n/**\n * Twitter/X Video Downloader\n * x.com and twitter.com links\n */\nexport const twitter = async (url: string): Promise<TwitterResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n const cleanUrl = url.replace(\"x.com\", \"twitter.com\");\n const config = new URLSearchParams({ URL: cleanUrl });\n const { data } = await axios.post('https://twdown.net/download.php', config, {\n headers: getRandomHeaders()\n });\n const $ = cheerio.load(data);\n const desc = $('div:nth-child(1) > div:nth-child(2) > p').text().trim();\n const thumb = $('div:nth-child(1) > img').attr('src'); \n const video_hd = $('tbody > tr:nth-child(1) > td:nth-child(4) > a').attr('href');\n const video_sd = $('tr:nth-child(2) > td:nth-child(4) > a').attr('href'); \n let audio = $('body > div.jumbotron > div > center > div.row > div > div:nth-child(5) > table > tbody > tr:nth-child(3) > td:nth-child(4) > a').attr('href');\n if (audio && !audio.startsWith('http')) audio = 'https://twdown.net/' + audio;\n if (!video_sd && !video_hd) {\n throw new Error(\"No media found. Account might be private or link is invalid.\");\n }\n const result: TwitterResult = {\n author: AUTHOR,\n status: true,\n desc: desc || \"X/Twitter Video\",\n thumbnail: thumb || \"\",\n video_sd,\n video_hd,\n audio\n };\n resolve(result);\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"X/Twitter Download Failed\"\n });\n }\n });\n};\n","import ytdl from '@distube/ytdl-core';\nimport yts from 'yt-search';\nimport { AUTHOR, YouTubeResult, YouTubeSearchResult } from '../types';\n\n/*\n * YouTube Search\n */\nexport const search = async (query: string): Promise<YouTubeSearchResult[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const result = await yts(query);\n if (!result.all || result.all.length === 0) {\n return reject(new Error(\"No results found on YouTube.\"));\n }\n const data: YouTubeSearchResult[] = result.all.map((item: any) => {\n return {\n type: item.type as 'video' | 'channel' | 'list' | 'live',\n url: item.url,\n title: item.title,\n description: item.description,\n image: item.image,\n thumbnail: item.thumbnail,\n seconds: (item as any).seconds,\n timestamp: (item as any).timestamp,\n views: (item as any).views,\n ago: (item as any).ago,\n author: (item as any).author ? {\n name: (item as any).author.name,\n url: (item as any).author.url\n } : undefined\n };\n });\n resolve(data);\n } catch (error: any) {\n reject({\n message: error.message || \"YouTube Search Failed\"\n });\n }\n });\n};\n\n/*\n * YouTube Audio Downloader\n */\nexport const ytmp3 = async (url: string): Promise<YouTubeResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n if (!ytdl.validateURL(url)) {\n throw new Error(\"Invalid YouTube URL\");\n }\n const info = await ytdl.getInfo(url);\n const format = ytdl.chooseFormat(info.formats, { \n quality: 'highestaudio',\n filter: 'audioonly' \n });\n if (!format) throw new Error(\"No audio stream found\");\n const result: YouTubeResult = {\n author: AUTHOR,\n title: info.videoDetails.title,\n thumbnail: info.videoDetails.thumbnails[info.videoDetails.thumbnails.length - 1].url, // Highest res\n channel: info.videoDetails.ownerChannelName,\n published: info.videoDetails.publishDate,\n views: info.videoDetails.viewCount,\n duration: info.videoDetails.lengthSeconds,\n url: format.url\n };\n resolve(result);\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"YouTube MP3 Failed\"\n });\n }\n });\n};\n\n/*\n * YouTube Video Downloader\n */\nexport const ytmp4 = async (url: string): Promise<YouTubeResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n if (!ytdl.validateURL(url)) {\n throw new Error(\"Invalid YouTube URL\");\n }\n const info = await ytdl.getInfo(url);\n const format = ytdl.chooseFormat(info.formats, { \n quality: 'highest',\n filter: (f) => f.hasAudio === true && f.hasVideo === true && f.container === 'mp4'\n });\n const finalFormat = format || ytdl.chooseFormat(info.formats, { \n quality: 'highest',\n filter: (f) => f.hasAudio === true && f.hasVideo === true\n });\n if (!finalFormat) throw new Error(\"No video stream found\");\n const result: YouTubeResult = {\n author: AUTHOR,\n title: info.videoDetails.title,\n thumbnail: info.videoDetails.thumbnails[info.videoDetails.thumbnails.length - 1].url,\n channel: info.videoDetails.ownerChannelName,\n published: info.videoDetails.publishDate,\n views: info.videoDetails.viewCount,\n duration: info.videoDetails.lengthSeconds,\n url: finalFormat.url\n };\n resolve(result);\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"YouTube MP4 Failed\"\n });\n }\n });\n};\n\n/**\n * YouTube Play (Search & Download)\n * Searches for a query, grabs the first result, and returns the download link\n */\nexport const play = async (query: string, type: 'mp3' | 'mp4' = 'mp3'): Promise<YouTubeResult> => {\n try {\n const searchResults = await yts(query);\n const videos = searchResults.all.filter((v: any) => v.type === 'video');\n if (videos.length === 0) {\n throw new Error(`No video results found for: ${query}`);\n }\n const firstVideo = videos[0];\n if (type === 'mp4') {\n return await ytmp4(firstVideo.url);\n } else {\n return await ytmp3(firstVideo.url);\n }\n } catch (error: any) {\n throw new Error(`Play Failed: ${error.message}`);\n }\n};\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport FormData from 'form-data';\nimport https from 'https';\nimport { AUTHOR, Author } from '../types';\n\nconst HEADERS = {\n 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'\n};\n\nconst ignoreSSL = new https.Agent({ \n rejectUnauthorized: false,\n servername: 'inferenceengine.vyro.ai'\n});\n\nconst MORSE_MAP: Record<string, string> = {\n 'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.',\n 'G': '--.', 'H': '....', 'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..',\n 'M': '--', 'N': '-.', 'O': '---', 'P': '.--.', 'Q': '--.-', 'R': '.-.',\n 'S': '...', 'T': '-', 'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-',\n 'Y': '-.--', 'Z': '--..',\n '0': '-----', '1': '.----', '2': '..---', '3': '...--', '4': '....-',\n '5': '.....', '6': '-....', '7': '--...', '8': '---..', '9': '----.',\n '.': '.-.-.-', ',': '--..--', '?': '..--..', \"'\": '.----.', '!': '-.-.--',\n '/': '-..-.', '(': '-.--.', ')': '-.--.-', '&': '.-...', ':': '---...',\n ';': '-.-.-.', '=': '-...-', '+': '.-.-.', '-': '-....-', '_': '..--.-',\n '\"': '.-..-.', '$': '...-..-', '@': '.--.-.',\n ' ': '/' \n};\nconst REVERSE_MORSE = Object.fromEntries(\n Object.entries(MORSE_MAP).map(([char, code]) => [code, char])\n);\n\nexport const ssweb = async (url: string, device: 'desktop' | 'tablet' | 'phone' = 'desktop'): Promise<Buffer> => {\n return new Promise(async (resolve, reject) => {\n try {\n const baseURL = 'https://www.screenshotmachine.com';\n const param = { url: url, device: device, cacheLimit: 0 };\n const { data, headers } = await axios.post(`${baseURL}/capture.php`, \n new URLSearchParams(param as any), {\n headers: { 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', 'User-Agent': HEADERS['User-Agent'] }\n });\n if (data.status !== 'success') throw new Error('Screenshot generation failed');\n const cookies = headers['set-cookie']?.join('') || '';\n const imageResponse = await axios.get(`${baseURL}/${data.link}`, {\n headers: { 'cookie': cookies, 'User-Agent': HEADERS['User-Agent'] },\n responseType: 'arraybuffer'\n });\n resolve(imageResponse.data);\n } catch (error: any) {\n reject(new Error(`SSWeb Failed: ${error.message}`));\n }\n });\n};\n\nexport const remini = async (imageUrl: string, method: 'enhance' | 'recolor' | 'dehaze' = 'enhance'): Promise<Buffer> => {\n return new Promise(async (resolve, reject) => {\n try {\n const validMethods = [\"enhance\", \"recolor\", \"dehaze\"];\n const selectedMethod = validMethods.includes(method) ? method : \"enhance\";\n const imgBuffer = await axios.get(imageUrl, { responseType: 'arraybuffer' });\n const form = new FormData();\n form.append(\"model_version\", 1, {\n header: { \"Content-Transfer-Encoding\": \"binary\", \"contentType\": \"multipart/form-data; charset=utf-8\" }\n });\n form.append(\"image\", Buffer.from(imgBuffer.data), {\n filename: \"enhance_image_body.jpg\",\n contentType: \"image/jpeg\",\n });\n const url = `https://inferenceengine.vyro.ai/${selectedMethod}`;\n const response = await axios.post(url, form, {\n headers: {\n ...form.getHeaders(),\n \"User-Agent\": \"okhttp/4.9.3\",\n \"Connection\": \"Keep-Alive\",\n \"Accept-Encoding\": \"gzip\"\n },\n responseType: 'arraybuffer',\n httpsAgent: ignoreSSL \n });\n resolve(response.data);\n } catch (error: any) {\n reject(new Error(`Remini Failed: ${error.message}`));\n }\n });\n};\n\nexport const styleText = async (text: string): Promise<{ author: Author, name: string, result: string }[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const { data } = await axios.get(`http://qaz.wtf/u/convert.cgi?text=${encodeURIComponent(text)}`);\n const $ = cheerio.load(data);\n const result: { author: Author, name: string, result: string }[] = [];\n $('table > tbody > tr').each((i, el) => {\n const name = $(el).find('td').first().text().trim();\n const styled = $(el).find('td').eq(1).text().trim();\n if (name && styled) {\n result.push({ author: AUTHOR, name: name, result: styled });\n }\n });\n resolve(result);\n } catch (error: any) {\n reject(new Error(`StyleText Failed: ${error.message}`));\n }\n });\n};\n\nexport const wattpad = async (query: string): Promise<any[]> => {\n try {\n const { data } = await axios.get(`https://www.wattpad.com/search/${encodeURIComponent(query)}`, { headers: HEADERS });\n const $ = cheerio.load(data);\n const results: any[] = [];\n $('.story-card').each((i, el) => {\n const title = $(el).find('.story-title').text().trim();\n const image = $(el).find('.cover img').attr('src');\n const link = 'https://www.wattpad.com' + $(el).find('a.story-card-data').attr('href');\n const reads = $(el).find('.read-count').text().trim(); \n if (title) results.push({ author: AUTHOR, title, image, link, reads });\n });\n if (results.length === 0) {\n $('div.cover').each((i, el) => {\n results.push({ author: AUTHOR, image: $(el).find('img').attr('src') });\n });\n }\n return results;\n } catch (error: any) {\n throw new Error(`Wattpad Failed: ${error.message}`);\n }\n};\n\n/**\n * Morse Code Engine\n * Encodes Text to Morse OR Decodes Morse to Text\n */\nexport const morse = async (input: string, mode: 'encode' | 'decode' = 'encode'): Promise<string> => {\n return new Promise((resolve) => {\n if (mode === 'encode') {\n const result = input\n .toUpperCase()\n .split('')\n .map(char => MORSE_MAP[char] || char)\n .join(' ');\n resolve(result);\n } else {\n const result = input\n .split(' ') \n .map(code => REVERSE_MORSE[code] || (code === '/' ? ' ' : code))\n .join('')\n .replace(/\\s+/g, ' ').trim();\n resolve(result);\n }\n });\n};\n\nexport const tts = async (text: string, lang: string = 'en'): Promise<Buffer> => {\n return new Promise(async (resolve, reject) => {\n try {\n const GOOGLE_TTS_URL = 'https://translate.google.com/translate_tts';\n \n // Limit text length (Google blocks long requests ~200 chars)\n if (text.length > 200) {\n throw new Error(\"Text is too long. Maximum 200 characters.\");\n }\n\n const { data } = await axios.get(GOOGLE_TTS_URL, {\n params: {\n ie: 'UTF-8',\n q: text,\n tl: lang,\n client: 'tw-ob' // The magic key to bypass auth\n },\n responseType: 'arraybuffer', // We need raw audio data\n headers: HEADERS\n });\n\n resolve(data);\n } catch (error: any) {\n reject(new Error(`TTS Failed: ${error.message}`));\n }\n });\n};\n\n\nexport const chords = async (query: string): Promise<any> => {\n try {\n const searchUrl = `https://www.gitagram.com/?s=${encodeURIComponent(query).replace(/%20/g, \"+\")}`;\n const { data } = await axios.get(searchUrl, { headers: HEADERS });\n const $ = cheerio.load(data); \n const firstResultUrl = $(\"table.table > tbody > tr\").eq(0).find(\"td\").eq(0).find(\"a\").eq(0).attr(\"href\");\n if (!firstResultUrl) throw new Error(\"No chords found\");\n const songPage = await axios.get(firstResultUrl, { headers: HEADERS });\n const $song = cheerio.load(songPage.data); \n const $hcontent = $song(\"div.hcontent\");\n const artist = $hcontent.find(\"div > a > span.subtitle\").text().trim();\n const title = $hcontent.find(\"h1.title\").text().trim();\n const content = $song(\"div.content > pre\").text().trim();\n return { author: AUTHOR, title, artist, url: firstResultUrl, chord: content };\n } catch (error: any) {\n throw new Error(`Chords Failed: ${error.message}`);\n }\n};\n","import axios from 'axios';\nimport { AUTHOR, LyricsResult } from '../types';\n\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'\n];\n\nconst getRandomHeaders = () => ({\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)]\n});\n\nconst fetchLrcLib = async (query: string): Promise<LyricsResult> => {\n const searchUrl = `https://lrclib.net/api/search?q=${encodeURIComponent(query)}`;\n const { data } = await axios.get(searchUrl, { headers: getRandomHeaders() });\n if (!Array.isArray(data) || data.length === 0) {\n throw new Error(\"No lyrics found on LRCLIB.\");\n }\n \n const track = data.find((t: any) => t.plainLyrics) || data[0];\n if (!track.plainLyrics && !track.syncedLyrics) {\n throw new Error(\"Track found but no lyrics content.\");\n }\n return {\n author: AUTHOR,\n status: true,\n title: track.trackName,\n artist: track.artistName,\n image: track.albumArt || \"https://ibb.co/fVyg0TN6\",\n url: `https://lrclib.net/api/get/${track.id}`,\n lyrics: track.plainLyrics || track.syncedLyrics\n };\n};\n\nconst fetchGenius = async (query: string): Promise<LyricsResult> => {\n const searchUrl = `https://genius.com/api/search/multi?per_page=1&q=${encodeURIComponent(query)}`;\n const { data } = await axios.get(searchUrl, { \n headers: { ...getRandomHeaders(), 'Referer': 'https://genius.com/' } \n });\n\n const hit = data.response?.sections?.find((s: any) => s.type === 'song')?.hits?.[0]?.result;\n if (!hit) throw new Error(\"No songs found on Genius.\");\n return {\n author: AUTHOR,\n status: true,\n title: hit.title,\n artist: hit.artist_names,\n image: hit.song_art_image_thumbnail_url,\n url: hit.url,\n lyrics: `[Lyrics available at source]\\n${hit.url}`\n };\n};\n\nexport const lyrics = async (query: string): Promise<LyricsResult> => {\n try {\n return await fetchLrcLib(query);\n } catch (lrcError) {\n try {\n return await fetchGenius(query);\n } catch (geniusError: any) {\n throw new Error(`Lyrics lookup failed. LRCLIB: ${lrcError}. Genius: ${geniusError.message}`);\n }\n }\n};\n","import axios from 'axios';\nimport AdmZip from 'adm-zip';\nimport { AUTHOR } from '../types';\n\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'\n];\n\nconst TEXT_EXTENSIONS = [\n 'js', 'ts', 'jsx', 'tsx', 'json', 'html', 'css', 'scss', 'less', \n 'md', 'txt', 'yml', 'yaml', 'sql', 'py', 'java', 'c', 'cpp', 'h', \n 'cs', 'php', 'rb', 'go', 'rs', 'swift', 'kt', 'xml', 'svg', 'env', \n 'gitignore', 'dockerfile', 'sh', 'bat', 'conf', 'ini', 'properties',\n 'toml', 'prisma', 'lock', 'package'\n];\n\nconst BINARY_EXTENSIONS = [\n 'png', 'jpg', 'jpeg', 'gif', 'webp', 'ico', 'bmp', 'tiff', \n 'mp3', 'wav', 'ogg', 'mp4', 'webm', 'mov', 'mkv', 'zip', 'tar', 'gz', '7z', 'rar',\n 'pdf', 'docx', 'doc', 'xlsx', 'pptx', 'exe', 'bin', 'dll', 'so', 'dylib'\n];\n\nexport interface UnzipOptions {\n includeBinary?: boolean;\n}\n\nexport const unzipToText = async (url: string, options: UnzipOptions = { includeBinary: false }): Promise<{ author: typeof AUTHOR, buffer: Buffer, filename: string }> => {\n try {\n const response = await axios.get(url, { \n responseType: 'arraybuffer',\n headers: {\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)]\n }\n });\n\n const zipBuffer = Buffer.from(response.data);\n const zip = new AdmZip(zipBuffer);\n const zipEntries = zip.getEntries();\n\n let output = `EXTRACTED BY HEAVSTAL TECH\\nSOURCE: ${url}\\nDATE: ${new Date().toISOString()}\\n`;\n output += `OPTIONS: Include Binary = ${options.includeBinary}\\n\\n`;\n\n for (const entry of zipEntries) {\n if (entry.isDirectory) continue;\n\n const path = entry.entryName;\n const ext = path.split('.').pop()?.toLowerCase() || '';\n \n output += `================================================================================\\n`;\n output += `FILE: ${path}\\n`;\n output += `================================================================================\\n`;\n\n try {\n if (BINARY_EXTENSIONS.includes(ext)) {\n if (options.includeBinary) {\n const b64 = entry.getData().toString('base64');\n const mime = ext === 'mp3' ? 'audio/mpeg' : `image/${ext}`;\n \n if (['pdf', 'docx', 'doc', 'xlsx', 'pptx'].includes(ext)) {\n output += `data:application/octet-stream;base64,${b64}\\n\\n`;\n } else {\n output += `data:${mime};base64,${b64}\\n\\n`;\n }\n } else {\n output += `[Binary File Skipped] (Type: ${ext}, Size: ${entry.header.size} bytes)\\n\\n`;\n }\n } \n else if (TEXT_EXTENSIONS.includes(ext) || !ext) {\n const content = entry.getData().toString('utf8');\n output += `${content}\\n\\n`;\n } \n else {\n const buffer = entry.getData();\n if (buffer.includes(0x00)) {\n if (options.includeBinary) {\n output += `data:application/octet-stream;base64,${buffer.toString('base64')}\\n\\n`;\n } else {\n output += `[Unknown Binary File Skipped]\\n\\n`;\n }\n } else {\n output += `${buffer.toString('utf8')}\\n\\n`;\n }\n }\n } catch (err) {\n output += `[Error reading file: ${(err as Error).message}]\\n\\n`;\n }\n }\n\n return {\n author: AUTHOR,\n buffer: Buffer.from(output, 'utf-8'),\n filename: 'extracted_codebase.txt'\n };\n\n } catch (error: any) {\n throw new Error(`Unzip Failed: ${error.message}`);\n }\n};\n","import { tiktok, tiktokSlide } from './dl/tiktok';\nimport { igdl, fbdl } from './dl/social';\nimport { twitter } from './dl/twitter';\nimport { search as ytSearch, ytmp3, ytmp4, play } from './dl/youtube';\nimport { ssweb, remini, styleText, wattpad, chords, morse, tts } from './utils/tools';\n// import { ephoto } from './utils/maker';\nimport { lyrics } from './search/lyrics';\nimport { unzipToText } from './utils/zipper';\n\nexport * from './types';\n\nexport { \n tiktok, \n tiktokSlide, \n igdl, \n fbdl, \n twitter,\n unzipToText,\n twitter as xdl,\n ytSearch, \n ytmp3, \n ytmp4, \n play,\n ssweb, \n remini, \n styleText, \n wattpad, \n chords,\n morse,\n tts,\n // ephoto,\n lyrics\n};\n\nexport const downloader = {\n tiktok,\n tiktokSlide,\n igdl,\n fbdl,\n twitter,\n xdl: twitter,\n ytmp3,\n ytmp4,\n play\n};\n\nexport const search = {\n youtube: ytSearch,\n wattpad,\n chords,\n lyrics\n};\n\nexport const tools = {\n ssweb,\n remini,\n unzipToText,\n unzip: unzipToText,\n styleText,\n morse,\n tts,\n// ephoto\n};\n\nexport default {\n downloader,\n search,\n tools\n};\n"]}
package/dist/index.mjs CHANGED
@@ -794,7 +794,11 @@ var TEXT_EXTENSIONS = [
794
794
  "bat",
795
795
  "conf",
796
796
  "ini",
797
- "properties"
797
+ "properties",
798
+ "toml",
799
+ "prisma",
800
+ "lock",
801
+ "package"
798
802
  ];
799
803
  var BINARY_EXTENSIONS = [
800
804
  "png",
@@ -816,9 +820,19 @@ var BINARY_EXTENSIONS = [
816
820
  "tar",
817
821
  "gz",
818
822
  "7z",
819
- "rar"
823
+ "rar",
824
+ "pdf",
825
+ "docx",
826
+ "doc",
827
+ "xlsx",
828
+ "pptx",
829
+ "exe",
830
+ "bin",
831
+ "dll",
832
+ "so",
833
+ "dylib"
820
834
  ];
821
- var unzipToText = async (url) => {
835
+ var unzipToText = async (url, options = { includeBinary: false }) => {
822
836
  try {
823
837
  const response = await axios4.get(url, {
824
838
  responseType: "arraybuffer",
@@ -832,6 +846,8 @@ var unzipToText = async (url) => {
832
846
  let output = `EXTRACTED BY HEAVSTAL TECH
833
847
  SOURCE: ${url}
834
848
  DATE: ${(/* @__PURE__ */ new Date()).toISOString()}
849
+ `;
850
+ output += `OPTIONS: Include Binary = ${options.includeBinary}
835
851
 
836
852
  `;
837
853
  for (const entry of zipEntries) {
@@ -845,16 +861,24 @@ DATE: ${(/* @__PURE__ */ new Date()).toISOString()}
845
861
  output += `================================================================================
846
862
  `;
847
863
  try {
848
- if (ext === "pdf") {
849
- output += `[File contents not extracted - PDF Document]
864
+ if (BINARY_EXTENSIONS.includes(ext)) {
865
+ if (options.includeBinary) {
866
+ const b64 = entry.getData().toString("base64");
867
+ const mime = ext === "mp3" ? "audio/mpeg" : `image/${ext}`;
868
+ if (["pdf", "docx", "doc", "xlsx", "pptx"].includes(ext)) {
869
+ output += `data:application/octet-stream;base64,${b64}
870
+
871
+ `;
872
+ } else {
873
+ output += `data:${mime};base64,${b64}
850
874
 
851
875
  `;
852
- } else if (BINARY_EXTENSIONS.includes(ext)) {
853
- const b64 = entry.getData().toString("base64");
854
- const mime = ext === "mp3" ? "audio/mpeg" : `image/${ext}`;
855
- output += `data:${mime};base64,${b64}
876
+ }
877
+ } else {
878
+ output += `[Binary File Skipped] (Type: ${ext}, Size: ${entry.header.size} bytes)
856
879
 
857
880
  `;
881
+ }
858
882
  } else if (TEXT_EXTENSIONS.includes(ext) || !ext) {
859
883
  const content = entry.getData().toString("utf8");
860
884
  output += `${content}
@@ -863,9 +887,15 @@ DATE: ${(/* @__PURE__ */ new Date()).toISOString()}
863
887
  } else {
864
888
  const buffer = entry.getData();
865
889
  if (buffer.includes(0)) {
866
- output += `data:application/octet-stream;base64,${buffer.toString("base64")}
890
+ if (options.includeBinary) {
891
+ output += `data:application/octet-stream;base64,${buffer.toString("base64")}
892
+
893
+ `;
894
+ } else {
895
+ output += `[Unknown Binary File Skipped]
867
896
 
868
897
  `;
898
+ }
869
899
  } else {
870
900
  output += `${buffer.toString("utf8")}
871
901
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types.ts","../src/dl/tiktok.ts","../src/dl/social.ts","../src/dl/twitter.ts","../src/dl/youtube.ts","../src/utils/tools.ts","../src/search/lyrics.ts","../src/utils/zipper.ts","../src/index.ts"],"names":["axios","cheerio","USER_AGENTS","getRandomHeaders","cheerio2","cleanUrl","cheerio3","search"],"mappings":"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","file":"index.mjs","sourcesContent":["export interface Author {\n name: string;\n source: string;\n}\n\nexport const AUTHOR: Author = {\n name: \"HEAVSTAL TECH\",\n source: \"https://heavstal-tech.vercel.app\"\n};\n\nexport interface TikTokResult {\n author: Author;\n status: boolean;\n title: string;\n cover?: string;\n origin_cover?: string;\n no_watermark?: string;\n watermark?: string;\n music?: string;\n views?: number | string;\n likes?: number | string;\n comments?: number | string;\n shares?: number | string;\n downloads?: number | string;\n uniqueId?: string;\n profileUrl?: string;\n profileImage?: string;\n hashtags?: string[];\n slideImages?: string[];\n author_name?: string;\n}\n\nexport interface SocialResult {\n author: Author;\n status: boolean;\n type: 'video' | 'image';\n title?: string;\n thumbnail?: string;\n url: string;\n}\n\nexport interface YouTubeResult {\n author: Author;\n title: string;\n thumbnail: string;\n channel: string;\n published: string;\n views: string;\n url: string;\n duration?: number | string;\n status?: boolean;\n}\n\nexport interface YouTubeSearchResult {\n type: 'video' | 'channel' | 'list' | 'live';\n url: string;\n title: string;\n description?: string;\n image?: string;\n thumbnail?: string;\n seconds?: number;\n timestamp?: string;\n views?: number;\n ago?: string;\n author?: {\n name: string;\n url: string;\n };\n}\n\nexport interface UtilsResult {\n author: Author;\n status: boolean;\n data: Buffer | string | any;\n}\n\nexport interface TwitterResult {\n author: Author;\n status: boolean;\n desc: string;\n thumbnail: string;\n video_sd?: string;\n video_hd?: string;\n audio?: string;\n}\n\nexport interface LyricsResult {\n author: Author;\n status: boolean;\n title: string;\n artist: string;\n image: string;\n url: string;\n lyrics: string;\n}\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport { AUTHOR, TikTokResult } from '../types';\n\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36',\n 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1'\n];\n\nconst getRandomHeaders = () => ({\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)],\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n 'Accept': 'application/json, text/javascript, */*; q=0.01'\n});\n\nconst cleanText = (str: string) => str ? str.replace(/(<br?\\s?\\/?>)/gi, \" \\n\").replace(/(<([^>]+)>)/gi, \"\").trim() : \"\";\nconst cleanUrl = (url: string) => url ? url.replace('https:', 'http:') : \"\";\n\nconst lovetikFallback = async (url: string): Promise<TikTokResult> => {\n try {\n const { data } = await axios.post(\"https://lovetik.com/api/ajax/search\", \n new URLSearchParams({ query: url }), \n { headers: getRandomHeaders() }\n );\n\n if (!data.links) throw new Error(\"Lovetik: No links found\");\n\n return {\n author: AUTHOR,\n status: true,\n title: cleanText(data.desc),\n cover: cleanUrl(data.cover),\n no_watermark: cleanUrl(data.links.find((l: any) => l.a && !l.s)?.a), // Usually the first link is No WM\n watermark: cleanUrl(data.links.find((l: any) => l.s?.includes('Watermark'))?.a),\n music: cleanUrl(data.links.find((l: any) => l.t?.includes('Audio'))?.a),\n author_name: cleanText(data.author),\n views: \"N/A\"\n } as TikTokResult;\n\n } catch (error: any) {\n throw new Error(`Fallback Failed: ${error.message}`);\n }\n};\n\n/**\n * Main TikTok Function\n * Supports: URL Download & Search Query\n */\nexport const tiktok = async (input: string): Promise<TikTokResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n const isUrl = input.match(/tiktok\\.com/i);\n let data;\n \n try {\n if (isUrl) {\n const apiUrl = `https://www.tikwm.com/api/?url=${encodeURIComponent(input)}`;\n const response = await axios.get(apiUrl, { headers: getRandomHeaders() });\n if (response.data.code !== 0) throw new Error(\"Private video or Invalid URL\");\n data = response.data.data;\n } else {\n const apiUrl = `https://www.tikwm.com/api/feed/search`;\n const response = await axios.post(apiUrl, \n new URLSearchParams({\n keywords: input,\n count: '1',\n cursor: '0',\n HD: '1'\n }), \n { headers: { ...getRandomHeaders(), 'Cookie': 'current_language=en' } }\n );\n \n if (!response.data.data?.videos || response.data.data.videos.length === 0) {\n throw new Error(`No results found for: ${input}`);\n }\n data = response.data.data.videos[0];\n }\n\n const result: TikTokResult = {\n author: AUTHOR,\n status: true,\n title: data.title,\n cover: data.cover,\n origin_cover: data.origin_cover,\n no_watermark: data.play,\n watermark: data.wmplay,\n music: data.music,\n views: data.play_count,\n likes: data.digg_count,\n comments: data.comment_count,\n shares: data.share_count,\n downloads: data.download_count\n };\n resolve(result);\n\n } catch (primaryError) {\n if (isUrl) {\n console.warn(\"Primary TikTok API failed, switching to fallback...\");\n const fallbackData = await lovetikFallback(input);\n resolve(fallbackData);\n } else {\n throw primaryError;\n }\n }\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"TikTok processing failed\"\n });\n }\n });\n};\n\n/**\n * TikTok Slide Downloader\n */\nexport const tiktokSlide = async (url: string): Promise<TikTokResult> => {\n try {\n const response = await axios.post(\"https://api.ttsave.app/\", {\n id: url,\n hash: '1e3a27c51eb6370b0db6f9348a481d69',\n mode: 'slide',\n locale: 'en',\n loading_indicator_url: 'https://ttsave.app/images/slow-down.gif',\n unlock_url: 'https://ttsave.app/en/unlock'\n }, {\n headers: getRandomHeaders()\n });\n\n const $ = cheerio.load(response.data);\n const $element = $('div.flex.flex-col.items-center.justify-center.mt-2.mb-5');\n if ($element.length === 0) throw new Error(\"Slide not found or service unavailable\");\n const statsDiv = $element.find('div.flex.flex-row.items-center.justify-center');\n return {\n author: AUTHOR,\n status: true,\n uniqueId: $element.find('input#unique-id').attr('value'),\n title: $element.find('div.flex.flex-row.items-center.justify-center h2').text().trim(),\n profileImage: $element.find('a').first().find('img').attr('src'),\n profileUrl: $element.find('a').first().attr('href'),\n hashtags: $element.find('p.text-gray-600').text().split(' ').filter(Boolean),\n likes: statsDiv.eq(0).find('span').text().trim(),\n comments: statsDiv.eq(1).find('span').text().trim(),\n shares: statsDiv.eq(2).find('span').text().trim(),\n downloads: statsDiv.eq(3).find('span').text().trim(),\n views: statsDiv.eq(4).find('span').text().trim()\n };\n } catch (error: any) {\n return {\n author: AUTHOR,\n status: false,\n title: \"Error\",\n views: error.message\n } as TikTokResult;\n }\n};\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport { AUTHOR, SocialResult } from '../types';\n\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36',\n 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1'\n];\nconst getRandomHeaders = () => ({\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)],\n 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',\n 'Accept-Language': 'en-US,en;q=0.5',\n 'Accept-Encoding': 'gzip, deflate, br',\n 'Connection': 'keep-alive'\n});\n\n/**\n * Facebook Video Downloader\n * Source: getmyfb.com\n */\nexport const fbdl = async (url: string): Promise<SocialResult[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const { data } = await axios.post(\"https://getmyfb.com/process\", \n new URLSearchParams({\n id: url,\n locale: \"en\"\n }), \n {\n headers: {\n ...getRandomHeaders(),\n \"Content-Type\": \"application/x-www-form-urlencoded; charset=UTF-8\",\n \"Cookie\": \"PHPSESSID=mtkljtmk74aiej5h6d846gjbo4; __cflb=04dToeZfC9vebXjRcJCMjjSQh5PprejufZXs2vHCt5; _token=K5Qobnj4QvoYKeLCW6uk\" //s\n }\n }\n );\n\n const $ = cheerio.load(data);\n const results: SocialResult[] = [];\n const title = $(\"div.results-item-text\").eq(0).text().trim();\n const thumbnail = $(\".results-item-image-wrapper img\").attr(\"src\") || \"\";\n $(\"a.btn-download\").each((i, el) => {\n const link = $(el).attr(\"href\");\n if (link) {\n results.push({\n author: AUTHOR,\n status: true,\n type: 'video',\n title: title || \"Facebook Video\",\n thumbnail: thumbnail,\n url: link\n });\n }\n });\n\n if (results.length === 0) {\n const singleLink = $(\"a\").attr(\"href\");\n if(singleLink && singleLink.startsWith('http')) {\n results.push({\n author: AUTHOR,\n status: true,\n type: 'video',\n title: title,\n thumbnail: thumbnail,\n url: singleLink\n })\n } else {\n reject(new Error(\"No Facebook video found (Private or Invalid URL)\"));\n return;\n }\n }\n resolve(results);\n\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"Facebook Download Failed\"\n });\n }\n });\n};\n\n/**\n * Instagram Downloader\n * Source: indown.io\n */\nexport const igdl = async (url: string): Promise<SocialResult[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const initialResponse = await axios.get(\"https://indown.io/\", {\n headers: getRandomHeaders()\n });\n \n const _$ = cheerio.load(initialResponse.data);\n const referer = _$(\"input[name=referer]\").val() as string;\n const locale = _$(\"input[name=locale]\").val() as string;\n const _token = _$(\"input[name=_token]\").val() as string;\n const cookies = initialResponse.headers[\"set-cookie\"]?.join(\" \") || \"\";\n\n if (!_token) throw new Error(\"Failed to fetch Instagram token\");\n const { data } = await axios.post(\n \"https://indown.io/download\",\n new URLSearchParams({\n link: url,\n referer,\n locale,\n _token,\n }),\n {\n headers: {\n ...getRandomHeaders(),\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n \"Cookie\": cookies,\n \"Origin\": \"https://indown.io\",\n \"Referer\": \"https://indown.io/\"\n },\n }\n );\n\n const $ = cheerio.load(data);\n const result: SocialResult[] = [];\n $(\"video\").each(function () {\n const $$ = $(this);\n const src = $$.find(\"source\").attr(\"src\");\n const poster = $$.attr(\"poster\");\n if (src) {\n result.push({\n author: AUTHOR,\n status: true,\n type: \"video\",\n thumbnail: poster,\n url: src,\n });\n }\n });\n\n $(\"img.img-fluid\").each(function () {\n const $$ = $(this);\n const src = $$.attr(\"src\");\n if (src) {\n result.push({\n author: AUTHOR,\n status: true,\n type: \"image\",\n thumbnail: src,\n url: src,\n });\n }\n });\n \n if(result.length === 0) {\n $(\".btn-group a\").each((i, el) => {\n const link = $(el).attr(\"href\");\n if(link && link !== \"#\") {\n result.push({\n author: AUTHOR,\n status: true,\n type: \"video\",\n url: link\n });\n }\n });\n }\n\n if (result.length === 0) {\n const errorMsg = $(\".alert-danger\").text().trim();\n reject(new Error(errorMsg || \"No media found. Account might be private.\"));\n } else {\n resolve(result);\n }\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"Instagram Download Failed\"\n });\n }\n });\n};\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport { AUTHOR, TwitterResult } from '../types';\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36'\n];\nconst getRandomHeaders = () => ({\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)],\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Origin': 'https://twdown.net',\n 'Referer': 'https://twdown.net/'\n});\n\n/**\n * Twitter/X Video Downloader\n * x.com and twitter.com links\n */\nexport const twitter = async (url: string): Promise<TwitterResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n const cleanUrl = url.replace(\"x.com\", \"twitter.com\");\n const config = new URLSearchParams({ URL: cleanUrl });\n const { data } = await axios.post('https://twdown.net/download.php', config, {\n headers: getRandomHeaders()\n });\n const $ = cheerio.load(data);\n const desc = $('div:nth-child(1) > div:nth-child(2) > p').text().trim();\n const thumb = $('div:nth-child(1) > img').attr('src'); \n const video_hd = $('tbody > tr:nth-child(1) > td:nth-child(4) > a').attr('href');\n const video_sd = $('tr:nth-child(2) > td:nth-child(4) > a').attr('href'); \n let audio = $('body > div.jumbotron > div > center > div.row > div > div:nth-child(5) > table > tbody > tr:nth-child(3) > td:nth-child(4) > a').attr('href');\n if (audio && !audio.startsWith('http')) audio = 'https://twdown.net/' + audio;\n if (!video_sd && !video_hd) {\n throw new Error(\"No media found. Account might be private or link is invalid.\");\n }\n const result: TwitterResult = {\n author: AUTHOR,\n status: true,\n desc: desc || \"X/Twitter Video\",\n thumbnail: thumb || \"\",\n video_sd,\n video_hd,\n audio\n };\n resolve(result);\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"X/Twitter Download Failed\"\n });\n }\n });\n};\n","import ytdl from '@distube/ytdl-core';\nimport yts from 'yt-search';\nimport { AUTHOR, YouTubeResult, YouTubeSearchResult } from '../types';\n\n/*\n * YouTube Search\n */\nexport const search = async (query: string): Promise<YouTubeSearchResult[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const result = await yts(query);\n if (!result.all || result.all.length === 0) {\n return reject(new Error(\"No results found on YouTube.\"));\n }\n const data: YouTubeSearchResult[] = result.all.map((item: any) => {\n return {\n type: item.type as 'video' | 'channel' | 'list' | 'live',\n url: item.url,\n title: item.title,\n description: item.description,\n image: item.image,\n thumbnail: item.thumbnail,\n seconds: (item as any).seconds,\n timestamp: (item as any).timestamp,\n views: (item as any).views,\n ago: (item as any).ago,\n author: (item as any).author ? {\n name: (item as any).author.name,\n url: (item as any).author.url\n } : undefined\n };\n });\n resolve(data);\n } catch (error: any) {\n reject({\n message: error.message || \"YouTube Search Failed\"\n });\n }\n });\n};\n\n/*\n * YouTube Audio Downloader\n */\nexport const ytmp3 = async (url: string): Promise<YouTubeResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n if (!ytdl.validateURL(url)) {\n throw new Error(\"Invalid YouTube URL\");\n }\n const info = await ytdl.getInfo(url);\n const format = ytdl.chooseFormat(info.formats, { \n quality: 'highestaudio',\n filter: 'audioonly' \n });\n if (!format) throw new Error(\"No audio stream found\");\n const result: YouTubeResult = {\n author: AUTHOR,\n title: info.videoDetails.title,\n thumbnail: info.videoDetails.thumbnails[info.videoDetails.thumbnails.length - 1].url, // Highest res\n channel: info.videoDetails.ownerChannelName,\n published: info.videoDetails.publishDate,\n views: info.videoDetails.viewCount,\n duration: info.videoDetails.lengthSeconds,\n url: format.url\n };\n resolve(result);\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"YouTube MP3 Failed\"\n });\n }\n });\n};\n\n/*\n * YouTube Video Downloader\n */\nexport const ytmp4 = async (url: string): Promise<YouTubeResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n if (!ytdl.validateURL(url)) {\n throw new Error(\"Invalid YouTube URL\");\n }\n const info = await ytdl.getInfo(url);\n const format = ytdl.chooseFormat(info.formats, { \n quality: 'highest',\n filter: (f) => f.hasAudio === true && f.hasVideo === true && f.container === 'mp4'\n });\n const finalFormat = format || ytdl.chooseFormat(info.formats, { \n quality: 'highest',\n filter: (f) => f.hasAudio === true && f.hasVideo === true\n });\n if (!finalFormat) throw new Error(\"No video stream found\");\n const result: YouTubeResult = {\n author: AUTHOR,\n title: info.videoDetails.title,\n thumbnail: info.videoDetails.thumbnails[info.videoDetails.thumbnails.length - 1].url,\n channel: info.videoDetails.ownerChannelName,\n published: info.videoDetails.publishDate,\n views: info.videoDetails.viewCount,\n duration: info.videoDetails.lengthSeconds,\n url: finalFormat.url\n };\n resolve(result);\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"YouTube MP4 Failed\"\n });\n }\n });\n};\n\n/**\n * YouTube Play (Search & Download)\n * Searches for a query, grabs the first result, and returns the download link\n */\nexport const play = async (query: string, type: 'mp3' | 'mp4' = 'mp3'): Promise<YouTubeResult> => {\n try {\n const searchResults = await yts(query);\n const videos = searchResults.all.filter((v: any) => v.type === 'video');\n if (videos.length === 0) {\n throw new Error(`No video results found for: ${query}`);\n }\n const firstVideo = videos[0];\n if (type === 'mp4') {\n return await ytmp4(firstVideo.url);\n } else {\n return await ytmp3(firstVideo.url);\n }\n } catch (error: any) {\n throw new Error(`Play Failed: ${error.message}`);\n }\n};\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport FormData from 'form-data';\nimport https from 'https';\nimport { AUTHOR, Author } from '../types';\n\nconst HEADERS = {\n 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'\n};\n\nconst ignoreSSL = new https.Agent({ \n rejectUnauthorized: false,\n servername: 'inferenceengine.vyro.ai'\n});\n\nconst MORSE_MAP: Record<string, string> = {\n 'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.',\n 'G': '--.', 'H': '....', 'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..',\n 'M': '--', 'N': '-.', 'O': '---', 'P': '.--.', 'Q': '--.-', 'R': '.-.',\n 'S': '...', 'T': '-', 'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-',\n 'Y': '-.--', 'Z': '--..',\n '0': '-----', '1': '.----', '2': '..---', '3': '...--', '4': '....-',\n '5': '.....', '6': '-....', '7': '--...', '8': '---..', '9': '----.',\n '.': '.-.-.-', ',': '--..--', '?': '..--..', \"'\": '.----.', '!': '-.-.--',\n '/': '-..-.', '(': '-.--.', ')': '-.--.-', '&': '.-...', ':': '---...',\n ';': '-.-.-.', '=': '-...-', '+': '.-.-.', '-': '-....-', '_': '..--.-',\n '\"': '.-..-.', '$': '...-..-', '@': '.--.-.',\n ' ': '/' \n};\nconst REVERSE_MORSE = Object.fromEntries(\n Object.entries(MORSE_MAP).map(([char, code]) => [code, char])\n);\n\nexport const ssweb = async (url: string, device: 'desktop' | 'tablet' | 'phone' = 'desktop'): Promise<Buffer> => {\n return new Promise(async (resolve, reject) => {\n try {\n const baseURL = 'https://www.screenshotmachine.com';\n const param = { url: url, device: device, cacheLimit: 0 };\n const { data, headers } = await axios.post(`${baseURL}/capture.php`, \n new URLSearchParams(param as any), {\n headers: { 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', 'User-Agent': HEADERS['User-Agent'] }\n });\n if (data.status !== 'success') throw new Error('Screenshot generation failed');\n const cookies = headers['set-cookie']?.join('') || '';\n const imageResponse = await axios.get(`${baseURL}/${data.link}`, {\n headers: { 'cookie': cookies, 'User-Agent': HEADERS['User-Agent'] },\n responseType: 'arraybuffer'\n });\n resolve(imageResponse.data);\n } catch (error: any) {\n reject(new Error(`SSWeb Failed: ${error.message}`));\n }\n });\n};\n\nexport const remini = async (imageUrl: string, method: 'enhance' | 'recolor' | 'dehaze' = 'enhance'): Promise<Buffer> => {\n return new Promise(async (resolve, reject) => {\n try {\n const validMethods = [\"enhance\", \"recolor\", \"dehaze\"];\n const selectedMethod = validMethods.includes(method) ? method : \"enhance\";\n const imgBuffer = await axios.get(imageUrl, { responseType: 'arraybuffer' });\n const form = new FormData();\n form.append(\"model_version\", 1, {\n header: { \"Content-Transfer-Encoding\": \"binary\", \"contentType\": \"multipart/form-data; charset=utf-8\" }\n });\n form.append(\"image\", Buffer.from(imgBuffer.data), {\n filename: \"enhance_image_body.jpg\",\n contentType: \"image/jpeg\",\n });\n const url = `https://inferenceengine.vyro.ai/${selectedMethod}`;\n const response = await axios.post(url, form, {\n headers: {\n ...form.getHeaders(),\n \"User-Agent\": \"okhttp/4.9.3\",\n \"Connection\": \"Keep-Alive\",\n \"Accept-Encoding\": \"gzip\"\n },\n responseType: 'arraybuffer',\n httpsAgent: ignoreSSL \n });\n resolve(response.data);\n } catch (error: any) {\n reject(new Error(`Remini Failed: ${error.message}`));\n }\n });\n};\n\nexport const styleText = async (text: string): Promise<{ author: Author, name: string, result: string }[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const { data } = await axios.get(`http://qaz.wtf/u/convert.cgi?text=${encodeURIComponent(text)}`);\n const $ = cheerio.load(data);\n const result: { author: Author, name: string, result: string }[] = [];\n $('table > tbody > tr').each((i, el) => {\n const name = $(el).find('td').first().text().trim();\n const styled = $(el).find('td').eq(1).text().trim();\n if (name && styled) {\n result.push({ author: AUTHOR, name: name, result: styled });\n }\n });\n resolve(result);\n } catch (error: any) {\n reject(new Error(`StyleText Failed: ${error.message}`));\n }\n });\n};\n\nexport const wattpad = async (query: string): Promise<any[]> => {\n try {\n const { data } = await axios.get(`https://www.wattpad.com/search/${encodeURIComponent(query)}`, { headers: HEADERS });\n const $ = cheerio.load(data);\n const results: any[] = [];\n $('.story-card').each((i, el) => {\n const title = $(el).find('.story-title').text().trim();\n const image = $(el).find('.cover img').attr('src');\n const link = 'https://www.wattpad.com' + $(el).find('a.story-card-data').attr('href');\n const reads = $(el).find('.read-count').text().trim(); \n if (title) results.push({ author: AUTHOR, title, image, link, reads });\n });\n if (results.length === 0) {\n $('div.cover').each((i, el) => {\n results.push({ author: AUTHOR, image: $(el).find('img').attr('src') });\n });\n }\n return results;\n } catch (error: any) {\n throw new Error(`Wattpad Failed: ${error.message}`);\n }\n};\n\n/**\n * Morse Code Engine\n * Encodes Text to Morse OR Decodes Morse to Text\n */\nexport const morse = async (input: string, mode: 'encode' | 'decode' = 'encode'): Promise<string> => {\n return new Promise((resolve) => {\n if (mode === 'encode') {\n const result = input\n .toUpperCase()\n .split('')\n .map(char => MORSE_MAP[char] || char)\n .join(' ');\n resolve(result);\n } else {\n const result = input\n .split(' ') \n .map(code => REVERSE_MORSE[code] || (code === '/' ? ' ' : code))\n .join('')\n .replace(/\\s+/g, ' ').trim();\n resolve(result);\n }\n });\n};\n\nexport const tts = async (text: string, lang: string = 'en'): Promise<Buffer> => {\n return new Promise(async (resolve, reject) => {\n try {\n const GOOGLE_TTS_URL = 'https://translate.google.com/translate_tts';\n \n // Limit text length (Google blocks long requests ~200 chars)\n if (text.length > 200) {\n throw new Error(\"Text is too long. Maximum 200 characters.\");\n }\n\n const { data } = await axios.get(GOOGLE_TTS_URL, {\n params: {\n ie: 'UTF-8',\n q: text,\n tl: lang,\n client: 'tw-ob' // The magic key to bypass auth\n },\n responseType: 'arraybuffer', // We need raw audio data\n headers: HEADERS\n });\n\n resolve(data);\n } catch (error: any) {\n reject(new Error(`TTS Failed: ${error.message}`));\n }\n });\n};\n\n\nexport const chords = async (query: string): Promise<any> => {\n try {\n const searchUrl = `https://www.gitagram.com/?s=${encodeURIComponent(query).replace(/%20/g, \"+\")}`;\n const { data } = await axios.get(searchUrl, { headers: HEADERS });\n const $ = cheerio.load(data); \n const firstResultUrl = $(\"table.table > tbody > tr\").eq(0).find(\"td\").eq(0).find(\"a\").eq(0).attr(\"href\");\n if (!firstResultUrl) throw new Error(\"No chords found\");\n const songPage = await axios.get(firstResultUrl, { headers: HEADERS });\n const $song = cheerio.load(songPage.data); \n const $hcontent = $song(\"div.hcontent\");\n const artist = $hcontent.find(\"div > a > span.subtitle\").text().trim();\n const title = $hcontent.find(\"h1.title\").text().trim();\n const content = $song(\"div.content > pre\").text().trim();\n return { author: AUTHOR, title, artist, url: firstResultUrl, chord: content };\n } catch (error: any) {\n throw new Error(`Chords Failed: ${error.message}`);\n }\n};\n","import axios from 'axios';\nimport { AUTHOR, LyricsResult } from '../types';\n\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'\n];\n\nconst getRandomHeaders = () => ({\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)]\n});\n\nconst fetchLrcLib = async (query: string): Promise<LyricsResult> => {\n const searchUrl = `https://lrclib.net/api/search?q=${encodeURIComponent(query)}`;\n const { data } = await axios.get(searchUrl, { headers: getRandomHeaders() });\n if (!Array.isArray(data) || data.length === 0) {\n throw new Error(\"No lyrics found on LRCLIB.\");\n }\n \n const track = data.find((t: any) => t.plainLyrics) || data[0];\n if (!track.plainLyrics && !track.syncedLyrics) {\n throw new Error(\"Track found but no lyrics content.\");\n }\n return {\n author: AUTHOR,\n status: true,\n title: track.trackName,\n artist: track.artistName,\n image: track.albumArt || \"https://ibb.co/fVyg0TN6\",\n url: `https://lrclib.net/api/get/${track.id}`,\n lyrics: track.plainLyrics || track.syncedLyrics\n };\n};\n\nconst fetchGenius = async (query: string): Promise<LyricsResult> => {\n const searchUrl = `https://genius.com/api/search/multi?per_page=1&q=${encodeURIComponent(query)}`;\n const { data } = await axios.get(searchUrl, { \n headers: { ...getRandomHeaders(), 'Referer': 'https://genius.com/' } \n });\n\n const hit = data.response?.sections?.find((s: any) => s.type === 'song')?.hits?.[0]?.result;\n if (!hit) throw new Error(\"No songs found on Genius.\");\n return {\n author: AUTHOR,\n status: true,\n title: hit.title,\n artist: hit.artist_names,\n image: hit.song_art_image_thumbnail_url,\n url: hit.url,\n lyrics: `[Lyrics available at source]\\n${hit.url}`\n };\n};\n\nexport const lyrics = async (query: string): Promise<LyricsResult> => {\n try {\n return await fetchLrcLib(query);\n } catch (lrcError) {\n try {\n return await fetchGenius(query);\n } catch (geniusError: any) {\n throw new Error(`Lyrics lookup failed. LRCLIB: ${lrcError}. Genius: ${geniusError.message}`);\n }\n }\n};\n","import axios from 'axios';\nimport AdmZip from 'adm-zip';\nimport { AUTHOR } from '../types';\n\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'\n];\n\nconst TEXT_EXTENSIONS = [\n 'js', 'ts', 'jsx', 'tsx', 'json', 'html', 'css', 'scss', 'less', \n 'md', 'txt', 'yml', 'yaml', 'sql', 'py', 'java', 'c', 'cpp', 'h', \n 'cs', 'php', 'rb', 'go', 'rs', 'swift', 'kt', 'xml', 'svg', 'env', \n 'gitignore', 'dockerfile', 'sh', 'bat', 'conf', 'ini', 'properties'\n];\n\nconst BINARY_EXTENSIONS = [\n 'png', 'jpg', 'jpeg', 'gif', 'webp', 'ico', 'bmp', 'tiff', \n 'mp3', 'wav', 'ogg', 'mp4', 'webm', 'mov', 'mkv', 'zip', 'tar', 'gz', '7z', 'rar'\n];\n\nexport const unzipToText = async (url: string): Promise<{ author: typeof AUTHOR, buffer: Buffer, filename: string }> => {\n try {\n const response = await axios.get(url, { \n responseType: 'arraybuffer',\n headers: {\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)]\n }\n });\n\n const zipBuffer = Buffer.from(response.data);\n const zip = new AdmZip(zipBuffer);\n const zipEntries = zip.getEntries();\n\n let output = `EXTRACTED BY HEAVSTAL TECH\\nSOURCE: ${url}\\nDATE: ${new Date().toISOString()}\\n\\n`;\n\n for (const entry of zipEntries) {\n if (entry.isDirectory) continue;\n\n const path = entry.entryName;\n const ext = path.split('.').pop()?.toLowerCase() || '';\n \n output += `================================================================================\\n`;\n output += `FILE: ${path}\\n`;\n output += `================================================================================\\n`;\n\n try {\n if (ext === 'pdf') {\n output += `[File contents not extracted - PDF Document]\\n\\n`;\n } \n else if (BINARY_EXTENSIONS.includes(ext)) {\n const b64 = entry.getData().toString('base64');\n const mime = ext === 'mp3' ? 'audio/mpeg' : `image/${ext}`;\n output += `data:${mime};base64,${b64}\\n\\n`;\n } \n else if (TEXT_EXTENSIONS.includes(ext) || !ext) {\n const content = entry.getData().toString('utf8');\n output += `${content}\\n\\n`;\n } \n else {\n const buffer = entry.getData();\n if (buffer.includes(0x00)) {\n output += `data:application/octet-stream;base64,${buffer.toString('base64')}\\n\\n`;\n } else {\n output += `${buffer.toString('utf8')}\\n\\n`;\n }\n }\n } catch (err) {\n output += `[Error reading file: ${(err as Error).message}]\\n\\n`;\n }\n }\n\n return {\n author: AUTHOR,\n buffer: Buffer.from(output, 'utf-8'),\n filename: 'extracted_codebase.txt'\n };\n\n } catch (error: any) {\n throw new Error(`Unzip Failed: ${error.message}`);\n }\n};\n","import { tiktok, tiktokSlide } from './dl/tiktok';\nimport { igdl, fbdl } from './dl/social';\nimport { twitter } from './dl/twitter';\nimport { search as ytSearch, ytmp3, ytmp4, play } from './dl/youtube';\nimport { ssweb, remini, styleText, wattpad, chords, morse, tts } from './utils/tools';\n// import { ephoto } from './utils/maker';\nimport { lyrics } from './search/lyrics';\nimport { unzipToText } from './utils/zipper';\n\nexport * from './types';\n\nexport { \n tiktok, \n tiktokSlide, \n igdl, \n fbdl, \n twitter,\n unzipToText,\n twitter as xdl,\n ytSearch, \n ytmp3, \n ytmp4, \n play,\n ssweb, \n remini, \n styleText, \n wattpad, \n chords,\n morse,\n tts,\n // ephoto,\n lyrics\n};\n\nexport const downloader = {\n tiktok,\n tiktokSlide,\n igdl,\n fbdl,\n twitter,\n xdl: twitter,\n ytmp3,\n ytmp4,\n play\n};\n\nexport const search = {\n youtube: ytSearch,\n wattpad,\n chords,\n lyrics\n};\n\nexport const tools = {\n ssweb,\n remini,\n unzipToText,\n unzip: unzipToText,\n styleText,\n morse,\n tts,\n// ephoto\n};\n\nexport default {\n downloader,\n search,\n tools\n};\n"]}
1
+ {"version":3,"sources":["../src/types.ts","../src/dl/tiktok.ts","../src/dl/social.ts","../src/dl/twitter.ts","../src/dl/youtube.ts","../src/utils/tools.ts","../src/search/lyrics.ts","../src/utils/zipper.ts","../src/index.ts"],"names":["axios","cheerio","USER_AGENTS","getRandomHeaders","cheerio2","cleanUrl","cheerio3","search"],"mappings":"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","file":"index.mjs","sourcesContent":["export interface Author {\n name: string;\n source: string;\n}\n\nexport const AUTHOR: Author = {\n name: \"HEAVSTAL TECH\",\n source: \"https://heavstal-tech.vercel.app\"\n};\n\nexport interface TikTokResult {\n author: Author;\n status: boolean;\n title: string;\n cover?: string;\n origin_cover?: string;\n no_watermark?: string;\n watermark?: string;\n music?: string;\n views?: number | string;\n likes?: number | string;\n comments?: number | string;\n shares?: number | string;\n downloads?: number | string;\n uniqueId?: string;\n profileUrl?: string;\n profileImage?: string;\n hashtags?: string[];\n slideImages?: string[];\n author_name?: string;\n}\n\nexport interface SocialResult {\n author: Author;\n status: boolean;\n type: 'video' | 'image';\n title?: string;\n thumbnail?: string;\n url: string;\n}\n\nexport interface YouTubeResult {\n author: Author;\n title: string;\n thumbnail: string;\n channel: string;\n published: string;\n views: string;\n url: string;\n duration?: number | string;\n status?: boolean;\n}\n\nexport interface YouTubeSearchResult {\n type: 'video' | 'channel' | 'list' | 'live';\n url: string;\n title: string;\n description?: string;\n image?: string;\n thumbnail?: string;\n seconds?: number;\n timestamp?: string;\n views?: number;\n ago?: string;\n author?: {\n name: string;\n url: string;\n };\n}\n\nexport interface UtilsResult {\n author: Author;\n status: boolean;\n data: Buffer | string | any;\n}\n\nexport interface TwitterResult {\n author: Author;\n status: boolean;\n desc: string;\n thumbnail: string;\n video_sd?: string;\n video_hd?: string;\n audio?: string;\n}\n\nexport interface LyricsResult {\n author: Author;\n status: boolean;\n title: string;\n artist: string;\n image: string;\n url: string;\n lyrics: string;\n}\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport { AUTHOR, TikTokResult } from '../types';\n\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36',\n 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1'\n];\n\nconst getRandomHeaders = () => ({\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)],\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n 'Accept': 'application/json, text/javascript, */*; q=0.01'\n});\n\nconst cleanText = (str: string) => str ? str.replace(/(<br?\\s?\\/?>)/gi, \" \\n\").replace(/(<([^>]+)>)/gi, \"\").trim() : \"\";\nconst cleanUrl = (url: string) => url ? url.replace('https:', 'http:') : \"\";\n\nconst lovetikFallback = async (url: string): Promise<TikTokResult> => {\n try {\n const { data } = await axios.post(\"https://lovetik.com/api/ajax/search\", \n new URLSearchParams({ query: url }), \n { headers: getRandomHeaders() }\n );\n\n if (!data.links) throw new Error(\"Lovetik: No links found\");\n\n return {\n author: AUTHOR,\n status: true,\n title: cleanText(data.desc),\n cover: cleanUrl(data.cover),\n no_watermark: cleanUrl(data.links.find((l: any) => l.a && !l.s)?.a), // Usually the first link is No WM\n watermark: cleanUrl(data.links.find((l: any) => l.s?.includes('Watermark'))?.a),\n music: cleanUrl(data.links.find((l: any) => l.t?.includes('Audio'))?.a),\n author_name: cleanText(data.author),\n views: \"N/A\"\n } as TikTokResult;\n\n } catch (error: any) {\n throw new Error(`Fallback Failed: ${error.message}`);\n }\n};\n\n/**\n * Main TikTok Function\n * Supports: URL Download & Search Query\n */\nexport const tiktok = async (input: string): Promise<TikTokResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n const isUrl = input.match(/tiktok\\.com/i);\n let data;\n \n try {\n if (isUrl) {\n const apiUrl = `https://www.tikwm.com/api/?url=${encodeURIComponent(input)}`;\n const response = await axios.get(apiUrl, { headers: getRandomHeaders() });\n if (response.data.code !== 0) throw new Error(\"Private video or Invalid URL\");\n data = response.data.data;\n } else {\n const apiUrl = `https://www.tikwm.com/api/feed/search`;\n const response = await axios.post(apiUrl, \n new URLSearchParams({\n keywords: input,\n count: '1',\n cursor: '0',\n HD: '1'\n }), \n { headers: { ...getRandomHeaders(), 'Cookie': 'current_language=en' } }\n );\n \n if (!response.data.data?.videos || response.data.data.videos.length === 0) {\n throw new Error(`No results found for: ${input}`);\n }\n data = response.data.data.videos[0];\n }\n\n const result: TikTokResult = {\n author: AUTHOR,\n status: true,\n title: data.title,\n cover: data.cover,\n origin_cover: data.origin_cover,\n no_watermark: data.play,\n watermark: data.wmplay,\n music: data.music,\n views: data.play_count,\n likes: data.digg_count,\n comments: data.comment_count,\n shares: data.share_count,\n downloads: data.download_count\n };\n resolve(result);\n\n } catch (primaryError) {\n if (isUrl) {\n console.warn(\"Primary TikTok API failed, switching to fallback...\");\n const fallbackData = await lovetikFallback(input);\n resolve(fallbackData);\n } else {\n throw primaryError;\n }\n }\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"TikTok processing failed\"\n });\n }\n });\n};\n\n/**\n * TikTok Slide Downloader\n */\nexport const tiktokSlide = async (url: string): Promise<TikTokResult> => {\n try {\n const response = await axios.post(\"https://api.ttsave.app/\", {\n id: url,\n hash: '1e3a27c51eb6370b0db6f9348a481d69',\n mode: 'slide',\n locale: 'en',\n loading_indicator_url: 'https://ttsave.app/images/slow-down.gif',\n unlock_url: 'https://ttsave.app/en/unlock'\n }, {\n headers: getRandomHeaders()\n });\n\n const $ = cheerio.load(response.data);\n const $element = $('div.flex.flex-col.items-center.justify-center.mt-2.mb-5');\n if ($element.length === 0) throw new Error(\"Slide not found or service unavailable\");\n const statsDiv = $element.find('div.flex.flex-row.items-center.justify-center');\n return {\n author: AUTHOR,\n status: true,\n uniqueId: $element.find('input#unique-id').attr('value'),\n title: $element.find('div.flex.flex-row.items-center.justify-center h2').text().trim(),\n profileImage: $element.find('a').first().find('img').attr('src'),\n profileUrl: $element.find('a').first().attr('href'),\n hashtags: $element.find('p.text-gray-600').text().split(' ').filter(Boolean),\n likes: statsDiv.eq(0).find('span').text().trim(),\n comments: statsDiv.eq(1).find('span').text().trim(),\n shares: statsDiv.eq(2).find('span').text().trim(),\n downloads: statsDiv.eq(3).find('span').text().trim(),\n views: statsDiv.eq(4).find('span').text().trim()\n };\n } catch (error: any) {\n return {\n author: AUTHOR,\n status: false,\n title: \"Error\",\n views: error.message\n } as TikTokResult;\n }\n};\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport { AUTHOR, SocialResult } from '../types';\n\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36',\n 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1'\n];\nconst getRandomHeaders = () => ({\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)],\n 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',\n 'Accept-Language': 'en-US,en;q=0.5',\n 'Accept-Encoding': 'gzip, deflate, br',\n 'Connection': 'keep-alive'\n});\n\n/**\n * Facebook Video Downloader\n * Source: getmyfb.com\n */\nexport const fbdl = async (url: string): Promise<SocialResult[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const { data } = await axios.post(\"https://getmyfb.com/process\", \n new URLSearchParams({\n id: url,\n locale: \"en\"\n }), \n {\n headers: {\n ...getRandomHeaders(),\n \"Content-Type\": \"application/x-www-form-urlencoded; charset=UTF-8\",\n \"Cookie\": \"PHPSESSID=mtkljtmk74aiej5h6d846gjbo4; __cflb=04dToeZfC9vebXjRcJCMjjSQh5PprejufZXs2vHCt5; _token=K5Qobnj4QvoYKeLCW6uk\" //s\n }\n }\n );\n\n const $ = cheerio.load(data);\n const results: SocialResult[] = [];\n const title = $(\"div.results-item-text\").eq(0).text().trim();\n const thumbnail = $(\".results-item-image-wrapper img\").attr(\"src\") || \"\";\n $(\"a.btn-download\").each((i, el) => {\n const link = $(el).attr(\"href\");\n if (link) {\n results.push({\n author: AUTHOR,\n status: true,\n type: 'video',\n title: title || \"Facebook Video\",\n thumbnail: thumbnail,\n url: link\n });\n }\n });\n\n if (results.length === 0) {\n const singleLink = $(\"a\").attr(\"href\");\n if(singleLink && singleLink.startsWith('http')) {\n results.push({\n author: AUTHOR,\n status: true,\n type: 'video',\n title: title,\n thumbnail: thumbnail,\n url: singleLink\n })\n } else {\n reject(new Error(\"No Facebook video found (Private or Invalid URL)\"));\n return;\n }\n }\n resolve(results);\n\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"Facebook Download Failed\"\n });\n }\n });\n};\n\n/**\n * Instagram Downloader\n * Source: indown.io\n */\nexport const igdl = async (url: string): Promise<SocialResult[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const initialResponse = await axios.get(\"https://indown.io/\", {\n headers: getRandomHeaders()\n });\n \n const _$ = cheerio.load(initialResponse.data);\n const referer = _$(\"input[name=referer]\").val() as string;\n const locale = _$(\"input[name=locale]\").val() as string;\n const _token = _$(\"input[name=_token]\").val() as string;\n const cookies = initialResponse.headers[\"set-cookie\"]?.join(\" \") || \"\";\n\n if (!_token) throw new Error(\"Failed to fetch Instagram token\");\n const { data } = await axios.post(\n \"https://indown.io/download\",\n new URLSearchParams({\n link: url,\n referer,\n locale,\n _token,\n }),\n {\n headers: {\n ...getRandomHeaders(),\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n \"Cookie\": cookies,\n \"Origin\": \"https://indown.io\",\n \"Referer\": \"https://indown.io/\"\n },\n }\n );\n\n const $ = cheerio.load(data);\n const result: SocialResult[] = [];\n $(\"video\").each(function () {\n const $$ = $(this);\n const src = $$.find(\"source\").attr(\"src\");\n const poster = $$.attr(\"poster\");\n if (src) {\n result.push({\n author: AUTHOR,\n status: true,\n type: \"video\",\n thumbnail: poster,\n url: src,\n });\n }\n });\n\n $(\"img.img-fluid\").each(function () {\n const $$ = $(this);\n const src = $$.attr(\"src\");\n if (src) {\n result.push({\n author: AUTHOR,\n status: true,\n type: \"image\",\n thumbnail: src,\n url: src,\n });\n }\n });\n \n if(result.length === 0) {\n $(\".btn-group a\").each((i, el) => {\n const link = $(el).attr(\"href\");\n if(link && link !== \"#\") {\n result.push({\n author: AUTHOR,\n status: true,\n type: \"video\",\n url: link\n });\n }\n });\n }\n\n if (result.length === 0) {\n const errorMsg = $(\".alert-danger\").text().trim();\n reject(new Error(errorMsg || \"No media found. Account might be private.\"));\n } else {\n resolve(result);\n }\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"Instagram Download Failed\"\n });\n }\n });\n};\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport { AUTHOR, TwitterResult } from '../types';\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36'\n];\nconst getRandomHeaders = () => ({\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)],\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Origin': 'https://twdown.net',\n 'Referer': 'https://twdown.net/'\n});\n\n/**\n * Twitter/X Video Downloader\n * x.com and twitter.com links\n */\nexport const twitter = async (url: string): Promise<TwitterResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n const cleanUrl = url.replace(\"x.com\", \"twitter.com\");\n const config = new URLSearchParams({ URL: cleanUrl });\n const { data } = await axios.post('https://twdown.net/download.php', config, {\n headers: getRandomHeaders()\n });\n const $ = cheerio.load(data);\n const desc = $('div:nth-child(1) > div:nth-child(2) > p').text().trim();\n const thumb = $('div:nth-child(1) > img').attr('src'); \n const video_hd = $('tbody > tr:nth-child(1) > td:nth-child(4) > a').attr('href');\n const video_sd = $('tr:nth-child(2) > td:nth-child(4) > a').attr('href'); \n let audio = $('body > div.jumbotron > div > center > div.row > div > div:nth-child(5) > table > tbody > tr:nth-child(3) > td:nth-child(4) > a').attr('href');\n if (audio && !audio.startsWith('http')) audio = 'https://twdown.net/' + audio;\n if (!video_sd && !video_hd) {\n throw new Error(\"No media found. Account might be private or link is invalid.\");\n }\n const result: TwitterResult = {\n author: AUTHOR,\n status: true,\n desc: desc || \"X/Twitter Video\",\n thumbnail: thumb || \"\",\n video_sd,\n video_hd,\n audio\n };\n resolve(result);\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"X/Twitter Download Failed\"\n });\n }\n });\n};\n","import ytdl from '@distube/ytdl-core';\nimport yts from 'yt-search';\nimport { AUTHOR, YouTubeResult, YouTubeSearchResult } from '../types';\n\n/*\n * YouTube Search\n */\nexport const search = async (query: string): Promise<YouTubeSearchResult[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const result = await yts(query);\n if (!result.all || result.all.length === 0) {\n return reject(new Error(\"No results found on YouTube.\"));\n }\n const data: YouTubeSearchResult[] = result.all.map((item: any) => {\n return {\n type: item.type as 'video' | 'channel' | 'list' | 'live',\n url: item.url,\n title: item.title,\n description: item.description,\n image: item.image,\n thumbnail: item.thumbnail,\n seconds: (item as any).seconds,\n timestamp: (item as any).timestamp,\n views: (item as any).views,\n ago: (item as any).ago,\n author: (item as any).author ? {\n name: (item as any).author.name,\n url: (item as any).author.url\n } : undefined\n };\n });\n resolve(data);\n } catch (error: any) {\n reject({\n message: error.message || \"YouTube Search Failed\"\n });\n }\n });\n};\n\n/*\n * YouTube Audio Downloader\n */\nexport const ytmp3 = async (url: string): Promise<YouTubeResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n if (!ytdl.validateURL(url)) {\n throw new Error(\"Invalid YouTube URL\");\n }\n const info = await ytdl.getInfo(url);\n const format = ytdl.chooseFormat(info.formats, { \n quality: 'highestaudio',\n filter: 'audioonly' \n });\n if (!format) throw new Error(\"No audio stream found\");\n const result: YouTubeResult = {\n author: AUTHOR,\n title: info.videoDetails.title,\n thumbnail: info.videoDetails.thumbnails[info.videoDetails.thumbnails.length - 1].url, // Highest res\n channel: info.videoDetails.ownerChannelName,\n published: info.videoDetails.publishDate,\n views: info.videoDetails.viewCount,\n duration: info.videoDetails.lengthSeconds,\n url: format.url\n };\n resolve(result);\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"YouTube MP3 Failed\"\n });\n }\n });\n};\n\n/*\n * YouTube Video Downloader\n */\nexport const ytmp4 = async (url: string): Promise<YouTubeResult> => {\n return new Promise(async (resolve, reject) => {\n try {\n if (!ytdl.validateURL(url)) {\n throw new Error(\"Invalid YouTube URL\");\n }\n const info = await ytdl.getInfo(url);\n const format = ytdl.chooseFormat(info.formats, { \n quality: 'highest',\n filter: (f) => f.hasAudio === true && f.hasVideo === true && f.container === 'mp4'\n });\n const finalFormat = format || ytdl.chooseFormat(info.formats, { \n quality: 'highest',\n filter: (f) => f.hasAudio === true && f.hasVideo === true\n });\n if (!finalFormat) throw new Error(\"No video stream found\");\n const result: YouTubeResult = {\n author: AUTHOR,\n title: info.videoDetails.title,\n thumbnail: info.videoDetails.thumbnails[info.videoDetails.thumbnails.length - 1].url,\n channel: info.videoDetails.ownerChannelName,\n published: info.videoDetails.publishDate,\n views: info.videoDetails.viewCount,\n duration: info.videoDetails.lengthSeconds,\n url: finalFormat.url\n };\n resolve(result);\n } catch (error: any) {\n reject({\n author: AUTHOR,\n status: false,\n message: error.message || \"YouTube MP4 Failed\"\n });\n }\n });\n};\n\n/**\n * YouTube Play (Search & Download)\n * Searches for a query, grabs the first result, and returns the download link\n */\nexport const play = async (query: string, type: 'mp3' | 'mp4' = 'mp3'): Promise<YouTubeResult> => {\n try {\n const searchResults = await yts(query);\n const videos = searchResults.all.filter((v: any) => v.type === 'video');\n if (videos.length === 0) {\n throw new Error(`No video results found for: ${query}`);\n }\n const firstVideo = videos[0];\n if (type === 'mp4') {\n return await ytmp4(firstVideo.url);\n } else {\n return await ytmp3(firstVideo.url);\n }\n } catch (error: any) {\n throw new Error(`Play Failed: ${error.message}`);\n }\n};\n","import axios from 'axios';\nimport * as cheerio from 'cheerio';\nimport FormData from 'form-data';\nimport https from 'https';\nimport { AUTHOR, Author } from '../types';\n\nconst HEADERS = {\n 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',\n 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'\n};\n\nconst ignoreSSL = new https.Agent({ \n rejectUnauthorized: false,\n servername: 'inferenceengine.vyro.ai'\n});\n\nconst MORSE_MAP: Record<string, string> = {\n 'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.',\n 'G': '--.', 'H': '....', 'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..',\n 'M': '--', 'N': '-.', 'O': '---', 'P': '.--.', 'Q': '--.-', 'R': '.-.',\n 'S': '...', 'T': '-', 'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-',\n 'Y': '-.--', 'Z': '--..',\n '0': '-----', '1': '.----', '2': '..---', '3': '...--', '4': '....-',\n '5': '.....', '6': '-....', '7': '--...', '8': '---..', '9': '----.',\n '.': '.-.-.-', ',': '--..--', '?': '..--..', \"'\": '.----.', '!': '-.-.--',\n '/': '-..-.', '(': '-.--.', ')': '-.--.-', '&': '.-...', ':': '---...',\n ';': '-.-.-.', '=': '-...-', '+': '.-.-.', '-': '-....-', '_': '..--.-',\n '\"': '.-..-.', '$': '...-..-', '@': '.--.-.',\n ' ': '/' \n};\nconst REVERSE_MORSE = Object.fromEntries(\n Object.entries(MORSE_MAP).map(([char, code]) => [code, char])\n);\n\nexport const ssweb = async (url: string, device: 'desktop' | 'tablet' | 'phone' = 'desktop'): Promise<Buffer> => {\n return new Promise(async (resolve, reject) => {\n try {\n const baseURL = 'https://www.screenshotmachine.com';\n const param = { url: url, device: device, cacheLimit: 0 };\n const { data, headers } = await axios.post(`${baseURL}/capture.php`, \n new URLSearchParams(param as any), {\n headers: { 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', 'User-Agent': HEADERS['User-Agent'] }\n });\n if (data.status !== 'success') throw new Error('Screenshot generation failed');\n const cookies = headers['set-cookie']?.join('') || '';\n const imageResponse = await axios.get(`${baseURL}/${data.link}`, {\n headers: { 'cookie': cookies, 'User-Agent': HEADERS['User-Agent'] },\n responseType: 'arraybuffer'\n });\n resolve(imageResponse.data);\n } catch (error: any) {\n reject(new Error(`SSWeb Failed: ${error.message}`));\n }\n });\n};\n\nexport const remini = async (imageUrl: string, method: 'enhance' | 'recolor' | 'dehaze' = 'enhance'): Promise<Buffer> => {\n return new Promise(async (resolve, reject) => {\n try {\n const validMethods = [\"enhance\", \"recolor\", \"dehaze\"];\n const selectedMethod = validMethods.includes(method) ? method : \"enhance\";\n const imgBuffer = await axios.get(imageUrl, { responseType: 'arraybuffer' });\n const form = new FormData();\n form.append(\"model_version\", 1, {\n header: { \"Content-Transfer-Encoding\": \"binary\", \"contentType\": \"multipart/form-data; charset=utf-8\" }\n });\n form.append(\"image\", Buffer.from(imgBuffer.data), {\n filename: \"enhance_image_body.jpg\",\n contentType: \"image/jpeg\",\n });\n const url = `https://inferenceengine.vyro.ai/${selectedMethod}`;\n const response = await axios.post(url, form, {\n headers: {\n ...form.getHeaders(),\n \"User-Agent\": \"okhttp/4.9.3\",\n \"Connection\": \"Keep-Alive\",\n \"Accept-Encoding\": \"gzip\"\n },\n responseType: 'arraybuffer',\n httpsAgent: ignoreSSL \n });\n resolve(response.data);\n } catch (error: any) {\n reject(new Error(`Remini Failed: ${error.message}`));\n }\n });\n};\n\nexport const styleText = async (text: string): Promise<{ author: Author, name: string, result: string }[]> => {\n return new Promise(async (resolve, reject) => {\n try {\n const { data } = await axios.get(`http://qaz.wtf/u/convert.cgi?text=${encodeURIComponent(text)}`);\n const $ = cheerio.load(data);\n const result: { author: Author, name: string, result: string }[] = [];\n $('table > tbody > tr').each((i, el) => {\n const name = $(el).find('td').first().text().trim();\n const styled = $(el).find('td').eq(1).text().trim();\n if (name && styled) {\n result.push({ author: AUTHOR, name: name, result: styled });\n }\n });\n resolve(result);\n } catch (error: any) {\n reject(new Error(`StyleText Failed: ${error.message}`));\n }\n });\n};\n\nexport const wattpad = async (query: string): Promise<any[]> => {\n try {\n const { data } = await axios.get(`https://www.wattpad.com/search/${encodeURIComponent(query)}`, { headers: HEADERS });\n const $ = cheerio.load(data);\n const results: any[] = [];\n $('.story-card').each((i, el) => {\n const title = $(el).find('.story-title').text().trim();\n const image = $(el).find('.cover img').attr('src');\n const link = 'https://www.wattpad.com' + $(el).find('a.story-card-data').attr('href');\n const reads = $(el).find('.read-count').text().trim(); \n if (title) results.push({ author: AUTHOR, title, image, link, reads });\n });\n if (results.length === 0) {\n $('div.cover').each((i, el) => {\n results.push({ author: AUTHOR, image: $(el).find('img').attr('src') });\n });\n }\n return results;\n } catch (error: any) {\n throw new Error(`Wattpad Failed: ${error.message}`);\n }\n};\n\n/**\n * Morse Code Engine\n * Encodes Text to Morse OR Decodes Morse to Text\n */\nexport const morse = async (input: string, mode: 'encode' | 'decode' = 'encode'): Promise<string> => {\n return new Promise((resolve) => {\n if (mode === 'encode') {\n const result = input\n .toUpperCase()\n .split('')\n .map(char => MORSE_MAP[char] || char)\n .join(' ');\n resolve(result);\n } else {\n const result = input\n .split(' ') \n .map(code => REVERSE_MORSE[code] || (code === '/' ? ' ' : code))\n .join('')\n .replace(/\\s+/g, ' ').trim();\n resolve(result);\n }\n });\n};\n\nexport const tts = async (text: string, lang: string = 'en'): Promise<Buffer> => {\n return new Promise(async (resolve, reject) => {\n try {\n const GOOGLE_TTS_URL = 'https://translate.google.com/translate_tts';\n \n // Limit text length (Google blocks long requests ~200 chars)\n if (text.length > 200) {\n throw new Error(\"Text is too long. Maximum 200 characters.\");\n }\n\n const { data } = await axios.get(GOOGLE_TTS_URL, {\n params: {\n ie: 'UTF-8',\n q: text,\n tl: lang,\n client: 'tw-ob' // The magic key to bypass auth\n },\n responseType: 'arraybuffer', // We need raw audio data\n headers: HEADERS\n });\n\n resolve(data);\n } catch (error: any) {\n reject(new Error(`TTS Failed: ${error.message}`));\n }\n });\n};\n\n\nexport const chords = async (query: string): Promise<any> => {\n try {\n const searchUrl = `https://www.gitagram.com/?s=${encodeURIComponent(query).replace(/%20/g, \"+\")}`;\n const { data } = await axios.get(searchUrl, { headers: HEADERS });\n const $ = cheerio.load(data); \n const firstResultUrl = $(\"table.table > tbody > tr\").eq(0).find(\"td\").eq(0).find(\"a\").eq(0).attr(\"href\");\n if (!firstResultUrl) throw new Error(\"No chords found\");\n const songPage = await axios.get(firstResultUrl, { headers: HEADERS });\n const $song = cheerio.load(songPage.data); \n const $hcontent = $song(\"div.hcontent\");\n const artist = $hcontent.find(\"div > a > span.subtitle\").text().trim();\n const title = $hcontent.find(\"h1.title\").text().trim();\n const content = $song(\"div.content > pre\").text().trim();\n return { author: AUTHOR, title, artist, url: firstResultUrl, chord: content };\n } catch (error: any) {\n throw new Error(`Chords Failed: ${error.message}`);\n }\n};\n","import axios from 'axios';\nimport { AUTHOR, LyricsResult } from '../types';\n\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'\n];\n\nconst getRandomHeaders = () => ({\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)]\n});\n\nconst fetchLrcLib = async (query: string): Promise<LyricsResult> => {\n const searchUrl = `https://lrclib.net/api/search?q=${encodeURIComponent(query)}`;\n const { data } = await axios.get(searchUrl, { headers: getRandomHeaders() });\n if (!Array.isArray(data) || data.length === 0) {\n throw new Error(\"No lyrics found on LRCLIB.\");\n }\n \n const track = data.find((t: any) => t.plainLyrics) || data[0];\n if (!track.plainLyrics && !track.syncedLyrics) {\n throw new Error(\"Track found but no lyrics content.\");\n }\n return {\n author: AUTHOR,\n status: true,\n title: track.trackName,\n artist: track.artistName,\n image: track.albumArt || \"https://ibb.co/fVyg0TN6\",\n url: `https://lrclib.net/api/get/${track.id}`,\n lyrics: track.plainLyrics || track.syncedLyrics\n };\n};\n\nconst fetchGenius = async (query: string): Promise<LyricsResult> => {\n const searchUrl = `https://genius.com/api/search/multi?per_page=1&q=${encodeURIComponent(query)}`;\n const { data } = await axios.get(searchUrl, { \n headers: { ...getRandomHeaders(), 'Referer': 'https://genius.com/' } \n });\n\n const hit = data.response?.sections?.find((s: any) => s.type === 'song')?.hits?.[0]?.result;\n if (!hit) throw new Error(\"No songs found on Genius.\");\n return {\n author: AUTHOR,\n status: true,\n title: hit.title,\n artist: hit.artist_names,\n image: hit.song_art_image_thumbnail_url,\n url: hit.url,\n lyrics: `[Lyrics available at source]\\n${hit.url}`\n };\n};\n\nexport const lyrics = async (query: string): Promise<LyricsResult> => {\n try {\n return await fetchLrcLib(query);\n } catch (lrcError) {\n try {\n return await fetchGenius(query);\n } catch (geniusError: any) {\n throw new Error(`Lyrics lookup failed. LRCLIB: ${lrcError}. Genius: ${geniusError.message}`);\n }\n }\n};\n","import axios from 'axios';\nimport AdmZip from 'adm-zip';\nimport { AUTHOR } from '../types';\n\nconst USER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'\n];\n\nconst TEXT_EXTENSIONS = [\n 'js', 'ts', 'jsx', 'tsx', 'json', 'html', 'css', 'scss', 'less', \n 'md', 'txt', 'yml', 'yaml', 'sql', 'py', 'java', 'c', 'cpp', 'h', \n 'cs', 'php', 'rb', 'go', 'rs', 'swift', 'kt', 'xml', 'svg', 'env', \n 'gitignore', 'dockerfile', 'sh', 'bat', 'conf', 'ini', 'properties',\n 'toml', 'prisma', 'lock', 'package'\n];\n\nconst BINARY_EXTENSIONS = [\n 'png', 'jpg', 'jpeg', 'gif', 'webp', 'ico', 'bmp', 'tiff', \n 'mp3', 'wav', 'ogg', 'mp4', 'webm', 'mov', 'mkv', 'zip', 'tar', 'gz', '7z', 'rar',\n 'pdf', 'docx', 'doc', 'xlsx', 'pptx', 'exe', 'bin', 'dll', 'so', 'dylib'\n];\n\nexport interface UnzipOptions {\n includeBinary?: boolean;\n}\n\nexport const unzipToText = async (url: string, options: UnzipOptions = { includeBinary: false }): Promise<{ author: typeof AUTHOR, buffer: Buffer, filename: string }> => {\n try {\n const response = await axios.get(url, { \n responseType: 'arraybuffer',\n headers: {\n 'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)]\n }\n });\n\n const zipBuffer = Buffer.from(response.data);\n const zip = new AdmZip(zipBuffer);\n const zipEntries = zip.getEntries();\n\n let output = `EXTRACTED BY HEAVSTAL TECH\\nSOURCE: ${url}\\nDATE: ${new Date().toISOString()}\\n`;\n output += `OPTIONS: Include Binary = ${options.includeBinary}\\n\\n`;\n\n for (const entry of zipEntries) {\n if (entry.isDirectory) continue;\n\n const path = entry.entryName;\n const ext = path.split('.').pop()?.toLowerCase() || '';\n \n output += `================================================================================\\n`;\n output += `FILE: ${path}\\n`;\n output += `================================================================================\\n`;\n\n try {\n if (BINARY_EXTENSIONS.includes(ext)) {\n if (options.includeBinary) {\n const b64 = entry.getData().toString('base64');\n const mime = ext === 'mp3' ? 'audio/mpeg' : `image/${ext}`;\n \n if (['pdf', 'docx', 'doc', 'xlsx', 'pptx'].includes(ext)) {\n output += `data:application/octet-stream;base64,${b64}\\n\\n`;\n } else {\n output += `data:${mime};base64,${b64}\\n\\n`;\n }\n } else {\n output += `[Binary File Skipped] (Type: ${ext}, Size: ${entry.header.size} bytes)\\n\\n`;\n }\n } \n else if (TEXT_EXTENSIONS.includes(ext) || !ext) {\n const content = entry.getData().toString('utf8');\n output += `${content}\\n\\n`;\n } \n else {\n const buffer = entry.getData();\n if (buffer.includes(0x00)) {\n if (options.includeBinary) {\n output += `data:application/octet-stream;base64,${buffer.toString('base64')}\\n\\n`;\n } else {\n output += `[Unknown Binary File Skipped]\\n\\n`;\n }\n } else {\n output += `${buffer.toString('utf8')}\\n\\n`;\n }\n }\n } catch (err) {\n output += `[Error reading file: ${(err as Error).message}]\\n\\n`;\n }\n }\n\n return {\n author: AUTHOR,\n buffer: Buffer.from(output, 'utf-8'),\n filename: 'extracted_codebase.txt'\n };\n\n } catch (error: any) {\n throw new Error(`Unzip Failed: ${error.message}`);\n }\n};\n","import { tiktok, tiktokSlide } from './dl/tiktok';\nimport { igdl, fbdl } from './dl/social';\nimport { twitter } from './dl/twitter';\nimport { search as ytSearch, ytmp3, ytmp4, play } from './dl/youtube';\nimport { ssweb, remini, styleText, wattpad, chords, morse, tts } from './utils/tools';\n// import { ephoto } from './utils/maker';\nimport { lyrics } from './search/lyrics';\nimport { unzipToText } from './utils/zipper';\n\nexport * from './types';\n\nexport { \n tiktok, \n tiktokSlide, \n igdl, \n fbdl, \n twitter,\n unzipToText,\n twitter as xdl,\n ytSearch, \n ytmp3, \n ytmp4, \n play,\n ssweb, \n remini, \n styleText, \n wattpad, \n chords,\n morse,\n tts,\n // ephoto,\n lyrics\n};\n\nexport const downloader = {\n tiktok,\n tiktokSlide,\n igdl,\n fbdl,\n twitter,\n xdl: twitter,\n ytmp3,\n ytmp4,\n play\n};\n\nexport const search = {\n youtube: ytSearch,\n wattpad,\n chords,\n lyrics\n};\n\nexport const tools = {\n ssweb,\n remini,\n unzipToText,\n unzip: unzipToText,\n styleText,\n morse,\n tts,\n// ephoto\n};\n\nexport default {\n downloader,\n search,\n tools\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heavstaltech/api",
3
- "version": "1.2.6",
3
+ "version": "1.3.7",
4
4
  "description": "A powerful multi-purpose scraper and API client. Supports ESM and CJS. Supports JavaScript & Typescript",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",