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.
- package/LICENSE +21 -0
- package/README.md +105 -5
- package/index.js +719 -1
- 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
|
+
[](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
|
-
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
|
[](https://wa.me/+8801825829588)
|
|
402
502
|
[](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.
|
|
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
|
-
|
|
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
|
}
|