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