| const axios = require('axios'); | |
| const express = require('express'); | |
| const cheerio = require('cheerio'); | |
| const app = express(); | |
| async function renderz() { | |
| try { | |
| let url = 'https://renderz.app/redeem-codes'; | |
| let response = await axios.get(url); | |
| let $ = cheerio.load(response.data); | |
| let codes = []; | |
| $('.flex.flex-col.gap-4 button').each((index, element) => { | |
| let reward = $(element).find('span.text-white.text-sm.font-bold') | |
| .text().replace('Reward: ', '').trim(); | |
| let codeElement = $(element).find('div.text-white.font-bold').first(); | |
| codeElement.find('div').remove(); | |
| let code = codeElement.text().trim(); | |
| if (reward && code) { | |
| codes.push({ reward, code }); | |
| } | |
| }); | |
| return codes; | |
| } catch (error) { | |
| console.error('Gagal mengambil data:', error); | |
| return []; | |
| } | |
| }; | |
| app.all('/', (req, res) => res.send(`<!DOCTYPE html> | |
| <html> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1"> | |
| <link rel="stylesheet" href="https://nightly.link/style.css"> | |
| <title>FC Mobile Redeem Codes</title> | |
| <body> | |
| <article> | |
| <h1>FC Mobile Redeem Codes</h1> | |
| <h2>Redeem here <a href="https://redeem.fcm.ea.com">redeem.fcm.ea.com</a></h2> | |
| <p>List of Code:</p> | |
| <table id="codes-table"><tr><th>Reward</th><th>Code</th></tr></table> | |
| </article> | |
| <script> | |
| async function fetchAndPopulateTable(){try{const r=await fetch('/v1/codes'),d=await r.json(),t=document.getElementById('codes-table');d.forEach(e=>{const o=t.insertRow();o.insertCell(0).textContent=e.reward,o.insertCell(1).textContent=e.code})}catch(r){console.error('Error fetching data:',r)}}document.addEventListener('DOMContentLoaded',fetchAndPopulateTable); | |
| </script> | |
| </body> | |
| </html>`)); | |
| app.all('/v1/codes', async (req, res) => res.json(await renderz())); | |
| app.listen(7860); |