const express = require('express'); const request = require('request'); require('dotenv').config(); const app = express(); const eachfilesize = {}; function getFileSize(links) { let fileSize = 0; for (const link of links) { request.head(link, (err, res) => { if (err) { console.error(err); return; } const contentLength = parseInt(res.headers['content-length'] || 0.1); fileSize += contentLength; eachfilesize[link] = contentLength; }); } return fileSize; } app.get('/:filename', (req, res) => { const filename = req.params.filename; const originalUrl = `https://huggingface.co/tranquan24/video/resolve/main/${filename}`; const token = process.env.TOKEN; const headers = { 'Authorization': `Bearer ${token}`, 'Range': req.headers['range'] || '' }; request.get({ url: originalUrl, headers: headers }).on('response', (originalResponse) => { const links = [originalUrl]; const fileSize = getFileSize(links); let headers_dict = originalResponse.headers; headers_dict['Access-Control-Allow-Origin'] = '*'; headers_dict['Content-Disposition'] = `attachment; filename="${filename}"`; const { statusCode, headers } = originalResponse; res.writeHead(statusCode, headers); originalResponse.pipe(res); }).on('error', (err) => { console.error(err); res.status(500).send('Internal Server Error'); }); }); const port = 7860; app.listen(port, '0.0.0.0', () => { console.log(`Server is running on port ${port}`); });