api-ix commited on
Commit
5fe2ab2
·
verified ·
1 Parent(s): 7afb379

Upload 3 files

Browse files
Files changed (3) hide show
  1. index.html +2 -4
  2. script.js +55 -165
  3. styles.css +32 -33
index.html CHANGED
@@ -27,9 +27,7 @@
27
  <i class="fas fa-skull"></i>
28
  <span>BLUE DEMON</span>
29
  </div>
30
-
31
- <!-- NEW: right-side menu -->
32
- <nav class="menu-bar">
33
  <a href="#apis">APIs</a>
34
  <a href="#docs">Docs</a>
35
  <a href="#status">Status</a>
@@ -56,7 +54,7 @@
56
  </div>
57
  <div class="stat-card">
58
  <i class="fas fa-server"></i>
59
- <span>51</span>
60
  <small>endpoints</small>
61
  </div>
62
  <div class="stat-card">
 
27
  <i class="fas fa-skull"></i>
28
  <span>BLUE DEMON</span>
29
  </div>
30
+ <nav>
 
 
31
  <a href="#apis">APIs</a>
32
  <a href="#docs">Docs</a>
33
  <a href="#status">Status</a>
 
54
  </div>
55
  <div class="stat-card">
56
  <i class="fas fa-server"></i>
57
+ <span>50</span>
58
  <small>endpoints</small>
59
  </div>
60
  <div class="stat-card">
script.js CHANGED
@@ -1,84 +1,40 @@
1
  /* ====== DATA ====== */
2
  const endpoints = [
3
  {
4
- name: "All-in-one",
5
- path: "/api/all-in-one?url=https://fb.com/video",
6
- method: "GET",
7
- params: ["url"],
8
- desc: "Download any social-media video",
9
- cat: "Downloaders",
10
- },
11
- {
12
- name: "Anime Quote",
13
- path: "/api/aniquote",
14
- method: "GET",
15
- params: [],
16
- desc: "Random quote from popular anime",
17
- cat: "Fun",
18
- },
19
- {
20
- name: "APK Downloader",
21
- path: "/api/apkdl?q=Facebook%20lite",
22
- method: "GET",
23
- params: ["q"],
24
- desc: "Download APKs directly",
25
- cat: "Downloaders",
26
- },
27
- {
28
- name: "Calculator",
29
- path: "/api/cal?num1=10&num2=5&operation=add",
30
- method: "GET",
31
- params: ["num1", "num2", "operation"],
32
- desc: "Basic arithmetic",
33
- cat: "Tools",
34
- },
35
- {
36
- name: "Country Info",
37
- path: "/api/country?q=Nigeria",
38
  method: "GET",
39
- params: ["q"],
40
- desc: "Country profiles",
41
  cat: "Tools",
 
42
  },
43
  {
44
- name: "Currency Converter",
45
- path: "/api/convert?from=USD&to=EUR&amount=100",
46
  method: "GET",
47
- params: ["from", "to", "amount"],
48
- desc: "Live exchange rates",
49
- cat: "Tools",
 
50
  },
51
  {
52
- name: "Dare",
53
- path: "/api/dare",
54
  method: "GET",
55
  params: [],
56
- desc: "Random dare challenge",
57
  cat: "Fun",
 
58
  },
59
  {
60
- name: "Encode",
61
- path: "/api/encode?text=Hello-world",
62
  method: "GET",
63
  params: ["text"],
64
- desc: "Text binary",
65
  cat: "Tools",
66
- },
67
- {
68
- name: "Decode",
69
- path: "/api/decode?binary=01001000",
70
- method: "GET",
71
- params: ["binary"],
72
- desc: "Binary → text",
73
- cat: "Tools",
74
- },
75
- {
76
- name: "Facebook DL",
77
- path: "/api/fbdl?url=https://www.facebook.com/share/r/1JB12MKi1Z/",
78
- method: "GET",
79
- params: ["url"],
80
- desc: "Facebook video downloader",
81
- cat: "Downloaders",
82
  },
83
  {
84
  name: "Gpt3.5",
@@ -87,6 +43,7 @@ const endpoints = [
87
  params: ["prompt"],
88
  desc: "ChatGPT-3.5 turbo",
89
  cat: "AI",
 
90
  },
91
  {
92
  name: "TikTok DL",
@@ -95,134 +52,61 @@ const endpoints = [
95
  params: ["url"],
96
  desc: "No-watermark TikTok",
97
  cat: "Downloaders",
 
98
  },
99
  {
100
- name: "Instagram DL",
101
- path: "/api/instadl?url=https://www.instagram.com/reel/DNsaHN70Cdr/?igsh=YzljYTk1ODg3Zg==",
102
- method: "GET",
103
- params: ["url"],
104
- desc: "Instagram media downloader",
105
- cat: "Downloaders",
106
- },
107
- {
108
- name: "YouTube MP4",
109
- path: "/api/ytmp4?url=URL",
110
  method: "GET",
111
  params: ["url"],
112
- desc: "YouTube video",
113
  cat: "Downloaders",
 
114
  },
115
  {
116
- name: "YouTube MP3",
117
- path: "/api/ytmp3?url=URL",
118
  method: "GET",
119
  params: ["url"],
120
- desc: "YouTube audio",
121
  cat: "Downloaders",
 
122
  },
123
  {
124
- name: "Text-to-Image",
125
- path: "/api/text2img?prompt=hello",
126
- method: "GET",
127
- params: ["prompt"],
128
- desc: "AI image generation",
129
- cat: "AI",
130
- },
131
- {
132
- name: "Translator",
133
- path: "/api/translate?text=hello&from=en&to=id",
134
- method: "GET",
135
- params: ["text", "from", "to"],
136
- desc: "Auto-detect translate",
137
- cat: "Tools",
138
- },
139
- {
140
- name: "Joke",
141
- path: "/api/joke",
142
- method: "GET",
143
- params: [],
144
- desc: "Random joke",
145
- cat: "Fun",
146
- },
147
- {
148
- name: "Quote",
149
- path: "/api/quote",
150
- method: "GET",
151
- params: [],
152
- desc: "Inspirational quote",
153
- cat: "Fun",
154
- },
155
- {
156
- name: "Screenshot",
157
- path: "/api/screenshot?url=WEBSITE",
158
  method: "GET",
159
  params: ["url"],
160
- desc: "Website screenshot",
161
- cat: "Tools",
 
162
  },
163
  {
164
- name: "TinyURL",
165
- path: "/api/tinyurl?url=LONG",
166
  method: "GET",
167
- params: ["url"],
168
- desc: "URL shortener",
169
- cat: "Tools",
 
170
  },
171
  {
172
- name: "Spotify DL",
173
- path: "/api/spotifydl?url=TRACK_URL",
174
  method: "GET",
175
  params: ["url"],
176
- desc: "Spotify downloader",
177
  cat: "Downloaders",
 
178
  },
179
  {
180
- name: "Twitter DL",
181
- path: "/api/twitterdl?url=https://x.com/Korsogyimi/status/1962912658618802257",
182
  method: "GET",
183
  params: ["url"],
184
- desc: "Twitter video downloader",
185
  cat: "Downloaders",
186
- },
187
- {
188
- name: "Pinterest Search",
189
- path: "/api/pinterest?q=cats",
190
- method: "GET",
191
- params: ["q"],
192
- desc: "Pinterest images",
193
- cat: "Search",
194
- },
195
- {
196
- name: "Wallpaper",
197
- path: "/api/wallpaper?q=nature",
198
- method: "GET",
199
- params: ["q"],
200
- desc: "HD wallpapers",
201
- cat: "Random",
202
- },
203
- {
204
- name: "Waifu (NSFW)",
205
- path: "/api/waifu?q=",
206
- method: "GET",
207
- params: ["q"],
208
- desc: "Random waifu pics",
209
- cat: "Random",
210
- },
211
- {
212
- name: "Hentai (NSFW)",
213
- path: "/api/hentai",
214
- method: "GET",
215
- params: [],
216
- desc: "Hentai videos",
217
- cat: "Random",
218
- },
219
- {
220
- name: "XXX Search",
221
- path: "/api/xxxsearch?q=keyword",
222
- method: "GET",
223
- params: ["q"],
224
- desc: "Search adult videos",
225
- cat: "Search",
226
  },
227
  ];
228
 
@@ -274,6 +158,7 @@ function render(reset = true) {
274
  <h4>${e.name}</h4>
275
  <p>${e.desc}</p>
276
  <span class="method">${e.method}</span>
 
277
  `;
278
  card.onclick = () => openModal(e);
279
  grid.appendChild(card);
@@ -317,7 +202,12 @@ function openModal(e) {
317
  mBody.innerHTML = `
318
  <p>${e.desc}</p>
319
  <p><strong>Method:</strong> ${e.method}</p>
320
- ${e.params.length ? `<p><strong>Params:</strong> ${e.params.join(", ")}</p>` : ""}
 
 
 
 
 
321
  <div class="code-snippet">curl -X ${e.method} "${url}"</div>
322
  <div style="margin-top:1rem">
323
  <button class="btn-copy" onclick="navigator.clipboard.writeText('${url}')">Copy URL</button>
 
1
  /* ====== DATA ====== */
2
  const endpoints = [
3
  {
4
+ name: "Decode",
5
+ path: "/api/decode?binary=01001000",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  method: "GET",
7
+ params: ["binary"],
8
+ desc: "Binary → text",
9
  cat: "Tools",
10
+ isActive: true,
11
  },
12
  {
13
+ name: "Facebook DL",
14
+ path: "/api/fbdl?url=https://www.facebook.com/share/r/1JB12MKi1Z/",
15
  method: "GET",
16
+ params: ["url"],
17
+ desc: "Facebook video downloader",
18
+ cat: "Downloaders",
19
+ isActive: true,
20
  },
21
  {
22
+ name: "Flirt 😏",
23
+ path: "/api/flirt",
24
  method: "GET",
25
  params: [],
26
+ desc: "Random flirting text",
27
  cat: "Fun",
28
+ isActive: false,
29
  },
30
  {
31
+ name: "Font",
32
+ path: "/api/font",
33
  method: "GET",
34
  params: ["text"],
35
+ desc: "Generate different fonts",
36
  cat: "Tools",
37
+ isActive: true,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  },
39
  {
40
  name: "Gpt3.5",
 
43
  params: ["prompt"],
44
  desc: "ChatGPT-3.5 turbo",
45
  cat: "AI",
46
+ isActive: true,
47
  },
48
  {
49
  name: "TikTok DL",
 
52
  params: ["url"],
53
  desc: "No-watermark TikTok",
54
  cat: "Downloaders",
55
+ isActive: true,
56
  },
57
  {
58
+ name: "TikTok DL2",
59
+ path: "/api/tkdl2?url=https://vt.tiktok.com/ZSAG1bG1e/",
 
 
 
 
 
 
 
 
60
  method: "GET",
61
  params: ["url"],
62
+ desc: "No-watermark TikTok",
63
  cat: "Downloaders",
64
+ isActive: false,
65
  },
66
  {
67
+ name: "Instagram DL",
68
+ path: "/api/instadl?url=https://www.instagram.com/reel/DNsaHN70Cdr/?igsh=YzljYTk1ODg3Zg==",
69
  method: "GET",
70
  params: ["url"],
71
+ desc: "Instagram media downloader",
72
  cat: "Downloaders",
73
+ isActive: true,
74
  },
75
  {
76
+ name: "wachannel",
77
+ path: "/api/wachannel?url=https://whatsapp.com/channel/0029VangYOt96H4JhFarL10C",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78
  method: "GET",
79
  params: ["url"],
80
+ desc: "Get WhatsApp channel info",
81
+ cat: "Stalker",
82
+ isActive: false,
83
  },
84
  {
85
+ name: "Wallpaper",
86
+ path: "/api/wallpaper?q=naruto",
87
  method: "GET",
88
+ params: ["q"],
89
+ desc: "Wallpaper search",
90
+ cat: "Search",
91
+ isActive: true,
92
  },
93
  {
94
+ name: "YouTube MP4",
95
+ path: "/api/ytmp4?url=URL",
96
  method: "GET",
97
  params: ["url"],
98
+ desc: "YouTube video",
99
  cat: "Downloaders",
100
+ isActive: true,
101
  },
102
  {
103
+ name: "YouTube MP3",
104
+ path: "/api/ytmp3?url=URL",
105
  method: "GET",
106
  params: ["url"],
107
+ desc: "YouTube audio",
108
  cat: "Downloaders",
109
+ isActive: true,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
110
  },
111
  ];
112
 
 
158
  <h4>${e.name}</h4>
159
  <p>${e.desc}</p>
160
  <span class="method">${e.method}</span>
161
+ <span class="status ${e.isActive ? 'online' : 'offline'}">${e.isActive ? 'Online' : 'Down'}</span>
162
  `;
163
  card.onclick = () => openModal(e);
164
  grid.appendChild(card);
 
202
  mBody.innerHTML = `
203
  <p>${e.desc}</p>
204
  <p><strong>Method:</strong> ${e.method}</p>
205
+ ${
206
+ e.params.length
207
+ ? `<p><strong>Params:</strong> ${e.params.join(", ")}</p>`
208
+ : ""
209
+ }
210
+ <p><strong>Status:</strong> <span class="status ${e.isActive ? 'online' : 'offline'}">${e.isActive ? 'Online' : 'Down'}</span></p>
211
  <div class="code-snippet">curl -X ${e.method} "${url}"</div>
212
  <div style="margin-top:1rem">
213
  <button class="btn-copy" onclick="navigator.clipboard.writeText('${url}')">Copy URL</button>
styles.css CHANGED
@@ -16,7 +16,10 @@
16
  --radius: 16px;
17
  }
18
 
19
- * { margin: 0; padding: 0; box-sizing: border-box; }
 
 
 
20
  html { scroll-behavior: smooth; }
21
  body {
22
  font-family: "Gagalin", "Inter", -apple-system, BlinkMacSystemFont, sans-serif;
@@ -25,8 +28,19 @@ body {
25
  line-height: 1.5;
26
  overflow-x: hidden;
27
  }
 
 
 
 
 
 
 
 
 
 
 
28
 
29
- /* Liquid BG */
30
  .liquid-bg {
31
  position: fixed; inset: 0; z-index: -1; overflow: hidden;
32
  }
@@ -43,30 +57,19 @@ body {
43
  100% { transform: translate(0, 0) scale(1); }
44
  }
45
 
46
- /* Header */
47
  .header {
48
  position: sticky; top: 0; z-index: 10;
49
  display: flex; align-items: center; justify-content: space-between;
50
  padding: 1rem 2rem; background: var(--surface); backdrop-filter: blur(20px);
51
  border-bottom: 1px solid var(--border);
52
  }
53
- .logo {
54
- font-family: "Gagalin"; font-size: 1.4rem;
55
- display: flex; align-items: center; gap: .5rem; color: var(--accent-solid);
56
- }
57
- .menu-bar {
58
- display: flex; gap: 1.2rem; font-family: "Gagalin";
59
- }
60
- .menu-bar a {
61
- color: var(--text2); font-weight: 500; text-decoration: none;
62
- transition: color .2s;
63
- }
64
- .menu-bar a:hover { color: var(--accent-solid); }
65
- @media (max-width: 600px) {
66
- .menu-bar { gap: 1rem; font-size: .9rem; }
67
- }
68
 
69
- /* Hero */
70
  .hero {
71
  display: flex; flex-direction: column; align-items: center; justify-content: center;
72
  text-align: center; min-height: 50vh; padding: 4rem 1rem;
@@ -83,7 +86,7 @@ body {
83
  }
84
  .cta:hover { transform: translateY(-3px); box-shadow: 0 8px 25px rgba(255, 179, 71, 0.35); }
85
 
86
- /* Stats */
87
  .stats {
88
  display: flex; justify-content: center; gap: 2.5rem; padding: 2rem 1rem; flex-wrap: wrap;
89
  }
@@ -102,7 +105,7 @@ body {
102
  .stat-card span { font-size: 1.4rem; font-weight: 700; }
103
  .stat-card small { color: var(--text2); }
104
 
105
- /* API Section */
106
  .api-section { padding: 3rem 1rem; max-width: 1000px; margin: auto; }
107
  .controls { margin-bottom: 2rem; }
108
  #search {
@@ -136,7 +139,7 @@ body {
136
  .card p { font-size: .9rem; color: var(--text2); }
137
  .card .method {
138
  position: absolute; top: 1rem; right: 1rem;
139
- font-family: "JetBrains Mono", monospace; font-size: .7rem;
140
  background: rgba(255, 179, 71, 0.2); color: #ffb347;
141
  padding: .15rem .4rem; border-radius: 4px;
142
  }
@@ -148,7 +151,7 @@ body {
148
  }
149
  .load-more:hover { background: var(--accent); color: #000; }
150
 
151
- /* Docs */
152
  .docs {
153
  background: var(--surface); margin: 2rem 0; padding: 3rem 1rem;
154
  text-align: center;
@@ -163,13 +166,14 @@ body {
163
  background: var(--accent); display: grid; place-items: center;
164
  font-family: "Gagalin"; font-size: 2.2rem; color: #000;
165
  }
 
166
  .step-icon.icon-1::before { content: "1"; }
167
  .step-icon.icon-2::before { content: "2"; }
168
  .step-icon.icon-3::before { content: "3"; }
169
  article h3 { font-size: 1.1rem; margin-bottom: .5rem; }
170
  article p { color: var(--text2); }
171
 
172
- /* Footer */
173
  footer {
174
  text-align: center; padding: 2rem 1rem; color: var(--text2);
175
  }
@@ -177,7 +181,7 @@ footer {
177
  .social a { color: var(--text2); font-size: 1.3rem; transition: color .2s; }
178
  .social a:hover { color: var(--accent-solid); }
179
 
180
- /* Modal */
181
  .modal {
182
  position: fixed; inset: 0; z-index: 100;
183
  display: grid; place-items: center; padding: 1rem;
@@ -196,16 +200,11 @@ footer {
196
  }
197
  .code-snippet {
198
  background: #111; border: 1px solid var(--border); border-radius: 8px;
199
- padding: 1rem; font-family: "JetBrains Mono", monospace; font-size: .85rem;
200
  margin-top: 1rem; overflow-x: auto;
201
  }
202
 
203
- /* Modal Buttons (Gagalin + tap scale) */
204
- .btn-copy,
205
- .btn-copy:active,
206
- .btn-copy:hover {
207
- font-family: "Gagalin", sans-serif;
208
- }
209
  .btn-copy {
210
  background: var(--accent); color: #000; border: none;
211
  padding: .5rem 1rem; border-radius: 50px; font-size: .85rem;
@@ -217,7 +216,7 @@ footer {
217
  }
218
  .btn-copy:hover { opacity: .9; }
219
 
220
- /* Responsive */
221
  @media (max-width: 600px) {
222
  .header { padding: 1rem; }
223
  nav { display: none; }
 
16
  --radius: 16px;
17
  }
18
 
19
+ /* 2. Apply Gagalin globally */
20
+ * {
21
+ margin: 0; padding: 0; box-sizing: border-box;
22
+ }
23
  html { scroll-behavior: smooth; }
24
  body {
25
  font-family: "Gagalin", "Inter", -apple-system, BlinkMacSystemFont, sans-serif;
 
28
  line-height: 1.5;
29
  overflow-x: hidden;
30
  }
31
+ .status {
32
+ position: absolute;
33
+ bottom: 1rem;
34
+ right: 1rem;
35
+ font-size: 0.7rem;
36
+ padding: 0.2rem 0.6rem;
37
+ border-radius: 20px;
38
+ font-weight: 600;
39
+ }
40
+ .status.online { background: #00c851; color: #fff; }
41
+ .status.offline { background: #ff4444; color: #fff; }
42
 
43
+ /* 3. Liquid BG */
44
  .liquid-bg {
45
  position: fixed; inset: 0; z-index: -1; overflow: hidden;
46
  }
 
57
  100% { transform: translate(0, 0) scale(1); }
58
  }
59
 
60
+ /* 4. Header */
61
  .header {
62
  position: sticky; top: 0; z-index: 10;
63
  display: flex; align-items: center; justify-content: space-between;
64
  padding: 1rem 2rem; background: var(--surface); backdrop-filter: blur(20px);
65
  border-bottom: 1px solid var(--border);
66
  }
67
+ .logo { font-family: "Gagalin"; font-size: 1.4rem; display: flex; align-items: center; gap: .5rem; color: var(--accent-solid); }
68
+ nav { display: flex; gap: 1.2rem; }
69
+ nav a { color: var(--text2); font-weight: 500; text-decoration: none; transition: color .2s; }
70
+ nav a:hover { color: var(--accent-solid); }
 
 
 
 
 
 
 
 
 
 
 
71
 
72
+ /* 5. Hero */
73
  .hero {
74
  display: flex; flex-direction: column; align-items: center; justify-content: center;
75
  text-align: center; min-height: 50vh; padding: 4rem 1rem;
 
86
  }
87
  .cta:hover { transform: translateY(-3px); box-shadow: 0 8px 25px rgba(255, 179, 71, 0.35); }
88
 
89
+ /* 6. Stats */
90
  .stats {
91
  display: flex; justify-content: center; gap: 2.5rem; padding: 2rem 1rem; flex-wrap: wrap;
92
  }
 
105
  .stat-card span { font-size: 1.4rem; font-weight: 700; }
106
  .stat-card small { color: var(--text2); }
107
 
108
+ /* 7. API Section */
109
  .api-section { padding: 3rem 1rem; max-width: 1000px; margin: auto; }
110
  .controls { margin-bottom: 2rem; }
111
  #search {
 
139
  .card p { font-size: .9rem; color: var(--text2); }
140
  .card .method {
141
  position: absolute; top: 1rem; right: 1rem;
142
+ font-family: var(--mono); font-size: .7rem;
143
  background: rgba(255, 179, 71, 0.2); color: #ffb347;
144
  padding: .15rem .4rem; border-radius: 4px;
145
  }
 
151
  }
152
  .load-more:hover { background: var(--accent); color: #000; }
153
 
154
+ /* 8. Docs */
155
  .docs {
156
  background: var(--surface); margin: 2rem 0; padding: 3rem 1rem;
157
  text-align: center;
 
166
  background: var(--accent); display: grid; place-items: center;
167
  font-family: "Gagalin"; font-size: 2.2rem; color: #000;
168
  }
169
+ .step-icon::before { content: attr(class); }
170
  .step-icon.icon-1::before { content: "1"; }
171
  .step-icon.icon-2::before { content: "2"; }
172
  .step-icon.icon-3::before { content: "3"; }
173
  article h3 { font-size: 1.1rem; margin-bottom: .5rem; }
174
  article p { color: var(--text2); }
175
 
176
+ /* 9. Footer */
177
  footer {
178
  text-align: center; padding: 2rem 1rem; color: var(--text2);
179
  }
 
181
  .social a { color: var(--text2); font-size: 1.3rem; transition: color .2s; }
182
  .social a:hover { color: var(--accent-solid); }
183
 
184
+ /* 10. Modal */
185
  .modal {
186
  position: fixed; inset: 0; z-index: 100;
187
  display: grid; place-items: center; padding: 1rem;
 
200
  }
201
  .code-snippet {
202
  background: #111; border: 1px solid var(--border); border-radius: 8px;
203
+ padding: 1rem; font-family: var(--mono); font-size: .85rem;
204
  margin-top: 1rem; overflow-x: auto;
205
  }
206
 
207
+ /* 11. Modal Buttons (tappable) */
 
 
 
 
 
208
  .btn-copy {
209
  background: var(--accent); color: #000; border: none;
210
  padding: .5rem 1rem; border-radius: 50px; font-size: .85rem;
 
216
  }
217
  .btn-copy:hover { opacity: .9; }
218
 
219
+ /* 12. Responsive */
220
  @media (max-width: 600px) {
221
  .header { padding: 1rem; }
222
  nav { display: none; }