shan-server 1.0.2 → 1.0.4

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.
Files changed (4) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +105 -5
  3. package/index.js +719 -1
  4. package/package.json +65 -32
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 SH AN
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -4,17 +4,45 @@
4
4
 
5
5
  </h3>
6
6
 
7
+ [![GitHub](https://img.shields.io/badge/GitHub-Sh4nDev%2Fshan--server-blue?logo=github)](https://github.com/Sh4nDev/shan-fca)
8
+ [![Language](https://img.shields.io/badge/Language-JavaScript-yellow?logo=javascript)](https://www.javascript.com/)
9
+ [![License](https://img.shields.io/badge/License-MIT-green)](LICENSE)
10
+ [![Status](https://img.shields.io/badge/Status-Active-brightgreen)]()
11
+ [![npm version](https://img.shields.io/npm/v/shan-server?logo=npm)](https://www.npmjs.com/package/shan-server)
12
+ [![Node Version](https://img.shields.io/badge/node-%3E%3D12.0.0-brightgreen?logo=node.js)](https://nodejs.org/)
7
13
 
8
14
 
9
-
10
- ## Instalation :
15
+ ## šŸ“¦ Installation
11
16
  ```bash
12
17
  > npm i shan-server
13
18
  ```
19
+
20
+ ### Global Install (Recommended)
21
+ ```bash
22
+ npm install -g shan-server
23
+ ```
14
24
  ## Last Update
15
- ```print
16
- coming soon
17
25
  ```
26
+ Works on Terminal, Shell, Termux, Windows, Linux, macOS, Chrome OS
27
+ ```
28
+
29
+ # šŸš€ SHAN SERVER
30
+
31
+
32
+
33
+ **Interactive CLI for SHAN SERVER API** - Download videos, use AI chatbots, manage albums, and more. Works on **Terminal, Shell, Termux, Windows, Linux, macOS, Chrome OS**.
34
+
35
+ ## ✨ Features
36
+
37
+ - šŸ“„ **Video Downloaders** - YouTube, TikTok, Instagram, Facebook, Twitter, Threads, Pinterest, CapCut, Likee
38
+ - šŸ” **Search** - YouTube & TikTok search
39
+ - šŸ¤– **AI Chatbots** - Baby and Honey AI assistants
40
+ - šŸ’¾ **Album Storage** - Store and manage video collections
41
+ - šŸŽØ **Font Styling** - Apply various text fonts
42
+ - šŸ–¼ļø **Meme Generator** - Random memes
43
+ - šŸ“ **Caption Manager** - Multi-language captions
44
+ - ā˜ļø **Cloud Upload** - Imgur & ImgBB
45
+
18
46
 
19
47
  ## Example (all platform supported)
20
48
  ```bash
@@ -383,7 +411,7 @@ const { ShAnImgur } = require("shan-server");
383
411
  const author = "ā™”ļøŽ š—¦š—µš—”š—» ā™”ļøŽ";
384
412
 
385
413
  const url = 'url' // past achievement url
386
- const res = ShAnImgur(url, author);
414
+ const res = await ShAnImgur(url, author);
387
415
  console.log(res)
388
416
  ```
389
417
  ## Output Example (Imgur upload)
@@ -397,6 +425,78 @@ console.log(res)
397
425
  }
398
426
  ```
399
427
 
428
+ ## Example (Baby Ai)
429
+ ```js
430
+ const { ShAnBaby } = require('shan-server');
431
+ const author = "ā™”ļøŽ š—¦š—µš—”š—» ā™”ļøŽ";
432
+ const text = "Who created you";
433
+ const uid = "100045644423035"; //facebook uid
434
+ const font = "3"; // font style
435
+
436
+ const res = await ShAnBaby(text, uid, font, author);
437
+ console.log(res);
438
+ ```
439
+ ## Output Example (Baby Ai)
440
+ ```
441
+ {
442
+ "status": "Success",
443
+ "author": "ā™”ļøŽ š—¦š—µš—”š—» ā™”ļøŽ",
444
+ "devfb": "https://m.facebook.com/Sh4n.Dev1",
445
+ "devwp": "https://wa.me/+8801825829588",
446
+ "ShAn": "šŒš² šØš°š§šžš« ā™”ļøŽ š—¦š—µš—”š—» ā™”ļøŽ š›š›š²",
447
+ "react": "😊"
448
+ }
449
+ ```
450
+
451
+ ## Example (Baby Ai Teach)
452
+ ```js
453
+ const { ShAnBteach } = require('shan-server');
454
+ const author = "ā™”ļøŽ š—¦š—µš—”š—» ā™”ļøŽ";
455
+ const ask = "Who created you";
456
+ const ans = "My Boss ā™”ļøŽ š—¦š—µš—”š—» ā™”ļøŽ"; // Multiple teach available eg: const ans = " My boss ā™”ļøŽ š—¦š—µš—”š—» ā™”ļøŽ, My Owner ā™”ļøŽ š—¦š—µš—”š—» ā™”ļøŽ";
457
+ const uid = "100045644423035"; //facebook uid
458
+ const font = "3"; // font style
459
+
460
+ const res = await ShAnBteach(ask, ans, uid, font, author);
461
+ console.log(res);
462
+ ```
463
+ ## Output Example (Baby Ai Teach)
464
+ ```
465
+ {
466
+ "status": "Success",
467
+ "author": "ā™”ļøŽ š—¦š—µš—”š—» ā™”ļøŽ",
468
+ "devfb": "https://m.facebook.com/Sh4n.Dev1",
469
+ "devwp": "https://wa.me/+8801825829588",
470
+ "react": "šŸŽ‰",
471
+ "ShAn": "āœ… š’š®šœšœšžš¬š¬šŸš®š„š„š² š­ššš®š š”š­ š§šžš° šŖš®šžš¬š­š¢šØš§!\nšŸ“– šš®šžš¬š­š¢šØš§: š–š”šØ šœš«šžššš­šžš š²šØš®\nšŸ“ š€š§š¬š°šžš«š¬: šŒš² šØš°š§šžš« ā™”ļøŽ š—¦š—µš—”š—» ā™”ļøŽ\nšŸ† š˜šØš®š« š“šØš­ššš„ š“šžšššœš”š¢š§š š¬: šŸšŸ’šŸ‘šŸŽ",
472
+ "ask": "š–š”šØ šœš«šžššš­šžš š²šØš®",
473
+ "ans": "šŒš² šØš°š§šžš« ā™”ļøŽ š—¦š—µš—”š—» ā™”ļøŽ",
474
+ "totalTeachings": "š“šØš­ššš„ š“šžšššœš”: šŸšŸ’šŸ‘šŸŽ"
475
+ }
476
+ ```
477
+ ```
478
+ {
479
+ "status": "Partial Success",
480
+ "dev": "ā™”ļøŽ š—¦š—µš—”š—» ā™”ļøŽ",
481
+ "devfb": "https://m.facebook.com/Sh4n.Dev1",
482
+ "devwp": "https://wa.me/+8801825829588",
483
+ "react": "šŸ“–",
484
+ "ShAn": "šŸ”„ š€šššžš š§šžš° ššš§š¬š°šžš«š¬ š­šØ šžš±š¢š¬š­š¢š§š  šŖš®šžš¬š­š¢šØš§!\nšŸ“– šš®šžš¬š­š¢šØš§: š–š”šØ šœš«šžššš­šžš š²šØš®\nāž• ššžš° š€š§š¬š°šžš«š¬: šŒš² ššØš¬š¬ ā™”ļøŽ š—¦š—µš—”š—» ā™”ļøŽ\nšŸ† š˜šØš®š« š“šØš­ššš„ š“šžšššœš”š¢š§š š¬: šŸšŸ’šŸ‘šŸ",
485
+ "ask": "š–š”šØ šœš«šžššš­šžš š²šØš®",
486
+ "newAns": "šŒš² ššØš¬š¬ ā™”ļøŽ š—¦š—µš—”š—» ā™”ļøŽ",
487
+ "totalTeachings": "š“šØš­ššš„ š“šžšššœš”: šŸšŸ’šŸ‘šŸ"
488
+ }
489
+ ```
490
+ ```
491
+ {
492
+ "status": "Already Exists",
493
+ "dev": "ā™”ļøŽ š—¦š—µš—”š—» ā™”ļøŽ",
494
+ "devfb": "https://m.facebook.com/Sh4n.Dev1",
495
+ "devwp": "https://wa.me/+8801825829588",
496
+ "ShAn": "šŸŽ€ š€š§š¬š°šžš«š¬ š”šššÆšž ššš„š«šžšššš² š›šžšžš§ š­ššš®š š”š­!"
497
+ }
498
+ ```
499
+
400
500
 
401
501
  [![WhatsApp](https://img.shields.io/badge/WhatsApp-green?style=for-the-badge&logo=whatsapp)](https://wa.me/+8801825829588)
402
502
  [![Facebook](https://img.shields.io/badge/Facebook-green?style=for-the-badge&logo=facebook)](https://www.facebook.com/Sh4n.Dev1)
package/index.js CHANGED
@@ -1 +1,719 @@
1
- function _0x41ad(_0xa2eeb3,_0x1c7135){_0xa2eeb3=_0xa2eeb3-(0xc25+0x15*0x3b+0xf0b*-0x1);const _0x444c03=_0x1b2f();let _0x28a74b=_0x444c03[_0xa2eeb3];return _0x28a74b;}const _0x2bbefd=_0x41ad;(function(_0x10d39b,_0xc695c5){const _0x1a70c6=_0x41ad,_0x5498e2=_0x10d39b();while(!![]){try{const _0x5dd451=-parseInt(_0x1a70c6(0x255))/(-0x23d*-0xd+-0x5*0x67f+0x3*0x121)*(parseInt(_0x1a70c6(0x245))/(-0x3*0x7cf+-0x1c9+0x327*0x8))+-parseInt(_0x1a70c6(0x227))/(-0x4bd*0x5+0xd55+0xa5f)*(-parseInt(_0x1a70c6(0x219))/(-0x22*-0x9a+-0x3*-0x9c6+-0x31c2))+-parseInt(_0x1a70c6(0x1f7))/(-0x1ed1+-0x2220+-0x1*-0x40f6)*(-parseInt(_0x1a70c6(0x229))/(-0x1d37+-0xf00+-0xf*-0x2f3))+parseInt(_0x1a70c6(0x25d))/(0x737+0xd5f+-0x148f)+parseInt(_0x1a70c6(0x22d))/(-0x2ed*-0xc+0x1d69+-0x1*0x407d)*(-parseInt(_0x1a70c6(0x240))/(-0x19d3+-0x218c+0x3b68))+parseInt(_0x1a70c6(0x22a))/(-0x314*-0x8+-0x259d*-0x1+-0x1*0x3e33)*(-parseInt(_0x1a70c6(0x258))/(-0x3e6+-0x240f+0x1400*0x2))+-parseInt(_0x1a70c6(0x225))/(0x1c0d*0x1+-0x11b6+-0x1*0xa4b);if(_0x5dd451===_0xc695c5)break;else _0x5498e2['push'](_0x5498e2['shift']());}catch(_0x251f87){_0x5498e2['push'](_0x5498e2['shift']());}}}(_0x1b2f,0x13e348+0x936fa*0x2+0x19997e*-0x1));const axios=require(_0x2bbefd(0x251)),Sh4n=_0x2bbefd(0x22b)+_0x2bbefd(0x21f)+_0x2bbefd(0x1f2)+_0x2bbefd(0x24c);module[_0x2bbefd(0x223)]={'ShAnAlldl':(_0x5f1569,_0xa0410e)=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x202)+_0x2bbefd(0x25a))+encodeURIComponent(_0x5f1569)+_0x2bbefd(0x21a)+encodeURIComponent(_0xa0410e))[_0x2bbefd(0x256)](_0x47429c=>_0x47429c[_0x2bbefd(0x230)]),'ShAnAlldl2':(_0x1c4f16,_0x2218ac)=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x202)+_0x2bbefd(0x222))+encodeURIComponent(_0x1c4f16)+_0x2bbefd(0x21a)+encodeURIComponent(_0x2218ac))[_0x2bbefd(0x256)](_0x458cf8=>_0x458cf8[_0x2bbefd(0x230)]),'ShAnFbdl':(_0x49a38f,_0x4336a1)=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x1f8)+_0x2bbefd(0x236))+encodeURIComponent(_0x49a38f)+_0x2bbefd(0x21a)+encodeURIComponent(_0x4336a1))[_0x2bbefd(0x256)](_0x354dbd=>_0x354dbd[_0x2bbefd(0x230)]),'ShAnYtdl':(_0x2540a1,_0x26cd0e)=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x208)+_0x2bbefd(0x236))+encodeURIComponent(_0x2540a1)+_0x2bbefd(0x21a)+encodeURIComponent(_0x26cd0e))[_0x2bbefd(0x256)](_0x2abb96=>_0x2abb96[_0x2bbefd(0x230)]),'ShAnYtmp3':(_0xa4b52c,_0x9ed162)=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x25c)+_0x2bbefd(0x25a))+encodeURIComponent(_0xa4b52c)+_0x2bbefd(0x21a)+encodeURIComponent(_0x9ed162))[_0x2bbefd(0x256)](_0x36cd10=>_0x36cd10[_0x2bbefd(0x230)]),'ShAnThreadl':(_0x387599,_0x3fa9c8)=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x234)+_0x2bbefd(0x20d))+encodeURIComponent(_0x387599)+_0x2bbefd(0x21a)+encodeURIComponent(_0x3fa9c8))[_0x2bbefd(0x256)](_0x51580c=>_0x51580c[_0x2bbefd(0x230)]),'ShAnTwitdl':(_0xd5d097,_0x1a6037)=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x23b)+_0x2bbefd(0x252))+encodeURIComponent(_0xd5d097)+_0x2bbefd(0x21a)+encodeURIComponent(_0x1a6037))[_0x2bbefd(0x256)](_0x2ba555=>_0x2ba555[_0x2bbefd(0x230)]),'ShAnTikdl':(_0x3ed0d4,_0x17f33a)=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x1fc)+_0x2bbefd(0x25a))+encodeURIComponent(_0x3ed0d4)+_0x2bbefd(0x21a)+encodeURIComponent(_0x17f33a))[_0x2bbefd(0x256)](_0x3c3738=>_0x3c3738[_0x2bbefd(0x230)]),'ShAnInstadl':(_0x20c82c,_0x1ba10e)=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x21b)+_0x2bbefd(0x20d))+encodeURIComponent(_0x20c82c)+_0x2bbefd(0x21a)+encodeURIComponent(_0x1ba10e))[_0x2bbefd(0x256)](_0x2e480b=>_0x2e480b[_0x2bbefd(0x230)]),'ShAnInstadl2':(_0x1e51e3,_0xa2f99b)=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x21b)+_0x2bbefd(0x24a))+encodeURIComponent(_0x1e51e3)+_0x2bbefd(0x21a)+encodeURIComponent(_0xa2f99b))[_0x2bbefd(0x256)](_0x3f3971=>_0x3f3971[_0x2bbefd(0x230)]),'ShAnInstadl3':(_0x2598c9,_0x1872a4)=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x21b)+_0x2bbefd(0x211))+encodeURIComponent(_0x2598c9)+_0x2bbefd(0x21a)+encodeURIComponent(_0x1872a4))[_0x2bbefd(0x256)](_0x3c8a0e=>_0x3c8a0e[_0x2bbefd(0x230)]),'ShAnPindl':(_0x4fe833,_0x1faa6c)=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x21c)+_0x2bbefd(0x25a))+encodeURIComponent(_0x4fe833)+_0x2bbefd(0x21a)+encodeURIComponent(_0x1faa6c))[_0x2bbefd(0x256)](_0x1006d0=>_0x1006d0[_0x2bbefd(0x230)]),'ShAnCapcutdl':(_0x55a8ce,_0x56a8db)=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x232)+_0x2bbefd(0x1ff))+encodeURIComponent(_0x55a8ce)+_0x2bbefd(0x21a)+encodeURIComponent(_0x56a8db))[_0x2bbefd(0x256)](_0x350dbb=>_0x350dbb[_0x2bbefd(0x230)]),'ShAnLikeedl':(_0x18193f,_0x5ecaec)=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x228)+_0x2bbefd(0x20d))+encodeURIComponent(_0x18193f)+_0x2bbefd(0x21a)+encodeURIComponent(_0x5ecaec))[_0x2bbefd(0x256)](_0x3c1619=>_0x3c1619[_0x2bbefd(0x230)]),'ShAnytSearch':(_0x3b36bf,_0x736fd6)=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x1f9)+_0x2bbefd(0x206))+encodeURIComponent(_0x3b36bf)+_0x2bbefd(0x21a)+encodeURIComponent(_0x736fd6))[_0x2bbefd(0x256)](_0x5a7442=>_0x5a7442[_0x2bbefd(0x230)]),'ShAnBaby':(_0xd8acbb,_0x52985a,_0x20b626,_0x12c04c)=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x21d)+_0x2bbefd(0x254))+encodeURIComponent(_0xd8acbb)+_0x2bbefd(0x220)+_0x52985a+_0x2bbefd(0x235)+_0x20b626+_0x2bbefd(0x21a)+encodeURIComponent(_0x12c04c))[_0x2bbefd(0x256)](_0x204f6b=>_0x204f6b[_0x2bbefd(0x230)]),'ShAnBteach':(_0x57d5f7,_0x5864dc,_0x5a12e6,_0x146f05,_0x551925)=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x22f)+_0x2bbefd(0x215))+encodeURIComponent(_0x57d5f7)+_0x2bbefd(0x242)+encodeURIComponent(_0x5864dc)+_0x2bbefd(0x220)+_0x5a12e6+_0x2bbefd(0x235)+_0x146f05+_0x2bbefd(0x21a)+encodeURIComponent(_0x551925))[_0x2bbefd(0x256)](_0x10a53b=>_0x10a53b[_0x2bbefd(0x230)]),'ShAnBrans':_0xa56bf4=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x1f1)+_0x2bbefd(0x25e))+encodeURIComponent(_0xa56bf4))[_0x2bbefd(0x256)](_0x46b471=>_0x46b471[_0x2bbefd(0x230)]),'ShAnBmsg':(_0x1d6c1f,_0xc8d1c6,_0x2f127c,_0x5cb865)=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x249)+_0x2bbefd(0x213))+encodeURIComponent(_0x1d6c1f)+_0x2bbefd(0x220)+_0xc8d1c6+_0x2bbefd(0x235)+_0x2f127c+_0x2bbefd(0x21a)+encodeURIComponent(_0x5cb865))[_0x2bbefd(0x256)](_0x4ecc7f=>_0x4ecc7f[_0x2bbefd(0x230)]),'ShAnBlist':(_0x4bc2ca,_0x16eaca)=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x241)+_0x2bbefd(0x20a))+_0x4bc2ca+_0x2bbefd(0x21a)+encodeURIComponent(_0x16eaca))[_0x2bbefd(0x256)](_0x352188=>_0x352188[_0x2bbefd(0x230)]),'ShAnBedit':(_0x2b40c7,_0x519ed2,_0x33a5ae,_0x17f825,_0x59d2d5,_0xe3ce0e)=>{const _0x2dd990=_0x2bbefd,_0x2f4c4e={'etnbe':function(_0x3ee833,_0x23a475){return _0x3ee833(_0x23a475);}};let _0x448a77=Sh4n+(_0x2dd990(0x210)+_0x2dd990(0x207))+_0x2f4c4e[_0x2dd990(0x200)](encodeURIComponent,_0x2b40c7)+_0x2dd990(0x233)+_0x2f4c4e[_0x2dd990(0x200)](encodeURIComponent,_0x519ed2)+_0x2dd990(0x220)+_0x33a5ae+_0x2dd990(0x235)+_0x17f825+_0x2dd990(0x21a)+_0x2f4c4e[_0x2dd990(0x200)](encodeURIComponent,_0x59d2d5);if(_0xe3ce0e)_0x448a77+=_0x2dd990(0x24f)+_0xe3ce0e;return axios[_0x2dd990(0x253)](_0x448a77)[_0x2dd990(0x256)](_0x34f7be=>_0x34f7be[_0x2dd990(0x230)]);},'ShAnBdelete':(_0x3abf45,_0x27d55f,_0xc01c83,_0x4248e3,_0x5ec80e)=>{const _0x352faf=_0x2bbefd,_0x1e9ede={'gIGUA':function(_0x43e028,_0x5d4d10){return _0x43e028(_0x5d4d10);},'uYtiP':function(_0x3409e7,_0x32a529){return _0x3409e7(_0x32a529);}};let _0x85d082=Sh4n+(_0x352faf(0x25b)+_0x352faf(0x247))+_0x1e9ede[_0x352faf(0x1fa)](encodeURIComponent,_0x3abf45)+_0x352faf(0x220)+_0x27d55f+_0x352faf(0x235)+_0xc01c83+_0x352faf(0x21a)+_0x1e9ede[_0x352faf(0x24b)](encodeURIComponent,_0x4248e3);if(_0x5ec80e)_0x85d082+=_0x352faf(0x24f)+_0x5ec80e;return axios[_0x352faf(0x22e)](_0x85d082)[_0x352faf(0x256)](_0x29a69a=>_0x29a69a[_0x352faf(0x230)]);},'ShAnHoney':(_0x301471,_0x559c1f,_0x585d85,_0x1fb90b)=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x23f)+_0x2bbefd(0x24e))+encodeURIComponent(_0x301471)+_0x2bbefd(0x220)+_0x559c1f+_0x2bbefd(0x235)+_0x585d85+_0x2bbefd(0x21a)+encodeURIComponent(_0x1fb90b))[_0x2bbefd(0x256)](_0x222f59=>_0x222f59[_0x2bbefd(0x230)]),'ShAnHteach':(_0x2640b7,_0x2833dc,_0x4e36cd,_0x772041,_0x38966c)=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x243)+_0x2bbefd(0x215))+encodeURIComponent(_0x2640b7)+_0x2bbefd(0x242)+encodeURIComponent(_0x2833dc)+_0x2bbefd(0x220)+_0x4e36cd+_0x2bbefd(0x235)+_0x772041+_0x2bbefd(0x21a)+encodeURIComponent(_0x38966c))[_0x2bbefd(0x256)](_0x449cf5=>_0x449cf5[_0x2bbefd(0x230)]),'ShAnHmsg':(_0x5e65de,_0x4037f8,_0x57d708,_0x40ab6d)=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x238)+_0x2bbefd(0x213))+encodeURIComponent(_0x5e65de)+_0x2bbefd(0x220)+_0x4037f8+_0x2bbefd(0x235)+_0x57d708+_0x2bbefd(0x21a)+encodeURIComponent(_0x40ab6d))[_0x2bbefd(0x256)](_0x5d96e6=>_0x5d96e6[_0x2bbefd(0x230)]),'ShAnHlist':(_0x2df41d,_0x39c83b)=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x22c)+_0x2bbefd(0x20a))+_0x2df41d+_0x2bbefd(0x21a)+encodeURIComponent(_0x39c83b))[_0x2bbefd(0x256)](_0x2d0d8a=>_0x2d0d8a[_0x2bbefd(0x230)]),'ShAnHedit':(_0x456e59,_0x11044d,_0x4fcafc,_0x10fa21,_0x59bf94,_0x478b56)=>{const _0xe4a2d=_0x2bbefd,_0x473403={'XGpAk':function(_0x30bf84,_0x1fa995){return _0x30bf84(_0x1fa995);},'jihPL':function(_0x34c867,_0x4253d1){return _0x34c867(_0x4253d1);},'pvPlF':function(_0x181a69,_0x17695a){return _0x181a69(_0x17695a);}};let _0x248790=Sh4n+(_0xe4a2d(0x23d)+_0xe4a2d(0x207))+_0x473403[_0xe4a2d(0x20e)](encodeURIComponent,_0x456e59)+_0xe4a2d(0x233)+_0x473403[_0xe4a2d(0x248)](encodeURIComponent,_0x11044d)+_0xe4a2d(0x220)+_0x4fcafc+_0xe4a2d(0x235)+_0x10fa21+_0xe4a2d(0x21a)+_0x473403[_0xe4a2d(0x218)](encodeURIComponent,_0x59bf94);if(_0x478b56)_0x248790+=_0xe4a2d(0x24f)+_0x478b56;return axios[_0xe4a2d(0x253)](_0x248790)[_0xe4a2d(0x256)](_0x186d3b=>_0x186d3b[_0xe4a2d(0x230)]);},'ShAnHdelete':(_0x143d1a,_0xa8c50,_0x45b10d,_0x4735d3,_0x1885fe)=>{const _0x688f5f=_0x2bbefd,_0x57ce64={'HcTZr':function(_0x1d53b5,_0x21e5ae){return _0x1d53b5(_0x21e5ae);}};let _0x4a8ad3=Sh4n+(_0x688f5f(0x250)+_0x688f5f(0x247))+_0x57ce64[_0x688f5f(0x20b)](encodeURIComponent,_0x143d1a)+_0x688f5f(0x220)+_0xa8c50+_0x688f5f(0x235)+_0x45b10d+_0x688f5f(0x21a)+_0x57ce64[_0x688f5f(0x20b)](encodeURIComponent,_0x4735d3);if(_0x1885fe)_0x4a8ad3+=_0x688f5f(0x24f)+_0x1885fe;return axios[_0x688f5f(0x22e)](_0x4a8ad3)[_0x688f5f(0x256)](_0x219563=>_0x219563[_0x688f5f(0x230)]);},'ShAnalbumVideos':(_0x25b050,_0x49e221,_0x4765f3,_0x1c7db3)=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x20c)+_0x2bbefd(0x257)+_0x2bbefd(0x1f6))+_0x25b050+_0x2bbefd(0x244)+_0x49e221+_0x2bbefd(0x21a)+encodeURIComponent(_0x4765f3)+_0x2bbefd(0x1f3)+encodeURIComponent(_0x1c7db3))[_0x2bbefd(0x256)](_0x643354=>_0x643354[_0x2bbefd(0x230)]),'ShAnalbumAdd':(_0x43ae3c,_0x4ee5d7,_0x1833bc,_0x4c55a4)=>axios[_0x2bbefd(0x221)](Sh4n+(_0x2bbefd(0x20c)+_0x2bbefd(0x226)+_0x2bbefd(0x231))+_0x43ae3c+_0x2bbefd(0x23e)+encodeURIComponent(_0x4ee5d7)+_0x2bbefd(0x244)+_0x1833bc+_0x2bbefd(0x21a)+encodeURIComponent(_0x4c55a4))[_0x2bbefd(0x256)](_0x44def0=>_0x44def0[_0x2bbefd(0x230)]),'ShAnalbumDelete':(_0x1f9b2e,_0x3ac22f,_0x306512)=>axios[_0x2bbefd(0x22e)](Sh4n+(_0x2bbefd(0x20c)+_0x2bbefd(0x23a)+'l=')+encodeURIComponent(_0x1f9b2e)+_0x2bbefd(0x21a)+encodeURIComponent(_0x3ac22f)+_0x2bbefd(0x1f3)+encodeURIComponent(_0x306512))[_0x2bbefd(0x256)](_0x3c61e4=>_0x3c61e4[_0x2bbefd(0x230)]),'ShAnalbumList':_0x46301a=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x20c)+_0x2bbefd(0x204)+_0x2bbefd(0x246))+encodeURIComponent(_0x46301a))[_0x2bbefd(0x256)](_0x2c3e9b=>_0x2c3e9b[_0x2bbefd(0x230)]),'ShAnImgur':(_0x464a22,_0x33edee)=>axios[_0x2bbefd(0x221)](Sh4n+(_0x2bbefd(0x205)+_0x2bbefd(0x25a))+encodeURIComponent(_0x464a22)+_0x2bbefd(0x21a)+encodeURIComponent(_0x33edee))[_0x2bbefd(0x256)](_0x8ecad6=>_0x8ecad6[_0x2bbefd(0x230)]),'ShAntikSearch':(_0x265d8b,_0x11a8db)=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x203)+_0x2bbefd(0x214)+'=')+encodeURIComponent(_0x265d8b)+_0x2bbefd(0x21a)+encodeURIComponent(_0x11a8db))[_0x2bbefd(0x256)](_0x3a2ab8=>_0x3a2ab8[_0x2bbefd(0x230)]),'ShAnFont':(_0x52b477,_0xf40bbf,_0x4a20b5)=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x209)+_0x2bbefd(0x20f))+encodeURIComponent(_0x52b477)+_0x2bbefd(0x235)+encodeURIComponent(_0xf40bbf)+_0x2bbefd(0x21a)+encodeURIComponent(_0x4a20b5))[_0x2bbefd(0x256)](_0x42785b=>_0x42785b[_0x2bbefd(0x230)]),'ShAnfontList':_0x5acbfb=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x237)+_0x2bbefd(0x201)+'=')+encodeURIComponent(_0x5acbfb))[_0x2bbefd(0x256)](_0x7c6a8a=>_0x7c6a8a[_0x2bbefd(0x230)]),'ShAnWish':(_0xb65511,_0x4b24fa,_0x2a20b2)=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x216)+_0x2bbefd(0x1f4))+encodeURIComponent(_0xb65511)+_0x2bbefd(0x235)+encodeURIComponent(_0x4b24fa)+_0x2bbefd(0x21a)+encodeURIComponent(_0x2a20b2))[_0x2bbefd(0x256)](_0xede63e=>_0xede63e[_0x2bbefd(0x230)]),'ShAncaptionAdd':(_0x3efe4d,_0x4d797a,_0x514907,_0x464c6f,_0x741179)=>axios[_0x2bbefd(0x221)](Sh4n+(_0x2bbefd(0x212)+_0x2bbefd(0x1fe)+_0x2bbefd(0x23c))+encodeURIComponent(_0x3efe4d)+_0x2bbefd(0x1fd)+encodeURIComponent(_0x4d797a)+_0x2bbefd(0x224)+encodeURIComponent(captain)+_0x2bbefd(0x1fb)+encodeURIComponent(_0x464c6f)+_0x2bbefd(0x21a)+encodeURIComponent(_0x741179))[_0x2bbefd(0x256)](_0x467021=>_0x467021[_0x2bbefd(0x230)]),'ShAncaptionList':(_0x3cbbcc,_0x153574)=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x212)+_0x2bbefd(0x1f5)+_0x2bbefd(0x217))+encodeURIComponent(_0x3cbbcc)+_0x2bbefd(0x21a)+encodeURIComponent(_0x153574))[_0x2bbefd(0x256)](_0x321519=>_0x321519[_0x2bbefd(0x230)]),'ShAnCaption':(_0x478798,_0xd6b6ad,_0x10589c,_0x467700,_0xd688d7)=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x212)+_0x2bbefd(0x25f)+'y=')+encodeURIComponent(_0x478798)+_0x2bbefd(0x1fd)+encodeURIComponent(_0xd6b6ad)+_0x2bbefd(0x244)+encodeURIComponent(_0x10589c)+_0x2bbefd(0x21a)+encodeURIComponent(_0x467700)+_0x2bbefd(0x1f3)+encodeURIComponent(_0xd688d7))[_0x2bbefd(0x256)](_0x223b2a=>_0x223b2a[_0x2bbefd(0x230)]),'ShAnmemeAdd':(_0x1c9192,_0x5135e5,_0x4ddd15)=>axios[_0x2bbefd(0x221)](Sh4n+(_0x2bbefd(0x239)+_0x2bbefd(0x24d)+'l=')+encodeURIComponent(_0x1c9192)+_0x2bbefd(0x244)+encodeURIComponent(_0x5135e5)+_0x2bbefd(0x21a)+encodeURIComponent(_0x4ddd15))[_0x2bbefd(0x256)](_0x415b64=>_0x415b64[_0x2bbefd(0x230)]),'ShAnMeme':_0x44ae6c=>axios[_0x2bbefd(0x253)](Sh4n+(_0x2bbefd(0x259)+_0x2bbefd(0x21e))+encodeURIComponent(_0x44ae6c))[_0x2bbefd(0x256)](_0xce09c4=>_0xce09c4[_0x2bbefd(0x230)])};function _0x1b2f(){const _0x1db88c=['-delete?ur','ShAn-twitD','egory=','ShAn-hedit','&videoUrl=','ShAn-honey','417627hZxWJy','ShAn-blist','&ans=','ShAn-hteac','&senderID=','2TLqIKz','or=','te?text=','jihPL','ShAn-bmsg?','DL2?url=','uYtiP','pp/','add?memeUr','?text=','&index=','ShAn-hdele','axios','L?url=','get','ext=','245027DkQGFR','then','-videos?ca','8362783wYoZPi','ShAn-meme?','?url=','ShAn-bdele','ShAn-ytmp3','10794063MrStiQ','?author=','on?categor','ShAn-brans','7.vercel.a','&key=','name=','on-list?la','tegory=','179905ezZQRy','ShAn-fbDL?','ShAn-ytsea','gIGUA','&senderID','ShAn-tikDL','&language=','on-add?cat','tDL?url=','etnbe','ist?author','ShAn-alldl','ShAn-tikse','-list?auth','ShAn-imgur','rch?query=','?ask=','ShAn-ytDL?','ShAn-font?','?font=','HcTZr','ShAn-album','DL?url=','XGpAk','text=','ShAn-bedit','DL3?url=','ShAn-capti','ask=','arch?query','h?ask=','ShAn-wish?','nguage=','pvPlF','20nWqQkF','&author=','ShAn-insta','ShAn-pinDL','ShAn-bby?t','author=','-ans-api-0','&uid=','post','2?url=','exports','&captain=','19049976LffLRp','-add?categ','856107eQgtfG','ShAn-likee','234dNgmDn','20RKuNUM','https://sh','ShAn-hlist','32ejyqaF','delete','ShAn-bteac','data','ory=','ShAn-capcu','&newAsk=','ShAn-threa','&font=','url=','ShAn-fontL','ShAn-hmsg?','ShAn-meme-'];_0x1b2f=function(){return _0x1db88c;};return _0x1b2f();}
1
+ const axios = require('axios');
2
+ const readline = require('readline');
3
+ const os = require('os');
4
+
5
+ function getDefaultAuthor() {
6
+ try {
7
+ const username = os.userInfo().username;
8
+ if (username && username !== 'root' && username !== 'admin') {
9
+ return username;
10
+ }
11
+ } catch (e) {
12
+ }
13
+
14
+ const envUser = process.env.USER || process.env.USERNAME || process.env.LOGNAME;
15
+ if (envUser && envUser !== 'root' && envUser !== 'admin') {
16
+ return envUser;
17
+ }
18
+
19
+ return 'ā™”ļøŽ š—¦š—µš—”š—» ā™”ļøŽ';
20
+ }
21
+
22
+ function getPlatform() {
23
+ const platform = os.platform();
24
+ const platformMap = {
25
+ 'win32': 'Windows',
26
+ 'linux': 'Linux',
27
+ 'darwin': 'macOS',
28
+ 'android': 'Termux/Android',
29
+ 'chrome': 'Chrome OS'
30
+ };
31
+ return platformMap[platform] || platform;
32
+ }
33
+
34
+ function getTerminalType() {
35
+ const term = process.env.TERM || process.env.TERM_PROGRAM || '';
36
+ if (term.includes('xterm') || term.includes('linux')) return 'Terminal';
37
+ if (term.includes('tmux')) return 'Tmux';
38
+ if (term.includes('screen')) return 'Screen';
39
+ if (process.env.TERM_PROGRAM === 'iTerm.app') return 'iTerm2';
40
+ if (process.env.TERM_PROGRAM === 'Apple_Terminal') return 'macOS Terminal';
41
+ if (process.env.TERM_PROGRAM === 'Hyper') return 'Hyper';
42
+ if (process.env.TERM_PROGRAM === 'Alacritty') return 'Alacritty';
43
+ if (process.env.TERM_PROGRAM === 'vscode') return 'VS Code Terminal';
44
+ if (process.env.TERM_PROGRAM === 'WSL') return 'WSL';
45
+ if (process.env.TERM_PROGRAM === 'Cygwin') return 'Cygwin';
46
+ if (process.env.TERM_PROGRAM === 'Mintty') return 'Mintty';
47
+ if (process.env.TERM_PROGRAM === 'Konsole') return 'Konsole';
48
+ if (process.env.TERM_PROGRAM === 'GNOME-Terminal') return 'GNOME Terminal';
49
+ return 'Unknown Terminal';
50
+ }
51
+
52
+ function getShell() {
53
+ const shell = process.env.SHELL || process.env.COMSPEC || '';
54
+ if (shell.includes('bash')) return 'Bash';
55
+ if (shell.includes('zsh')) return 'Zsh';
56
+ if (shell.includes('fish')) return 'Fish';
57
+ if (shell.includes('cmd')) return 'CMD';
58
+ if (shell.includes('powershell') || shell.includes('pwsh')) return 'PowerShell';
59
+ if (shell.includes('sh')) return 'Sh';
60
+ if (shell.includes('dash')) return 'Dash';
61
+ if (shell.includes('ksh')) return 'Ksh';
62
+ return 'Unknown Shell';
63
+ }
64
+
65
+ function showLogo() {
66
+ const platform = getPlatform();
67
+ const terminal = getTerminalType();
68
+ const shell = getShell();
69
+ const author = getDefaultAuthor();
70
+
71
+ console.clear();
72
+ console.log(`
73
+ \x1b[36m
74
+ ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•—ā–ˆā–ˆā•— ā–ˆā–ˆā•— ā–ˆā–ˆā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā•—
75
+ ā–ˆā–ˆā•”ā•ā•ā•ā•ā•ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘ā–ˆā–ˆā•”ā•ā•ā–ˆā–ˆā•—ā–ˆā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā•‘
76
+ ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•—ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•‘ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•‘ā–ˆā–ˆā•”ā–ˆā–ˆā•— ā–ˆā–ˆā•‘
77
+ ā•šā•ā•ā•ā•ā–ˆā–ˆā•‘ā–ˆā–ˆā•”ā•ā•ā–ˆā–ˆā•‘ā–ˆā–ˆā•”ā•ā•ā–ˆā–ˆā•‘ā–ˆā–ˆā•‘ā•šā–ˆā–ˆā•—ā–ˆā–ˆā•‘
78
+ ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•‘ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘ā–ˆā–ˆā•‘ ā•šā–ˆā–ˆā–ˆā–ˆā•‘
79
+ ā•šā•ā•ā•ā•ā•ā•ā•ā•šā•ā• ā•šā•ā•ā•šā•ā• ā•šā•ā•ā•šā•ā• ā•šā•ā•ā•ā•
80
+
81
+ ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•—ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•—ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā•— ā–ˆā–ˆā•—ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•—ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•—
82
+ ā–ˆā–ˆā•”ā•ā•ā•ā•ā•ā–ˆā–ˆā•”ā•ā•ā•ā•ā•ā–ˆā–ˆā•”ā•ā•ā–ˆā–ˆā•—ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘ā–ˆā–ˆā•”ā•ā•ā•ā•ā•ā–ˆā–ˆā•”ā•ā•ā–ˆā–ˆā•—
83
+ ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•—ā–ˆā–ˆā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•”ā•ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘ā–ˆā–ˆā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•”ā•
84
+ ā•šā•ā•ā•ā•ā–ˆā–ˆā•‘ā–ˆā–ˆā•”ā•ā•ā• ā–ˆā–ˆā•”ā•ā•ā–ˆā–ˆā•—ā•šā–ˆā–ˆā•— ā–ˆā–ˆā•”ā•ā–ˆā–ˆā•”ā•ā•ā• ā–ˆā–ˆā•”ā•ā•ā–ˆā–ˆā•—
85
+ ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•‘ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•—ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘ ā•šā–ˆā–ˆā–ˆā–ˆā•”ā• ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•—ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘
86
+ ā•šā•ā•ā•ā•ā•ā•ā•ā•šā•ā•ā•ā•ā•ā•ā•ā•šā•ā• ā•šā•ā• ā•šā•ā•ā•ā• ā•šā•ā•ā•ā•ā•ā•ā•ā•šā•ā• ā•šā•ā•
87
+ \x1b[0m
88
+ \x1b[33m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m
89
+ \x1b[36m SHAN SERVER - v1.0.0\x1b[0m
90
+ \x1b[33m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m
91
+ \x1b[90m Platform: ${platform.padEnd(20)} Terminal: ${terminal}\x1b[0m
92
+ \x1b[90m Shell: ${shell.padEnd(20)} API: sh-ans-api-07.vercel.app\x1b[0m
93
+ \x1b[90m Default Author: ${author}\x1b[0m
94
+ \x1b[33m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m
95
+ `);
96
+ }
97
+
98
+ const Sh4n = 'https://sh-ans-api-07.vercel.app/';
99
+
100
+ const api = {
101
+ ShAnAlldl: (url, author) => axios.get(`${Sh4n}ShAn-alldl?url=${encodeURIComponent(url)}&author=${encodeURIComponent(author)}`).then(res => res.data),
102
+ ShAnAlldl2: (url, author) => axios.get(`${Sh4n}ShAn-alldl2?url=${encodeURIComponent(url)}&author=${encodeURIComponent(author)}`).then(res => res.data),
103
+ ShAnFbdl: (url, author) => axios.get(`${Sh4n}ShAn-fbDL?url=${encodeURIComponent(url)}&author=${encodeURIComponent(author)}`).then(res => res.data),
104
+ ShAnYtdl: (url, author) => axios.get(`${Sh4n}ShAn-ytDL?url=${encodeURIComponent(url)}&author=${encodeURIComponent(author)}`).then(res => res.data),
105
+ ShAnYtmp3: (url, author) => axios.get(`${Sh4n}ShAn-ytmp3?url=${encodeURIComponent(url)}&author=${encodeURIComponent(author)}`).then(res => res.data),
106
+ ShAnThreadl: (url, author) => axios.get(`${Sh4n}ShAn-threaDL?url=${encodeURIComponent(url)}&author=${encodeURIComponent(author)}`).then(res => res.data),
107
+ ShAnTwitdl: (url, author) => axios.get(`${Sh4n}ShAn-twitDL?url=${encodeURIComponent(url)}&author=${encodeURIComponent(author)}`).then(res => res.data),
108
+ ShAnTikdl: (url, author) => axios.get(`${Sh4n}ShAn-tikDL?url=${encodeURIComponent(url)}&author=${encodeURIComponent(author)}`).then(res => res.data),
109
+ ShAnInstadl: (url, author) => axios.get(`${Sh4n}ShAn-instaDL?url=${encodeURIComponent(url)}&author=${encodeURIComponent(author)}`).then(res => res.data),
110
+ ShAnInstadl2: (url, author) => axios.get(`${Sh4n}ShAn-instaDL2?url=${encodeURIComponent(url)}&author=${encodeURIComponent(author)}`).then(res => res.data),
111
+ ShAnInstadl3: (url, author) => axios.get(`${Sh4n}ShAn-instaDL3?url=${encodeURIComponent(url)}&author=${encodeURIComponent(author)}`).then(res => res.data),
112
+ ShAnPindl: (url, author) => axios.get(`${Sh4n}ShAn-pinDL?url=${encodeURIComponent(url)}&author=${encodeURIComponent(author)}`).then(res => res.data),
113
+ ShAnCapcutdl: (url, author) => axios.get(`${Sh4n}ShAn-capcutDL?url=${encodeURIComponent(url)}&author=${encodeURIComponent(author)}`).then(res => res.data),
114
+ ShAnLikeedl: (url, author) => axios.get(`${Sh4n}ShAn-likeeDL?url=${encodeURIComponent(url)}&author=${encodeURIComponent(author)}`).then(res => res.data),
115
+ ShAnytSearch: (query, author) => axios.get(`${Sh4n}ShAn-ytsearch?query=${encodeURIComponent(query)}&author=${encodeURIComponent(author)}`).then(res => res.data),
116
+ ShAnBaby: (text, uid, font, author) => axios.get(`${Sh4n}ShAn-bby?text=${encodeURIComponent(text)}&uid=${uid}&font=${font}&author=${encodeURIComponent(author)}`).then(res => res.data),
117
+ ShAnBteach: (ask, ans, uid, font, author) => axios.get(`${Sh4n}ShAn-bteach?ask=${encodeURIComponent(ask)}&ans=${encodeURIComponent(ans)}&uid=${uid}&font=${font}&author=${encodeURIComponent(author)}`).then(res => res.data),
118
+ ShAnBrans: (author) => axios.get(`${Sh4n}ShAn-brans?author=${encodeURIComponent(author)}`).then(res => res.data),
119
+ ShAnBmsg: (ask, uid, font, author) => axios.get(`${Sh4n}ShAn-bmsg?ask=${encodeURIComponent(ask)}&uid=${uid}&font=${font}&author=${encodeURIComponent(author)}`).then(res => res.data),
120
+ ShAnBlist: (font, author) => axios.get(`${Sh4n}ShAn-blist?font=${font}&author=${encodeURIComponent(author)}`).then(res => res.data),
121
+ ShAnBedit: (ask, newAsk, uid, font, author, index) => {
122
+ let url = `${Sh4n}ShAn-bedit?ask=${encodeURIComponent(ask)}&newAsk=${encodeURIComponent(newAsk)}&uid=${uid}&font=${font}&author=${encodeURIComponent(author)}`;
123
+ if (index) url += `&index=${index}`;
124
+ return axios.get(url).then(res => res.data);
125
+ },
126
+ ShAnBdelete: (text, uid, font, author, index) => {
127
+ let url = `${Sh4n}ShAn-bdelete?text=${encodeURIComponent(text)}&uid=${uid}&font=${font}&author=${encodeURIComponent(author)}`;
128
+ if (index) url += `&index=${index}`;
129
+ return axios.delete(url).then(res => res.data);
130
+ },
131
+ ShAnHoney: (text, uid, font, author) => axios.get(`${Sh4n}ShAn-honey?text=${encodeURIComponent(text)}&uid=${uid}&font=${font}&author=${encodeURIComponent(author)}`).then(res => res.data),
132
+ ShAnHteach: (ask, ans, uid, font, author) => axios.get(`${Sh4n}ShAn-hteach?ask=${encodeURIComponent(ask)}&ans=${encodeURIComponent(ans)}&uid=${uid}&font=${font}&author=${encodeURIComponent(author)}`).then(res => res.data),
133
+ ShAnHmsg: (ask, uid, font, author) => axios.get(`${Sh4n}ShAn-hmsg?ask=${encodeURIComponent(ask)}&uid=${uid}&font=${font}&author=${encodeURIComponent(author)}`).then(res => res.data),
134
+ ShAnHlist: (font, author) => axios.get(`${Sh4n}ShAn-hlist?font=${font}&author=${encodeURIComponent(author)}`).then(res => res.data),
135
+ ShAnHedit: (ask, newAsk, uid, font, author, index) => {
136
+ let url = `${Sh4n}ShAn-hedit?ask=${encodeURIComponent(ask)}&newAsk=${encodeURIComponent(newAsk)}&uid=${uid}&font=${font}&author=${encodeURIComponent(author)}`;
137
+ if (index) url += `&index=${index}`;
138
+ return axios.get(url).then(res => res.data);
139
+ },
140
+ ShAnHdelete: (text, uid, font, author, index) => {
141
+ let url = `${Sh4n}ShAn-hdelete?text=${encodeURIComponent(text)}&uid=${uid}&font=${font}&author=${encodeURIComponent(author)}`;
142
+ if (index) url += `&index=${index}`;
143
+ return axios.delete(url).then(res => res.data);
144
+ },
145
+ ShAnalbumVideos: (category, senderID, author, key) => axios.get(`${Sh4n}ShAn-album-videos?category=${category}&senderID=${senderID}&author=${encodeURIComponent(author)}&key=${encodeURIComponent(key)}`).then(res => res.data),
146
+ ShAnalbumAdd: (category, videoUrl, senderID, author) => axios.post(`${Sh4n}ShAn-album-add?category=${category}&videoUrl=${encodeURIComponent(videoUrl)}&senderID=${senderID}&author=${encodeURIComponent(author)}`).then(res => res.data),
147
+ ShAnalbumDelete: (url, author, key) => axios.delete(`${Sh4n}ShAn-album-delete?url=${encodeURIComponent(url)}&author=${encodeURIComponent(author)}&key=${encodeURIComponent(key)}`).then(res => res.data),
148
+ ShAnalbumList: (author) => axios.get(`${Sh4n}ShAn-album-list?author=${encodeURIComponent(author)}`).then(res => res.data),
149
+ ShAnImgur: (videoUrl, author) => axios.post(`${Sh4n}ShAn-imgur?url=${encodeURIComponent(videoUrl)}&author=${encodeURIComponent(author)}`).then(res => res.data),
150
+ ShAntikSearch: (query, author) => axios.get(`${Sh4n}ShAn-tiksearch?query=${encodeURIComponent(query)}&author=${encodeURIComponent(author)}`).then(res => res.data),
151
+ ShAnFont: (text, font, author) => axios.get(`${Sh4n}ShAn-font?text=${encodeURIComponent(text)}&font=${encodeURIComponent(font)}&author=${encodeURIComponent(author)}`).then(res => res.data),
152
+ ShAnfontList: (author) => axios.get(`${Sh4n}ShAn-fontList?author=${encodeURIComponent(author)}`).then(res => res.data),
153
+ ShAnWish: (name, font, author) => axios.get(`${Sh4n}ShAn-wish?name=${encodeURIComponent(name)}&font=${encodeURIComponent(font)}&author=${encodeURIComponent(author)}`).then(res => res.data),
154
+ ShAncaptionAdd: (category, language, caption, senderID, author) => axios.post(`${Sh4n}ShAn-caption-add?category=${encodeURIComponent(category)}&language=${encodeURIComponent(language)}&captain=${encodeURIComponent(caption)}&senderID=${encodeURIComponent(senderID)}&author=${encodeURIComponent(author)}`).then(res => res.data),
155
+ ShAncaptionList: (language, author) => axios.get(`${Sh4n}ShAn-caption-list?language=${encodeURIComponent(language)}&author=${encodeURIComponent(author)}`).then(res => res.data),
156
+ ShAnCaption: (category, language, senderID, author, key) => axios.get(`${Sh4n}ShAn-caption?category=${encodeURIComponent(category)}&language=${encodeURIComponent(language)}&senderID=${encodeURIComponent(senderID)}&author=${encodeURIComponent(author)}&key=${encodeURIComponent(key)}`).then(res => res.data),
157
+ ShAnmemeAdd: (memeUrl, senderID, author) => axios.post(`${Sh4n}ShAn-meme-add?memeUrl=${encodeURIComponent(memeUrl)}&senderID=${encodeURIComponent(senderID)}&author=${encodeURIComponent(author)}`).then(res => res.data),
158
+ ShAnMeme: (author) => axios.get(`${Sh4n}ShAn-meme?author=${encodeURIComponent(author)}`).then(res => res.data),
159
+ ShAnImgbb: (url, author) => axios.get(`${Sh4n}ShAn-imgbb?url=${encodeURIComponent(url)}&author=${encodeURIComponent(author)}`).then(res => res.data)
160
+ };
161
+
162
+ function createInterface() {
163
+ return readline.createInterface({
164
+ input: process.stdin,
165
+ output: process.stdout
166
+ });
167
+ }
168
+
169
+ async function askQuestion(question, defaultValue = '') {
170
+ const rl = createInterface();
171
+ return new Promise((resolve) => {
172
+ const prompt = defaultValue ? `${question} \x1b[90m[${defaultValue}]\x1b[0m: ` : `${question}: `;
173
+ rl.question(prompt, (answer) => {
174
+ rl.close();
175
+ resolve(answer.trim() || defaultValue);
176
+ });
177
+ });
178
+ }
179
+
180
+ async function selectOption(question, options) {
181
+ const rl = createInterface();
182
+ console.log(`\n\x1b[36m${question}\x1b[0m`);
183
+ options.forEach((opt, idx) => {
184
+ console.log(` ${idx + 1}. ${opt}`);
185
+ });
186
+
187
+ return new Promise((resolve) => {
188
+ rl.question('\x1b[33mEnter number (or name): \x1b[0m', (answer) => {
189
+ rl.close();
190
+ const num = parseInt(answer);
191
+ if (!isNaN(num) && num >= 1 && num <= options.length) {
192
+ resolve(options[num - 1]);
193
+ } else if (options.includes(answer)) {
194
+ resolve(answer);
195
+ } else {
196
+ console.log('\x1b[31mInvalid selection, using default: ' + options[0] + '\x1b[0m');
197
+ resolve(options[0]);
198
+ }
199
+ });
200
+ });
201
+ }
202
+
203
+ async function showMainMenu() {
204
+ showLogo();
205
+
206
+ console.log(`
207
+ \x1b[36mā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”\x1b[0m
208
+ \x1b[36m│ šŸ“‹ MAIN MENU │\x1b[0m
209
+ \x1b[36mā”œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¤\x1b[0m
210
+ \x1b[32m│ 1. šŸ“„ Download Videos │\x1b[0m
211
+ \x1b[32m│ 2. šŸ” Search Content │\x1b[0m
212
+ \x1b[32m│ 3. šŸ¤– AI Chatbots (Baby/Honey) │\x1b[0m
213
+ \x1b[32m│ 4. šŸ’¾ Album Management │\x1b[0m
214
+ \x1b[32m│ 5. šŸŽØ Font & Text Utilities │\x1b[0m
215
+ \x1b[32m│ 6. šŸ“ Caption Manager │\x1b[0m
216
+ \x1b[32m│ 7. šŸ–¼ļø Meme Generator │\x1b[0m
217
+ \x1b[32m│ 8. ā˜ļø Cloud Upload (Imgur/ImgBB) │\x1b[0m
218
+ \x1b[31m│ 0. āŒ Exit │\x1b[0m
219
+ \x1b[36mā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜\x1b[0m
220
+ `);
221
+
222
+ const choice = await askQuestion('\x1b[36mSelect an option\x1b[0m', '0');
223
+ return choice;
224
+ }
225
+
226
+ async function downloadMenu() {
227
+ console.clear();
228
+ showLogo();
229
+
230
+ const platform = await selectOption('šŸ“„ Select Platform:', [
231
+ 'YouTube', 'TikTok', 'Instagram', 'Facebook', 'Twitter/X',
232
+ 'Threads', 'Pinterest', 'CapCut', 'Likee', 'All-in-One'
233
+ ]);
234
+
235
+ let command = '';
236
+ switch(platform) {
237
+ case 'YouTube': command = 'ytdl'; break;
238
+ case 'TikTok': command = 'tikdl'; break;
239
+ case 'Instagram': command = 'instadl'; break;
240
+ case 'Facebook': command = 'fbdl'; break;
241
+ case 'Twitter/X': command = 'twitdl'; break;
242
+ case 'Threads': command = 'threadl'; break;
243
+ case 'Pinterest': command = 'pindl'; break;
244
+ case 'CapCut': command = 'capcutdl'; break;
245
+ case 'Likee': command = 'likeedl'; break;
246
+ case 'All-in-One': command = 'alldl'; break;
247
+ }
248
+
249
+ const url = await askQuestion('\x1b[36mEnter video URL\x1b[0m');
250
+ if (!url) {
251
+ console.log('\x1b[31māŒ URL is required!\x1b[0m');
252
+ await askQuestion('\nPress Enter to continue...');
253
+ return;
254
+ }
255
+
256
+ const defaultAuthor = getDefaultAuthor();
257
+ const author = await askQuestion('\x1b[36mEnter your name/author ID\x1b[0m', defaultAuthor);
258
+
259
+ console.log('\n\x1b[33mā³ Processing your request...\x1b[0m\n');
260
+
261
+ try {
262
+ let result;
263
+ switch(command) {
264
+ case 'ytdl': result = await api.ShAnYtdl(url, author); break;
265
+ case 'tikdl': result = await api.ShAnTikdl(url, author); break;
266
+ case 'instadl': result = await api.ShAnInstadl(url, author); break;
267
+ case 'fbdl': result = await api.ShAnFbdl(url, author); break;
268
+ case 'twitdl': result = await api.ShAnTwitdl(url, author); break;
269
+ case 'threadl': result = await api.ShAnThreadl(url, author); break;
270
+ case 'pindl': result = await api.ShAnPindl(url, author); break;
271
+ case 'capcutdl': result = await api.ShAnCapcutdl(url, author); break;
272
+ case 'likeedl': result = await api.ShAnLikeedl(url, author); break;
273
+ default: result = await api.ShAnAlldl(url, author);
274
+ }
275
+
276
+ console.log('\n\x1b[32māœ… SUCCESS!\x1b[0m\n');
277
+ console.log(JSON.stringify(result, null, 2));
278
+ } catch (err) {
279
+ console.error('\x1b[31māŒ Error:\x1b[0m', err.response?.data || err.message);
280
+ }
281
+
282
+ await askQuestion('\n\x1b[36mPress Enter to continue...\x1b[0m');
283
+ }
284
+
285
+ async function searchMenu() {
286
+ console.clear();
287
+ showLogo();
288
+
289
+ const platform = await selectOption('šŸ” Search On:', ['YouTube', 'TikTok']);
290
+ const query = await askQuestion('\x1b[36mEnter search query\x1b[0m');
291
+
292
+ if (!query) {
293
+ console.log('\x1b[31māŒ Query is required!\x1b[0m');
294
+ await askQuestion('\nPress Enter to continue...');
295
+ return;
296
+ }
297
+
298
+ const defaultAuthor = getDefaultAuthor();
299
+ const author = await askQuestion('\x1b[36mEnter your name/author ID\x1b[0m', defaultAuthor);
300
+
301
+ console.log('\n\x1b[33mā³ Searching...\x1b[0m\n');
302
+
303
+ try {
304
+ let result;
305
+ if (platform === 'YouTube') {
306
+ result = await api.ShAnytSearch(query, author);
307
+ } else {
308
+ result = await api.ShAntikSearch(query, author);
309
+ }
310
+
311
+ console.log('\x1b[32māœ… Search Results:\x1b[0m\n');
312
+ console.log(JSON.stringify(result, null, 2));
313
+ } catch (err) {
314
+ console.error('\x1b[31māŒ Error:\x1b[0m', err.response?.data || err.message);
315
+ }
316
+
317
+ await askQuestion('\n\x1b[36mPress Enter to continue...\x1b[0m');
318
+ }
319
+
320
+ async function aiChatbotMenu() {
321
+ console.clear();
322
+ showLogo();
323
+
324
+ const bot = await selectOption('šŸ¤– Select AI Chatbot:', ['Baby', 'Honey']);
325
+ const action = await selectOption('Select Action:', ['Chat', 'Teach', 'Random Response', 'List Data', 'Edit', 'Delete']);
326
+
327
+ const defaultAuthor = getDefaultAuthor();
328
+ const author = await askQuestion('\x1b[36mEnter your name/author ID\x1b[0m', defaultAuthor);
329
+ const uid = await askQuestion('\x1b[36mEnter User ID (your unique identifier)\x1b[0m', 'user123');
330
+ const font = await askQuestion('\x1b[36mEnter Font name (default: Arial)\x1b[0m', 'Arial');
331
+
332
+ try {
333
+ let result;
334
+
335
+ if (action === 'Chat') {
336
+ const text = await askQuestion('\x1b[36mEnter your message\x1b[0m');
337
+ if (bot === 'Baby') {
338
+ result = await api.ShAnBaby(text, uid, font, author);
339
+ } else {
340
+ result = await api.ShAnHoney(text, uid, font, author);
341
+ }
342
+ }
343
+ else if (action === 'Teach') {
344
+ const ask = await askQuestion('\x1b[36mEnter the question/phrase\x1b[0m');
345
+ const ans = await askQuestion('\x1b[36mEnter the answer/response\x1b[0m');
346
+ if (bot === 'Baby') {
347
+ result = await api.ShAnBteach(ask, ans, uid, font, author);
348
+ } else {
349
+ result = await api.ShAnHteach(ask, ans, uid, font, author);
350
+ }
351
+ }
352
+ else if (action === 'Random Response') {
353
+ if (bot === 'Baby') {
354
+ result = await api.ShAnBrans(author);
355
+ } else {
356
+ console.log('\x1b[33māš ļø Random response only available for Baby bot\x1b[0m');
357
+ await askQuestion('\nPress Enter to continue...');
358
+ return;
359
+ }
360
+ }
361
+ else if (action === 'List Data') {
362
+ if (bot === 'Baby') {
363
+ result = await api.ShAnBlist(font, author);
364
+ } else {
365
+ result = await api.ShAnHlist(font, author);
366
+ }
367
+ }
368
+ else if (action === 'Edit') {
369
+ const ask = await askQuestion('\x1b[36mEnter the question to edit\x1b[0m');
370
+ const newAsk = await askQuestion('\x1b[36mEnter the new question\x1b[0m');
371
+ const index = await askQuestion('\x1b[36mEnter index (optional)\x1b[0m');
372
+ if (bot === 'Baby') {
373
+ result = await api.ShAnBedit(ask, newAsk, uid, font, author, index);
374
+ } else {
375
+ result = await api.ShAnHedit(ask, newAsk, uid, font, author, index);
376
+ }
377
+ }
378
+ else if (action === 'Delete') {
379
+ const text = await askQuestion('\x1b[36mEnter text to delete\x1b[0m');
380
+ const index = await askQuestion('\x1b[36mEnter index (optional)\x1b[0m');
381
+ if (bot === 'Baby') {
382
+ result = await api.ShAnBdelete(text, uid, font, author, index);
383
+ } else {
384
+ result = await api.ShAnHdelete(text, uid, font, author, index);
385
+ }
386
+ }
387
+
388
+ console.log('\x1b[32māœ… Success!\x1b[0m\n');
389
+ console.log(JSON.stringify(result, null, 2));
390
+ } catch (err) {
391
+ console.error('\x1b[31māŒ Error:\x1b[0m', err.response?.data || err.message);
392
+ }
393
+
394
+ await askQuestion('\n\x1b[36mPress Enter to continue...\x1b[0m');
395
+ }
396
+
397
+ async function albumMenu() {
398
+ console.clear();
399
+ showLogo();
400
+
401
+ const action = await selectOption('šŸ’¾ Album Actions:', ['List Albums', 'Add Video', 'View Videos', 'Delete Video']);
402
+ const defaultAuthor = getDefaultAuthor();
403
+ const author = await askQuestion('\x1b[36mEnter your name/author ID\x1b[0m', defaultAuthor);
404
+
405
+ try {
406
+ let result;
407
+
408
+ if (action === 'List Albums') {
409
+ result = await api.ShAnalbumList(author);
410
+ }
411
+ else if (action === 'Add Video') {
412
+ const category = await askQuestion('\x1b[36mEnter category name\x1b[0m');
413
+ const videoUrl = await askQuestion('\x1b[36mEnter video URL\x1b[0m');
414
+ const senderID = await askQuestion('\x1b[36mEnter sender ID\x1b[0m');
415
+ result = await api.ShAnalbumAdd(category, videoUrl, senderID, author);
416
+ }
417
+ else if (action === 'View Videos') {
418
+ const category = await askQuestion('\x1b[36mEnter category name\x1b[0m');
419
+ const senderID = await askQuestion('\x1b[36mEnter sender ID\x1b[0m');
420
+ const key = await askQuestion('\x1b[36mEnter access key (optional)\x1b[0m');
421
+ result = await api.ShAnalbumVideos(category, senderID, author, key);
422
+ }
423
+ else if (action === 'Delete Video') {
424
+ const url = await askQuestion('\x1b[36mEnter video URL to delete\x1b[0m');
425
+ const key = await askQuestion('\x1b[36mEnter access key\x1b[0m');
426
+ result = await api.ShAnalbumDelete(url, author, key);
427
+ }
428
+
429
+ console.log('\x1b[32māœ… Success!\x1b[0m\n');
430
+ console.log(JSON.stringify(result, null, 2));
431
+ } catch (err) {
432
+ console.error('\x1b[31māŒ Error:\x1b[0m', err.response?.data || err.message);
433
+ }
434
+
435
+ await askQuestion('\n\x1b[36mPress Enter to continue...\x1b[0m');
436
+ }
437
+
438
+ async function fontMenu() {
439
+ console.clear();
440
+ showLogo();
441
+
442
+ const action = await selectOption('šŸŽØ Font Utilities:', ['Apply Font to Text', 'List Available Fonts', 'Generate Wish Card']);
443
+ const defaultAuthor = getDefaultAuthor();
444
+ const author = await askQuestion('\x1b[36mEnter your name/author ID\x1b[0m', defaultAuthor);
445
+
446
+ try {
447
+ if (action === 'List Available Fonts') {
448
+ const result = await api.ShAnfontList(author);
449
+ console.log('\n\x1b[32māœ… Available Fonts:\x1b[0m\n');
450
+ console.log(JSON.stringify(result, null, 2));
451
+ }
452
+ else if (action === 'Apply Font to Text') {
453
+ const text = await askQuestion('\x1b[36mEnter your text\x1b[0m');
454
+ const font = await askQuestion('\x1b[36mEnter font name\x1b[0m', 'Arial');
455
+ const result = await api.ShAnFont(text, font, author);
456
+ console.log('\x1b[32māœ… Formatted Text:\x1b[0m\n');
457
+ console.log(result);
458
+ }
459
+ else if (action === 'Generate Wish Card') {
460
+ const name = await askQuestion('\x1b[36mEnter name for wish card\x1b[0m');
461
+ const font = await askQuestion('\x1b[36mEnter font name\x1b[0m', 'Arial');
462
+ const result = await api.ShAnWish(name, font, author);
463
+ console.log('\x1b[32māœ… Wish Card Generated:\x1b[0m\n');
464
+ console.log(JSON.stringify(result, null, 2));
465
+ }
466
+ } catch (err) {
467
+ console.error('\x1b[31māŒ Error:\x1b[0m', err.response?.data || err.message);
468
+ }
469
+
470
+ await askQuestion('\n\x1b[36mPress Enter to continue...\x1b[0m');
471
+ }
472
+
473
+ async function captionMenu() {
474
+ console.clear();
475
+ showLogo();
476
+
477
+ const action = await selectOption('šŸ“ Caption Manager:', ['Add Caption', 'Get Caption', 'List Captions']);
478
+ const defaultAuthor = getDefaultAuthor();
479
+ const author = await askQuestion('\x1b[36mEnter your name/author ID\x1b[0m', defaultAuthor);
480
+
481
+ try {
482
+ if (action === 'Add Caption') {
483
+ const category = await askQuestion('\x1b[36mEnter category\x1b[0m');
484
+ const language = await askQuestion('\x1b[36mEnter language (e.g., en, es, hi)\x1b[0m');
485
+ const caption = await askQuestion('\x1b[36mEnter caption text\x1b[0m');
486
+ const senderID = await askQuestion('\x1b[36mEnter sender ID\x1b[0m');
487
+ const result = await api.ShAncaptionAdd(category, language, caption, senderID, author);
488
+ console.log('\x1b[32māœ… Caption Added!\x1b[0m\n');
489
+ console.log(JSON.stringify(result, null, 2));
490
+ }
491
+ else if (action === 'List Captions') {
492
+ const language = await askQuestion('\x1b[36mEnter language\x1b[0m', 'en');
493
+ const result = await api.ShAncaptionList(language, author);
494
+ console.log('\x1b[32māœ… Captions List:\x1b[0m\n');
495
+ console.log(JSON.stringify(result, null, 2));
496
+ }
497
+ else if (action === 'Get Caption') {
498
+ const category = await askQuestion('\x1b[36mEnter category\x1b[0m');
499
+ const language = await askQuestion('\x1b[36mEnter language\x1b[0m');
500
+ const senderID = await askQuestion('\x1b[36mEnter sender ID\x1b[0m');
501
+ const key = await askQuestion('\x1b[36mEnter access key (optional)\x1b[0m');
502
+ const result = await api.ShAnCaption(category, language, senderID, author, key);
503
+ console.log('\x1b[32māœ… Caption:\x1b[0m\n');
504
+ console.log(JSON.stringify(result, null, 2));
505
+ }
506
+ } catch (err) {
507
+ console.error('\x1b[31māŒ Error:\x1b[0m', err.response?.data || err.message);
508
+ }
509
+
510
+ await askQuestion('\n\x1b[36mPress Enter to continue...\x1b[0m');
511
+ }
512
+
513
+ async function memeMenu() {
514
+ console.clear();
515
+ showLogo();
516
+
517
+ const action = await selectOption('šŸ–¼ļø Meme Generator:', ['Get Random Meme', 'Add New Meme']);
518
+ const defaultAuthor = getDefaultAuthor();
519
+ const author = await askQuestion('\x1b[36mEnter your name/author ID\x1b[0m', defaultAuthor);
520
+
521
+ try {
522
+ if (action === 'Get Random Meme') {
523
+ const result = await api.ShAnMeme(author);
524
+ console.log('\x1b[32māœ… Random Meme:\x1b[0m\n');
525
+ console.log(JSON.stringify(result, null, 2));
526
+ }
527
+ else if (action === 'Add New Meme') {
528
+ const memeUrl = await askQuestion('\x1b[36mEnter meme image/video URL\x1b[0m');
529
+ const senderID = await askQuestion('\x1b[36mEnter sender ID\x1b[0m');
530
+ const result = await api.ShAnmemeAdd(memeUrl, senderID, author);
531
+ console.log('\x1b[32māœ… Meme Added!\x1b[0m\n');
532
+ console.log(JSON.stringify(result, null, 2));
533
+ }
534
+ } catch (err) {
535
+ console.error('\x1b[31māŒ Error:\x1b[0m', err.response?.data || err.message);
536
+ }
537
+
538
+ await askQuestion('\n\x1b[36mPress Enter to continue...\x1b[0m');
539
+ }
540
+
541
+ async function cloudMenu() {
542
+ console.clear();
543
+ showLogo();
544
+
545
+ const platform = await selectOption('ā˜ļø Upload To:', ['Imgur', 'ImgBB']);
546
+ const url = await askQuestion('\x1b[36mEnter media URL to upload\x1b[0m');
547
+ const defaultAuthor = getDefaultAuthor();
548
+ const author = await askQuestion('\x1b[36mEnter your name/author ID\x1b[0m', defaultAuthor);
549
+
550
+ if (!url) {
551
+ console.log('\x1b[31māŒ URL is required!\x1b[0m');
552
+ await askQuestion('\nPress Enter to continue...');
553
+ return;
554
+ }
555
+
556
+ console.log('\n\x1b[33mā³ Uploading...\x1b[0m\n');
557
+
558
+ try {
559
+ let result;
560
+ if (platform === 'Imgur') {
561
+ result = await api.ShAnImgur(url, author);
562
+ } else {
563
+ result = await api.ShAnImgbb(url, author);
564
+ }
565
+
566
+ console.log('\x1b[32māœ… Upload Successful!\x1b[0m\n');
567
+ console.log(JSON.stringify(result, null, 2));
568
+ } catch (err) {
569
+ console.error('\x1b[31māŒ Error:\x1b[0m', err.response?.data || err.message);
570
+ }
571
+
572
+ await askQuestion('\n\x1b[36mPress Enter to continue...\x1b[0m');
573
+ }
574
+
575
+ async function main() {
576
+ if (process.argv.includes('--help') || process.argv.includes('-h')) {
577
+ showLogo();
578
+ console.log(`
579
+ \x1b[36mSHAN SERVER - Interactive Media Downloader & Utilities\x1b[0m
580
+
581
+ \x1b[33mUSAGE:\x1b[0m
582
+ shan Start interactive menu
583
+ shan --help Show this help
584
+ shan --version Show version
585
+
586
+ \x1b[33mAUTO-AUTHOR (CLI ONLY):\x1b[0m
587
+ The CLI automatically detects your system username and uses it as the default author.
588
+ If no username is found, it defaults to: \x1b[36mā™”ļøŽ š—¦š—µš—”š—» ā™”ļøŽ\x1b[0m
589
+
590
+ \x1b[33mCODE USAGE:\x1b[0m
591
+ When using in code, author is \x1b[31mREQUIRED\x1b[0m:
592
+ const shan = require('shan-server');
593
+ const result = await shan.ShAnYtdl(url, 'ā™”ļøŽ š—¦š—µš—”š—» ā™”ļøŽ');
594
+
595
+ \x1b[33mDESCRIPTION:\x1b[0m
596
+ An interactive CLI tool for downloading videos from YouTube, TikTok,
597
+ Instagram, Facebook, Twitter, and more. Also includes AI chatbots,
598
+ album storage, captions, fonts, memes, and cloud uploads.
599
+
600
+ \x1b[33mSUPPORTED PLATFORMS:\x1b[0m
601
+ āœ“ Windows (CMD, PowerShell, Terminal)
602
+ āœ“ Linux (bash, zsh, fish)
603
+ āœ“ macOS (Terminal, iTerm2)
604
+ āœ“ Termux (Android)
605
+ āœ“ Chrome OS
606
+ āœ“ Any OS with Node.js
607
+
608
+ \x1b[33mREQUIREMENTS:\x1b[0m
609
+ Node.js >= 12.0.0
610
+
611
+ \x1b[33mEXAMPLES:\x1b[0m
612
+ $ shan # Start interactive menu
613
+ $ npx shan-server # Run without installing
614
+ $ node -e "require('shan-server').ShAnYtdl('url', 'ā™”ļøŽ š—¦š—µš—”š—» ā™”ļøŽ')"
615
+
616
+ \x1b[36m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m
617
+ `);
618
+ process.exit(0);
619
+ }
620
+
621
+ if (process.argv.includes('--version') || process.argv.includes('-v')) {
622
+ console.log('shan-server v1.0.4');
623
+ console.log(`Default Author: ${getDefaultAuthor()}`);
624
+ process.exit(0);
625
+ }
626
+
627
+ while (true) {
628
+ const choice = await showMainMenu();
629
+
630
+ switch(choice) {
631
+ case '1':
632
+ await downloadMenu();
633
+ break;
634
+ case '2':
635
+ await searchMenu();
636
+ break;
637
+ case '3':
638
+ await aiChatbotMenu();
639
+ break;
640
+ case '4':
641
+ await albumMenu();
642
+ break;
643
+ case '5':
644
+ await fontMenu();
645
+ break;
646
+ case '6':
647
+ await captionMenu();
648
+ break;
649
+ case '7':
650
+ await memeMenu();
651
+ break;
652
+ case '8':
653
+ await cloudMenu();
654
+ break;
655
+ case '0':
656
+ console.log('\n\x1b[36mšŸ‘‹ Thank you for using SHAN SERVER!\x1b[0m\n');
657
+ process.exit(0);
658
+ default:
659
+ console.log('\x1b[31māŒ Invalid option! Please try again.\x1b[0m');
660
+ await askQuestion('\nPress Enter to continue...');
661
+ }
662
+ }
663
+ }
664
+
665
+ process.on('SIGINT', () => {
666
+ console.log('\n\n\x1b[36mšŸ‘‹ Goodbye from SHAN SERVER!\x1b[0m\n');
667
+ process.exit(0);
668
+ });
669
+
670
+ if (require.main === module) {
671
+ main().catch(console.error);
672
+ }
673
+
674
+ module.exports = {
675
+ ShAnAlldl: api.ShAnAlldl,
676
+ ShAnAlldl2: api.ShAnAlldl2,
677
+ ShAnFbdl: api.ShAnFbdl,
678
+ ShAnYtdl: api.ShAnYtdl,
679
+ ShAnYtmp3: api.ShAnYtmp3,
680
+ ShAnThreadl: api.ShAnThreadl,
681
+ ShAnTwitdl: api.ShAnTwitdl,
682
+ ShAnTikdl: api.ShAnTikdl,
683
+ ShAnInstadl: api.ShAnInstadl,
684
+ ShAnInstadl2: api.ShAnInstadl2,
685
+ ShAnInstadl3: api.ShAnInstadl3,
686
+ ShAnPindl: api.ShAnPindl,
687
+ ShAnCapcutdl: api.ShAnCapcutdl,
688
+ ShAnLikeedl: api.ShAnLikeedl,
689
+ ShAnytSearch: api.ShAnytSearch,
690
+ ShAnBaby: api.ShAnBaby,
691
+ ShAnBteach: api.ShAnBteach,
692
+ ShAnBrans: api.ShAnBrans,
693
+ ShAnBmsg: api.ShAnBmsg,
694
+ ShAnBlist: api.ShAnBlist,
695
+ ShAnBedit: api.ShAnBedit,
696
+ ShAnBdelete: api.ShAnBdelete,
697
+ ShAnHoney: api.ShAnHoney,
698
+ ShAnHteach: api.ShAnHteach,
699
+ ShAnHmsg: api.ShAnHmsg,
700
+ ShAnHlist: api.ShAnHlist,
701
+ ShAnHedit: api.ShAnHedit,
702
+ ShAnHdelete: api.ShAnHdelete,
703
+ ShAnalbumVideos: api.ShAnalbumVideos,
704
+ ShAnalbumAdd: api.ShAnalbumAdd,
705
+ ShAnalbumDelete: api.ShAnalbumDelete,
706
+ ShAnalbumList: api.ShAnalbumList,
707
+ ShAnImgur: api.ShAnImgur,
708
+ ShAntikSearch: api.ShAntikSearch,
709
+ ShAnFont: api.ShAnFont,
710
+ ShAnfontList: api.ShAnfontList,
711
+ ShAnWish: api.ShAnWish,
712
+ ShAncaptionAdd: api.ShAncaptionAdd,
713
+ ShAncaptionList: api.ShAncaptionList,
714
+ ShAnCaption: api.ShAnCaption,
715
+ ShAnmemeAdd: api.ShAnmemeAdd,
716
+ ShAnMeme: api.ShAnMeme,
717
+ ShAnImgbb: api.ShAnImgbb,
718
+ getDefaultAuthor
719
+ };
package/package.json CHANGED
@@ -1,38 +1,60 @@
1
1
  {
2
2
  "name": "shan-server",
3
- "version": "1.0.2",
4
- "description": "All-platform social media video downloader supporting YouTube, Instagram, TikTok, Facebook, Twitter, Threads, CapCut, Pinterest and more. made ā™”ļøŽ š—¦š—µš—”š—» ā™”ļøŽ",
3
+ "version": "1.0.4",
4
+ "description": "Interactive SHAN SERVER CLI with auto-author detection for CLI - Download videos from YouTube, TikTok, Instagram, Facebook, Twitter, and more. Features AI chatbots, album storage, captions, fonts, memes, and cloud uploads. Works on Termux, Windows, Linux, macOS, Chrome OS. By ā™”ļøŽ š—¦š—µš—”š—» ā™”ļøŽ",
5
+ "os": [
6
+ "win32",
7
+ "linux",
8
+ "darwin",
9
+ "android"
10
+ ],
11
+ "files": [
12
+ "index.js"
13
+ ],
5
14
  "keywords": [
6
- "alldl",
7
- "instaDL",
8
- "ytDL",
9
- "ytmp3",
10
- "shan-server",
11
- "ShAn",
12
- "ShAn_Server",
13
- "sh4n",
14
- "instaDL2",
15
- "instaDL3",
16
- "tikDL",
17
- "fbDL",
18
- "twitDL",
19
- "threaDL",
20
- "capcutDL",
21
- "pinDL",
22
- "all-platform",
23
- "video-downloader",
24
- "social-media-downloader",
25
- "media-downloader",
26
- "downloader",
27
- "youtube-downloader",
28
- "instagram-downloader",
29
- "tiktok-downloader",
30
- "facebook-downloader",
31
- "twitter-downloader",
32
- "threads-downloader",
33
- "pinterest-downloader",
34
- "scraper"
35
- ],
15
+ "alldl",
16
+ "instaDL",
17
+ "ytDL",
18
+ "ytmp3",
19
+ "shan-server",
20
+ "ShAn",
21
+ "ShAn_Server",
22
+ "sh4n",
23
+ "shan",
24
+ "instaDL2",
25
+ "instaDL3",
26
+ "tikDL",
27
+ "fbDL",
28
+ "album",
29
+ "meme",
30
+ "twitDL",
31
+ "threaDL",
32
+ "capcutDL",
33
+ "pinDL",
34
+ "bby",
35
+ "baby",
36
+ "baby-Ai",
37
+ "all-platform",
38
+ "video-downloader",
39
+ "social-media-downloader",
40
+ "media-downloader",
41
+ "downloader",
42
+ "youtube-downloader",
43
+ "instagram-downloader",
44
+ "tiktok-downloader",
45
+ "facebook-downloader",
46
+ "twitter-downloader",
47
+ "threads-downloader",
48
+ "pinterest-downloader",
49
+ "termux",
50
+ "cli",
51
+ "downloader",
52
+ "media-downloader",
53
+ "ai-chatbot",
54
+ "album-storage",
55
+ "meme-generator",
56
+ "scraper"
57
+ ],
36
58
  "homepage": "https://github.com/Sh4nDev/ShAn-Server#readme",
37
59
  "bugs": {
38
60
  "url": "https://github.com/Sh4nDev/ShAn-Server/issues"
@@ -45,7 +67,18 @@
45
67
  "author": "ā™”ļøŽ š—¦š—µš—”š—» ā™”ļøŽ",
46
68
  "type": "commonjs",
47
69
  "main": "index.js",
70
+ "bin": {
71
+ "shan": "./index.js",
72
+ "shan-server": "./index.js"
73
+ },
48
74
  "scripts": {
75
+ "start": "node index.js",
49
76
  "test": "echo \"Error: no test specified\" && exit 1"
77
+ },
78
+ "dependencies": {
79
+ "axios": "^1.6.0"
80
+ },
81
+ "engines": {
82
+ "node": ">=12.0.0"
50
83
  }
51
84
  }