-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathserver.js
More file actions
76 lines (60 loc) · 2.28 KB
/
server.js
File metadata and controls
76 lines (60 loc) · 2.28 KB
1
2
3
4
5
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
const express = require('express');
const { getTikTokFollowers } = require('./scraper');
const fs = require('fs');
const path = require('path');
const app = express();
const PORT = process.env.PORT || 3000;
// Cola en memoria para usuarios en proceso
let processingQueue = new Set();
// Carpeta para guardar resultados
const dataFolder = path.join(__dirname, 'data');
if (!fs.existsSync(dataFolder)) {
fs.mkdirSync(dataFolder);
}
app.get('/followers/:username', async (req, res) => {
const { username } = req.params;
const maxScrolls = parseInt(req.query.scrolls) || 30;
if (processingQueue.has(username)) {
return res.json({
status: 'processing',
message: `El usuario "${username}" ya está en cola, intenta con otro.`
});
}
processingQueue.add(username);
res.json({
status: 'queued',
message: `El usuario "${username}" está en proceso, espera a que termine.`
});
try {
const followers = await getTikTokFollowers(username, maxScrolls);
const dateStr = new Date().toISOString().split('T')[0];
const fileName = `${username}-${dateStr}.json`;
const filePath = path.join(dataFolder, fileName);
fs.writeFileSync(filePath, JSON.stringify(followers, null, 2));
console.log(`✅ Archivo guardado: ${fileName}`);
} catch (err) {
console.error(`❌ Error procesando ${username}:`, err);
} finally {
processingQueue.delete(username);
}
});
app.listen(PORT, () => {
console.log(`Servidor corriendo en http://localhost:${PORT}`);
});
// const puppeteer = require('puppeteer-core');
// (async () => {
// const browser = await puppeteer.launch({
// headless: false,
// slowMo: 50,
// executablePath: "C:\\Program Files\\BraveSoftware\\Brave-Browser\\Application\\brave.exe",
// userDataDir: "C:\\Users\\Usuario\\AppData\\Local\\BraveSoftware\\Brave-Browser\\User Data",
// args: [
// "--profile-directory=Default",
// "--no-sandbox",
// "--disable-setuid-sandbox"
// ]
// });
// const page = await browser.newPage();
// await page.goto('https://www.google.com', { waitUntil: 'networkidle2' });
// console.log("✅ Brave abierto con perfil cargado");
// })();