Spaces:
Sleeping
Sleeping
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}`); | |
}); | |