shan-server 1.0.3 → 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.
- package/README.md +33 -5
- package/index.js +719 -1
- package/package.json +65 -35
- package/.github/workflows/shan.yml +0 -21
package/README.md
CHANGED
|
@@ -4,17 +4,45 @@
|
|
|
4
4
|
|
|
5
5
|
</h3>
|
|
6
6
|
|
|
7
|
+
[](https://github.com/Sh4nDev/shan-fca)
|
|
8
|
+
[](https://www.javascript.com/)
|
|
9
|
+
[](LICENSE)
|
|
10
|
+
[]()
|
|
11
|
+
[](https://www.npmjs.com/package/shan-server)
|
|
12
|
+
[](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
|
-
Baby Ai and Baby Ai Teach
|
|
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
|
|
@@ -429,7 +457,7 @@ const ans = "My Boss ♡︎ 𝗦𝗵𝗔𝗻 ♡︎"; // Multiple teach availabl
|
|
|
429
457
|
const uid = "100045644423035"; //facebook uid
|
|
430
458
|
const font = "3"; // font style
|
|
431
459
|
|
|
432
|
-
const res = await ShAnBteach
|
|
460
|
+
const res = await ShAnBteach(ask, ans, uid, font, author);
|
|
433
461
|
console.log(res);
|
|
434
462
|
```
|
|
435
463
|
## Output Example (Baby Ai Teach)
|
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,41 +1,60 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "shan-server",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "
|
|
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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
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
|
+
],
|
|
39
58
|
"homepage": "https://github.com/Sh4nDev/ShAn-Server#readme",
|
|
40
59
|
"bugs": {
|
|
41
60
|
"url": "https://github.com/Sh4nDev/ShAn-Server/issues"
|
|
@@ -48,7 +67,18 @@
|
|
|
48
67
|
"author": "♡︎ 𝗦𝗵𝗔𝗻 ♡︎",
|
|
49
68
|
"type": "commonjs",
|
|
50
69
|
"main": "index.js",
|
|
70
|
+
"bin": {
|
|
71
|
+
"shan": "./index.js",
|
|
72
|
+
"shan-server": "./index.js"
|
|
73
|
+
},
|
|
51
74
|
"scripts": {
|
|
75
|
+
"start": "node index.js",
|
|
52
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"
|
|
53
83
|
}
|
|
54
84
|
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
name: "publish npm"
|
|
2
|
-
|
|
3
|
-
on: push
|
|
4
|
-
|
|
5
|
-
jobs:
|
|
6
|
-
publish:
|
|
7
|
-
runs-on: ubuntu-latest
|
|
8
|
-
steps:
|
|
9
|
-
- name: Checkout
|
|
10
|
-
uses: actions/checkout@v4
|
|
11
|
-
|
|
12
|
-
- name: Setup Node.js
|
|
13
|
-
uses: actions/setup-node@v4
|
|
14
|
-
with:
|
|
15
|
-
node-version: 16
|
|
16
|
-
registry-url: https://registry.npmjs.org
|
|
17
|
-
|
|
18
|
-
- name: Publish to NPM
|
|
19
|
-
run: npm publish --access public
|
|
20
|
-
env:
|
|
21
|
-
NODE_AUTH_TOKEN: ${{ secrets.SHAN }}
|