Spaces:
Sleeping
Sleeping
const express = require('express'); | |
const request = require('request'); | |
const app = express(); | |
const PORT = 7860; | |
const eachfilesize = {}; | |
const REQUEST_URL = process.env.REQUEST_URL; | |
const TOKEN = process.env.TOKEN; | |
async function getFileSize(link) { | |
return new Promise((resolve, reject) => { | |
request.head(link, (err, res, body) => { | |
if (err) { | |
reject(err); | |
} else { | |
const contentLength = (parseInt(res.headers['content-length']) || 0.1).toString(); | |
eachfilesize[link] = contentLength; | |
resolve(contentLength); | |
} | |
}); | |
}); | |
} | |
app.get('*', async (req, res) => { | |
if (req.method !== 'GET') { | |
return res.status(405).send('Method Not Allowed'); | |
} | |
const filename = req.params[0]; | |
if (filename) { | |
const originalUrl = REQUEST_URL ? `${REQUEST_URL}${filename}` : `https://huggingface.co/tranquan24/video/resolve/main/${filename}`; | |
const headers = { | |
'Authorization': `Bearer ${TOKEN}`, | |
'Range': req.headers.range || '' | |
}; | |
try { | |
request.get({ url: originalUrl, headers: headers }, (err, response, body) => { | |
if (err) { | |
console.error(err); | |
return res.status(500).send('500'); | |
} | |
res.set(response.headers); | |
res.status(response.statusCode).send(body); | |
}); | |
} catch (err) { | |
console.error(err); | |
return res.status(500).send('500'); | |
} | |
} else { | |
return res.status(400).send('400'); | |
} | |
}); | |
app.listen(PORT, '0.0.0.0', () => { | |
console.log(`Server is running on http://0.0.0.0:${PORT}`); | |
}); | |