Added ulozto video streaming

This commit is contained in:
Filip Znachor 2022-02-23 19:50:47 +01:00
parent fd4f51cba1
commit 9bd1efdb8d
5 changed files with 277 additions and 173 deletions

93
downloader.ts Normal file
View file

@ -0,0 +1,93 @@
import axios from "axios";
import { UrlPool } from "./urlpool";
export class Downloader {
pool: UrlPool;
chunks: Buffer[] = [];
downloaded_chunks = 0;
total_chunks = 0;
chunk_size = 256*1024;
total_size = 0;
ready: boolean = false;
constructor(pool: UrlPool) {
this.pool = pool;
}
async init() {
let url = await this.pool.get();
if(!url) throw "No available URL in pool!";
let r = await axios.get(url[1], {
responseType: 'arraybuffer',
headers: {
Range: `bytes=0-0`
}
});
this.total_size = parseInt(r.headers["content-range"].split("/")[1]);
this.pool.return(url[0]);
}
async download_range(from: number, to: number): Promise<Buffer> {
return new Promise(async (complete) => {
if(to > this.total_size) to = this.total_size;
let chunk_count = Math.ceil((to-from)/this.chunk_size);
let chunks: Buffer[] = [];
let completed = 0;
for(let i=0; i<chunk_count; i++) {
this.download_chunk(from, to, i).then((result) => {
chunks[i] = result;
completed++;
if(completed == chunk_count) {
complete(Buffer.concat(chunks));
}
});
}
});
}
async download_chunk(from: number, to: number, part: number): Promise<Buffer> {
let url = await this.pool.get();
if(!url) throw "No available URL!";
let lfrom = from+(part*this.chunk_size);
let lto = Math.min(lfrom+this.chunk_size-1, to);
let r = await axios.get(url[1], {
responseType: 'arraybuffer',
headers: {
Range: `bytes=${lfrom}-${lto}`
}
});
this.pool.return(url[0]);
return r.data;
}
async download_part(i: number) {
let chunk_size = 10_000_000;
let from = i*chunk_size;
let to = (from+chunk_size-1);
if(to > this.total_size) to = this.total_size;
if(this.chunks[i] || from > this.total_size) return false;
this.total_chunks++;
this.chunks[i] = await this.download_range(from, to);
this.downloaded_chunks++;
return true;
}
}

1
index.html Normal file
View file

@ -0,0 +1 @@
<video src="http://localhost:8000" controls>

198
index.ts
View file

@ -1,181 +1,33 @@
import fs from "fs";
import express from "express";
import axios from "axios";
import { Blob } from "buffer";
import { Webserver } from "./webserver";
// const app = express();
let webserver = new Webserver;
// app.get("/", async function (req, res) {
// (async () => {
// });
// let downloader = new Downloader(pool);
// app.listen(8000, function () {
// console.log("Listening on port 8000!");
// });
// await downloader.init();
// console.log(downloader.total_size);
class UrlPool {
// let limit = Math.ceil(downloader.total_size/downloader.chunk_size);
// let chunk = -1;
urls: string[];
used: boolean[] = [];
// let interval = setInterval(() => {
// let available = pool.available(limit-chunk);
// if(available.length) {
// console.log("downloading new chunks", available.length);
// available.forEach(async (i: number) => {
// chunk++;
// if(!await downloader.download_chunk(chunk)) console.warn("Error!");
// });
// }
// console.log(downloader.downloaded_chunks + " / " + downloader.total_chunks);
// if(downloader.total_chunks == downloader.downloaded_chunks) {
// clearInterval(interval);
// console.log(downloader.chunks.length);
// fs.writeFileSync("vid.mkv", Buffer.concat(downloader.chunks));
// }
// }, 1000);
constructor(urls: string[]) {
this.urls = urls;
for(let i=0; i<urls.length; i++) {
this.used[i] = false;
}
}
get(): [number, string] | undefined {
for(let i=0; i<this.urls.length; i++) {
if(this.used[i]) continue;
this.used[i] = true;
return [i, this.urls[i]];
}
}
return(i: number) {
this.used[i] = false;
}
available(count?: number) {
let available: number[] = [];
for(let i=0; i<this.used.length; i++) {
if(!this.used[i]) {
available.push(i);
}
}
return count ? available.slice(0, count) : available;
}
}
class Downloader {
pool: UrlPool;
chunks: Buffer[] = [];
downloaded_chunks = 0;
total_chunks = 0;
chunk_size = 1000000;
total_size = 0;
constructor(pool: UrlPool) {
this.pool = pool;
}
async init() {
let url = this.pool.get();
if(!url) return false;
let r = await axios.get(url[1], {
responseType: 'arraybuffer',
headers: {
Range: `bytes=0-0`
}
});
this.total_size = parseInt(r.headers["content-range"].split("/")[1]);
this.pool.return(url[0]);
}
async download_chunk(i: number) {
let from = i*this.chunk_size;
let to = (from+this.chunk_size-1);
if(to > this.total_size) to = this.total_size;
if(this.chunks[i] || from > this.total_size) return false;
this.total_chunks++;
let url = this.pool.get();
if(!url) return false;
let r = await axios.get(url[1], {
responseType: 'arraybuffer',
headers: {
Range: `bytes=${from}-${to}`
}
});
this.chunks[i] = r.data;
this.pool.return(url[0]);
this.downloaded_chunks++;
return true;
}
}
let pool = new UrlPool(`https://download.uloz.to/Ps;Hs;up=0;cid=1902599176;uip=94.140.115.76;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=182198590;tm=1645794132;ut=f;rs=0;He;ch=eb2339ff694fef5eb6c339dd143d0323;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=1902599176&De
https://download.uloz.to/Ps;Hs;up=0;cid=217796726;uip=5.2.69.50;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=1611819014;tm=1645794134;ut=f;rs=0;He;ch=ca357e24ac0a37f64736f1374a147de5;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=217796726&De
https://download.uloz.to/Ps;Hs;up=0;cid=1450029767;uip=95.214.54.97;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=1561658429;tm=1645794137;ut=f;rs=0;He;ch=24be9dd917c49b04df7de7b71dabce04;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=1450029767&De
https://download.uloz.to/Ps;Hs;up=0;cid=999887453;uip=185.220.100.247;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=1107334260;tm=1645794138;ut=f;rs=0;He;ch=85965c058db44eb9dac39f9552aaf31c;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=999887453&De
https://download.uloz.to/Ps;Hs;up=0;cid=247903693;uip=217.79.178.53;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=2013848098;tm=1645794139;ut=f;rs=0;He;ch=f129cc7c49aef5f6901a301ffb09e78f;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=247903693&De
https://download.uloz.to/Ps;Hs;up=0;cid=2132096430;uip=185.220.101.11;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=673797847;tm=1645794140;ut=f;rs=0;He;ch=5091a5e579ace8a497d6f0adcf497b0c;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=2132096430&De
https://download.uloz.to/Ps;Hs;up=0;cid=169365638;uip=185.220.100.242;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=1924737005;tm=1645794141;ut=f;rs=0;He;ch=ece065aed937f898d9adb862f9100a8f;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=169365638&De
https://download.uloz.to/Ps;Hs;up=0;cid=686552167;uip=45.153.160.140;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=655990281;tm=1645794142;ut=f;rs=0;He;ch=c770368d9c5536e7f2b53ee470486d41;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=686552167&De
https://download.uloz.to/Ps;Hs;up=0;cid=2001187746;uip=209.141.50.178;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=668227825;tm=1645794144;ut=f;rs=0;He;ch=140d095b032c6f35294f29b3d203f9f2;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=2001187746&De
https://download.uloz.to/Ps;Hs;up=0;cid=1595393867;uip=89.58.19.0;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=1798363942;tm=1645794145;ut=f;rs=0;He;ch=592768bff1847a894fd4847d599fc071;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=1595393867&De
https://download.uloz.to/Ps;Hs;up=0;cid=504210218;uip=109.70.100.30;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=802460485;tm=1645794147;ut=f;rs=0;He;ch=471cfbd448d9491e36971c33b69aac02;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=504210218&De
https://download.uloz.to/Ps;Hs;up=0;cid=459126116;uip=185.220.101.191;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=612989177;tm=1645794148;ut=f;rs=0;He;ch=8d85af0103145df2f39468beaf1dd107;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=459126116&De
https://download.uloz.to/Ps;Hs;up=0;cid=407791723;uip=185.107.70.56;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=980716832;tm=1645794149;ut=f;rs=0;He;ch=00bb0669902cfcfac53b2e2d5d86f10c;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=407791723&De
https://download.uloz.to/Ps;Hs;up=0;cid=354646677;uip=185.14.97.145;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=652261345;tm=1645794150;ut=f;rs=0;He;ch=bb570af93d599f7efd4001f254c99dd8;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=354646677&De
https://download.uloz.to/Ps;Hs;up=0;cid=1203492247;uip=185.220.100.242;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=1443730432;tm=1645794150;ut=f;rs=0;He;ch=154be66e84eaed3b70c5e4a86a1483f4;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=1203492247&De
https://download.uloz.to/Ps;Hs;up=0;cid=1834962753;uip=51.15.80.14;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=1359278523;tm=1645794152;ut=f;rs=0;He;ch=d5e04fc39559e225a73e282b2773ce01;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=1834962753&De
https://download.uloz.to/Ps;Hs;up=0;cid=1410071005;uip=51.195.107.236;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=98246841;tm=1645794153;ut=f;rs=0;He;ch=2c6975a4bf8f9748dbcd4cfdbab6f8f3;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=1410071005&De
https://download.uloz.to/Ps;Hs;up=0;cid=618501362;uip=89.163.252.230;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=482942366;tm=1645794154;ut=f;rs=0;He;ch=d71fa4e86418ae0f367320c25ccf7fff;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=618501362&De
https://download.uloz.to/Ps;Hs;up=0;cid=16241564;uip=185.220.101.80;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=1830519811;tm=1645794156;ut=f;rs=0;He;ch=9b7f8b01036203b40de882f086fc3c96;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=16241564&De
https://download.uloz.to/Ps;Hs;up=0;cid=199533540;uip=5.2.69.50;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=241392663;tm=1645794157;ut=f;rs=0;He;ch=08bc8c39cd140e8223ac3bf90efd0917;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=199533540&De
https://download.uloz.to/Ps;Hs;up=0;cid=338699318;uip=185.220.101.36;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=665274515;tm=1645794169;ut=f;rs=0;He;ch=0ac0a93a016af79bcf096ad670bd53ce;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=338699318&De
https://download.uloz.to/Ps;Hs;up=0;cid=2069360319;uip=185.220.101.70;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=1458440381;tm=1645794170;ut=f;rs=0;He;ch=cfeb317b55823cc493255691d8e2d026;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=2069360319&De
https://download.uloz.to/Ps;Hs;up=0;cid=737036779;uip=185.220.100.241;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=602733030;tm=1645794171;ut=f;rs=0;He;ch=d5d16acaa5129b263a146b6ce43603ed;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=737036779&De
https://download.uloz.to/Ps;Hs;up=0;cid=1446127845;uip=185.100.86.74;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=1673222080;tm=1645794173;ut=f;rs=0;He;ch=401f40fce22ad467793aa5f007759d2f;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=1446127845&De
https://download.uloz.to/Ps;Hs;up=0;cid=1428749874;uip=109.70.100.35;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=370384322;tm=1645794184;ut=f;rs=0;He;ch=c9171f2bff8e58269bf236f444689d67;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=1428749874&De
https://download.uloz.to/Ps;Hs;up=0;cid=40819559;uip=205.185.120.206;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=807352493;tm=1645794186;ut=f;rs=0;He;ch=1d256c63a43d49173e5209451c1a8562;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=40819559&De
https://download.uloz.to/Ps;Hs;up=0;cid=72025195;uip=188.68.58.0;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=1585441715;tm=1645794187;ut=f;rs=0;He;ch=866e484ce49bf9582d8f5131f10e6a16;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=72025195&De
https://download.uloz.to/Ps;Hs;up=0;cid=1675098407;uip=45.153.160.131;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=2031743991;tm=1645794187;ut=f;rs=0;He;ch=1fe021d8f985ad7de4a0de56a26bb5c9;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=1675098407&De
https://download.uloz.to/Ps;Hs;up=0;cid=142983770;uip=185.220.101.78;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=141502631;tm=1645794192;ut=f;rs=0;He;ch=9a2704d47659b6d48088c79cd6717185;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=142983770&De
https://download.uloz.to/Ps;Hs;up=0;cid=1121470512;uip=185.220.101.187;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=425853631;tm=1645794194;ut=f;rs=0;He;ch=61bbdf08a75e4d406cab1346dab9fa8d;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=1121470512&De
https://download.uloz.to/Ps;Hs;up=0;cid=367272634;uip=185.129.61.3;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=898723366;tm=1645794196;ut=f;rs=0;He;ch=83183e119aa6a766ba91c5ccb86738f3;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=367272634&De
https://download.uloz.to/Ps;Hs;up=0;cid=460337998;uip=185.195.71.2;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=647853543;tm=1645794197;ut=f;rs=0;He;ch=51e3d03d39878f1fb001d9db5eda69b5;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=460337998&De
https://download.uloz.to/Ps;Hs;up=0;cid=1168395994;uip=199.249.230.116;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=1588708485;tm=1645794200;ut=f;rs=0;He;ch=773e6f922f8d10f07b84140c0d6d5e2c;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=1168395994&De
https://download.uloz.to/Ps;Hs;up=0;cid=381575571;uip=107.189.30.58;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=1859251700;tm=1645794201;ut=f;rs=0;He;ch=c6eb1cabb8ce08bdf856d58157d1c2df;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=381575571&De
https://download.uloz.to/Ps;Hs;up=0;cid=662179198;uip=104.244.77.122;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=1387674204;tm=1645794213;ut=f;rs=0;He;ch=28a11d021970d8aeb62a4c3cf79c47fe;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=662179198&De
https://download.uloz.to/Ps;Hs;up=0;cid=38785771;uip=185.220.100.245;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=1531857518;tm=1645794214;ut=f;rs=0;He;ch=dcccba84d422d7e4f48965e4f190a956;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=38785771&De
https://download.uloz.to/Ps;Hs;up=0;cid=1467953227;uip=109.70.100.77;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=703474084;tm=1645794215;ut=f;rs=0;He;ch=8db82b3ed8e22e5f02a783899524025e;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=1467953227&De
https://download.uloz.to/Ps;Hs;up=0;cid=1872929816;uip=89.58.30.164;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=2032740704;tm=1645794227;ut=f;rs=0;He;ch=45bd81085d80fee23cf3e04161ac2d91;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=1872929816&De
https://download.uloz.to/Ps;Hs;up=0;cid=690400065;uip=185.220.100.246;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=86134805;tm=1645794228;ut=f;rs=0;He;ch=fdbf14ca226181f6f5ded2c2c9a07f5f;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=690400065&De
https://download.uloz.to/Ps;Hs;up=0;cid=784026385;uip=51.158.183.63;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=835601412;tm=1645794229;ut=f;rs=0;He;ch=3dcb6d2130ee2a0b3afa102f8addd628;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=784026385&De
https://download.uloz.to/Ps;Hs;up=0;cid=294526816;uip=185.220.100.240;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=694601773;tm=1645794240;ut=f;rs=0;He;ch=d3d1002adde23b7c2c09ae9740353bc9;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=294526816&De
https://download.uloz.to/Ps;Hs;up=0;cid=509923097;uip=81.17.18.60;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=1103178990;tm=1645794242;ut=f;rs=0;He;ch=61e12562da753b11ac270dec1631e67b;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=509923097&De
https://download.uloz.to/Ps;Hs;up=0;cid=528529418;uip=107.189.1.160;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=1141316485;tm=1645794249;ut=f;rs=0;He;ch=fe6b3c31b4c1f76cc5422ee4a8947012;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=528529418&De
https://download.uloz.to/Ps;Hs;up=0;cid=1671744639;uip=109.70.100.75;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=138941775;tm=1645794250;ut=f;rs=0;He;ch=f90c71da63bb9399b4b560b556e1da92;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=1671744639&De
https://download.uloz.to/Ps;Hs;up=0;cid=1721437237;uip=45.153.160.132;aff=uloz.to;did=uloz-to;fide=t4C8X2C;fs=eRGCx2K8vFiX;hid=zCM7r63;rid=303699948;tm=1645794253;ut=f;rs=0;He;ch=0711594c0eff1490b091c2b95a62bcd2;Pe/file/eRGCx2K8vFiX/frozen-2013-1080p-bluray-cz-titulky-mkv?bD&c=1721437237&De`.split("\n"));
(async () => {
let downloader = new Downloader(pool);
await downloader.init();
console.log(downloader.total_size);
let limit = Math.ceil(downloader.total_size/downloader.chunk_size);
let chunk = -1;
let interval = setInterval(() => {
let available = pool.available(limit-chunk);
if(available.length) {
console.log("downloading new chunks", available.length);
available.forEach(async (i: number) => {
chunk++;
if(!await downloader.download_chunk(chunk)) console.warn("Error!");
});
}
console.log(downloader.downloaded_chunks + " / " + downloader.total_chunks);
if(downloader.total_chunks == downloader.downloaded_chunks) {
clearInterval(interval);
console.log(downloader.chunks.length);
fs.writeFileSync("vid.mkv", Buffer.concat(downloader.chunks));
}
}, 1000);
})();
// });

49
urlpool.ts Normal file
View file

@ -0,0 +1,49 @@
export class UrlPool {
urls: string[];
used: boolean[] = [];
constructor(urls: string[]) {
this.urls = urls;
for(let i=0; i<urls.length; i++) {
this.used[i] = false;
}
}
get_raw(): [number, string] | undefined {
for(let i=0; i<this.urls.length; i++) {
if(this.used[i]) continue;
this.used[i] = true;
return [i, this.urls[i]];
}
}
async get(): Promise<[number, string] | undefined> {
let url = this.get_raw();
if(url) return url;
return new Promise((complete) => {
let check = setInterval(() => {
let url = this.get_raw();
if(url) {
clearInterval(check);
complete(url);
}
}, 500);
});
}
return(i: number) {
this.used[i] = false;
}
available(count?: number) {
let available: number[] = [];
for(let i=0; i<this.used.length; i++) {
if(!this.used[i]) {
available.push(i);
}
}
return count ? available.slice(0, count) : available;
}
}

109
webserver.ts Normal file
View file

@ -0,0 +1,109 @@
import express from "express";
import { Downloader } from "./downloader";
import { UrlPool } from "./urlpool";
let pool = new UrlPool(`https://download.uloz.to/Ps;Hs;up=0;cid=1075385397;uip=45.151.167.13;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=1513960705;tm=1645810613;ut=f;rs=0;He;ch=4376abe216c2f1313df3b83f8217686a;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=1075385397&De
https://download.uloz.to/Ps;Hs;up=0;cid=845827649;uip=185.220.101.64;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=322212252;tm=1645810615;ut=f;rs=0;He;ch=2837c41235875f81c76ca4e23a8cb65a;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=845827649&De
https://download.uloz.to/Ps;Hs;up=0;cid=545925851;uip=185.220.101.40;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=1564504109;tm=1645810625;ut=f;rs=0;He;ch=682a66e8eb3423260697b2994f4b56cf;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=545925851&De
https://download.uloz.to/Ps;Hs;up=0;cid=134509354;uip=185.193.52.180;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=240236709;tm=1645810626;ut=f;rs=0;He;ch=f90d4a1a84dcd563c347b6796646ab5b;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=134509354&De
https://download.uloz.to/Ps;Hs;up=0;cid=689866761;uip=185.220.101.8;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=1762405706;tm=1645810628;ut=f;rs=0;He;ch=066e8bcefe51c90e4bd08e2c74e6a2a2;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=689866761&De
https://download.uloz.to/Ps;Hs;up=0;cid=259237461;uip=109.70.100.79;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=1926278443;tm=1645810638;ut=f;rs=0;He;ch=f16c4d765689bd6e3ae71c901ec2db32;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=259237461&De
https://download.uloz.to/Ps;Hs;up=0;cid=1165864922;uip=107.189.13.254;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=292377586;tm=1645810639;ut=f;rs=0;He;ch=44cbc234464b444f37364f649d53153a;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=1165864922&De
https://download.uloz.to/Ps;Hs;up=0;cid=1612590485;uip=185.220.101.42;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=419668896;tm=1645810640;ut=f;rs=0;He;ch=7c9cbfc6392ed3b5bbef2b1a2bf46513;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=1612590485&De
https://download.uloz.to/Ps;Hs;up=0;cid=2119124401;uip=162.247.74.201;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=1017354030;tm=1645810642;ut=f;rs=0;He;ch=37bc44e19114834a13c7b131614c8225;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=2119124401&De
https://download.uloz.to/Ps;Hs;up=0;cid=2128887621;uip=185.220.101.188;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=1637686524;tm=1645810643;ut=f;rs=0;He;ch=9960da92e35a9bf8fc33e1bdbd85748c;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=2128887621&De
https://download.uloz.to/Ps;Hs;up=0;cid=1063192906;uip=109.70.100.28;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=653581688;tm=1645810656;ut=f;rs=0;He;ch=00a99bbb0a65db98b5503456d006e416;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=1063192906&De
https://download.uloz.to/Ps;Hs;up=0;cid=229643688;uip=104.192.3.118;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=549104253;tm=1645810657;ut=f;rs=0;He;ch=ae4e21b51fb4e1a32f8dd1f8637106a7;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=229643688&De
https://download.uloz.to/Ps;Hs;up=0;cid=1000955053;uip=185.220.102.244;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=49221319;tm=1645810658;ut=f;rs=0;He;ch=fdbf29a3c0183a68b1d5955c6839928c;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=1000955053&De
https://download.uloz.to/Ps;Hs;up=0;cid=1128235242;uip=37.120.177.0;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=1169511389;tm=1645810659;ut=f;rs=0;He;ch=154c935bcdaf19b9530ba2844109d336;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=1128235242&De
https://download.uloz.to/Ps;Hs;up=0;cid=1341280461;uip=193.189.100.198;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=1854552773;tm=1645810660;ut=f;rs=0;He;ch=b93495c8ff07cfd5af8a5f5289015a6c;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=1341280461&De
https://download.uloz.to/Ps;Hs;up=0;cid=1052445692;uip=109.70.100.76;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=1651612123;tm=1645810662;ut=f;rs=0;He;ch=08bbaf70431a06959d163c58befd9815;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=1052445692&De
https://download.uloz.to/Ps;Hs;up=0;cid=897873306;uip=185.220.101.71;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=718265845;tm=1645810662;ut=f;rs=0;He;ch=caeb984790f99a066201df9a926125b1;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=897873306&De
https://download.uloz.to/Ps;Hs;up=0;cid=479831714;uip=178.170.37.11;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=762411069;tm=1645810663;ut=f;rs=0;He;ch=e27e3f152181b1a782b2305eaace1c5b;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=479831714&De
https://download.uloz.to/Ps;Hs;up=0;cid=1714096275;uip=199.249.230.71;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=1371320955;tm=1645810675;ut=f;rs=0;He;ch=edc9b3efd30a9ce3d7bb917e29f6f349;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=1714096275&De
https://download.uloz.to/Ps;Hs;up=0;cid=1601141614;uip=78.142.18.95;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=1908252498;tm=1645810676;ut=f;rs=0;He;ch=ccc2d8900d8054059bdb7fcd18be279f;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=1601141614&De
https://download.uloz.to/Ps;Hs;up=0;cid=439352595;uip=104.149.136.246;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=1243288520;tm=1645810678;ut=f;rs=0;He;ch=2fd3032a0721a425b0085ae40fa5a9dc;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=439352595&De
https://download.uloz.to/Ps;Hs;up=0;cid=536221470;uip=185.100.85.25;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=2108562195;tm=1645810679;ut=f;rs=0;He;ch=b7beb51aeadd1d778fe17554b0fe03d3;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=536221470&De
https://download.uloz.to/Ps;Hs;up=0;cid=1329797264;uip=5.2.72.101;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=571373091;tm=1645810680;ut=f;rs=0;He;ch=baaed241e68252348e69c9ab0221fec6;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=1329797264&De
https://download.uloz.to/Ps;Hs;up=0;cid=1989239749;uip=89.163.143.8;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=152337511;tm=1645810680;ut=f;rs=0;He;ch=bd9fc49e5f9fa8a775a224536355fe2e;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=1989239749&De
https://download.uloz.to/Ps;Hs;up=0;cid=1616078901;uip=185.220.100.242;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=1909470892;tm=1645810681;ut=f;rs=0;He;ch=36eeb95cb768d6fb112ad050fceaeca6;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=1616078901&De
https://download.uloz.to/Ps;Hs;up=0;cid=105608499;uip=185.220.103.6;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=2030046172;tm=1645810682;ut=f;rs=0;He;ch=acc13e77102e54bc90f85bc45a8dad00;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=105608499&De
https://download.uloz.to/Ps;Hs;up=0;cid=215215159;uip=162.247.74.201;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=1841307121;tm=1645810684;ut=f;rs=0;He;ch=0787bb9a10d7bc947465dcf20d0181d9;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=215215159&De
https://download.uloz.to/Ps;Hs;up=0;cid=860189183;uip=104.244.78.168;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=1778916560;tm=1645810695;ut=f;rs=0;He;ch=ebbfe6383566771516c7fd22373c7a2e;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=860189183&De
https://download.uloz.to/Ps;Hs;up=0;cid=1068182435;uip=109.70.100.32;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=1942906758;tm=1645810696;ut=f;rs=0;He;ch=5588ef2c684734671d0dbe199f7d8ccc;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=1068182435&De
https://download.uloz.to/Ps;Hs;up=0;cid=2075854648;uip=45.153.160.140;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=1150412955;tm=1645810697;ut=f;rs=0;He;ch=f43eefa18e03abb45da23c47e745c30b;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=2075854648&De
https://download.uloz.to/Ps;Hs;up=0;cid=2076753096;uip=185.220.100.245;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=16806957;tm=1645810699;ut=f;rs=0;He;ch=c5f2c9f1efb670ec6cf625b0c6a27061;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=2076753096&De
https://download.uloz.to/Ps;Hs;up=0;cid=1835207378;uip=152.89.105.0;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=1800013622;tm=1645810701;ut=f;rs=0;He;ch=5a295782915eb7ce7b52a13c0d3b2555;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=1835207378&De
https://download.uloz.to/Ps;Hs;up=0;cid=483102302;uip=185.220.102.242;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=2041624356;tm=1645810702;ut=f;rs=0;He;ch=939525c07f1bf93fe4bff160eadf99da;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=483102302&De
https://download.uloz.to/Ps;Hs;up=0;cid=385524839;uip=185.244.31.4;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=387801900;tm=1645810702;ut=f;rs=0;He;ch=9ade7b3dace635e05a4481a6f075aea3;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=385524839&De
https://download.uloz.to/Ps;Hs;up=0;cid=570654208;uip=156.146.34.193;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=1955810881;tm=1645810704;ut=f;rs=0;He;ch=06bbb0f47f55bba39bed1b886f48e1de;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=570654208&De
https://download.uloz.to/Ps;Hs;up=0;cid=1956821298;uip=185.220.101.39;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=1155901465;tm=1645810706;ut=f;rs=0;He;ch=6c2029f2d4b9db850cd60d0a2ae5e5bd;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=1956821298&De
https://download.uloz.to/Ps;Hs;up=0;cid=863783505;uip=89.248.168.41;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=225472500;tm=1645810706;ut=f;rs=0;He;ch=dbc0d11c72958e2ba5ce7c1dfb302416;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=863783505&De
https://download.uloz.to/Ps;Hs;up=0;cid=1324027452;uip=38.242.197.202;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=532662749;tm=1645810707;ut=f;rs=0;He;ch=d40c918f23059d448369c95aca66701b;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=1324027452&De
https://download.uloz.to/Ps;Hs;up=0;cid=2047394672;uip=185.220.100.242;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=1560619376;tm=1645810708;ut=f;rs=0;He;ch=b6ca8fd00c07e087c65d3a32eff2d03e;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=2047394672&De
https://download.uloz.to/Ps;Hs;up=0;cid=2141708665;uip=202.61.224.72;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=310786195;tm=1645810709;ut=f;rs=0;He;ch=1e6a31793b79a1afd4f554ff5a6ef77a;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=2141708665&De
https://download.uloz.to/Ps;Hs;up=0;cid=41843231;uip=198.98.62.79;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=449742217;tm=1645810710;ut=f;rs=0;He;ch=daa08036a4f069e1498d241fce90b85d;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=41843231&De
https://download.uloz.to/Ps;Hs;up=0;cid=56545873;uip=185.220.101.35;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=1099689764;tm=1645810711;ut=f;rs=0;He;ch=fb8214a71d9d7f86de0c736fbc92bc6f;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=56545873&De
https://download.uloz.to/Ps;Hs;up=0;cid=1802446751;uip=185.83.214.69;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=1773588717;tm=1645810712;ut=f;rs=0;He;ch=e64ab60508050740eb08400643e4316a;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=1802446751&De
https://download.uloz.to/Ps;Hs;up=0;cid=88283091;uip=185.165.169.18;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=844250361;tm=1645810713;ut=f;rs=0;He;ch=b490bf123df3676e63d03fffda160dce;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=88283091&De
https://download.uloz.to/Ps;Hs;up=0;cid=1191792085;uip=208.68.5.17;aff=uloz.to;did=uloz-to;fide=D2zbzay;fs=KrMRbSG2SRBW;hid=5qCzZTp;rid=1436758024;tm=1645810722;ut=f;rs=0;He;ch=1f283ac7cbce8ce706a44418f6a2c327;Pe/file/KrMRbSG2SRBW/ledove-kralovstvi-frozen-2013-mp4?bD&c=1191792085&De`.split("\n"));
let d = new Downloader(pool);
export class Webserver {
constructor() {
const app = express();
app.get("/", async (req, res) => {
let range: Range = {from: 0, to: null};
if(req.headers.range) range = this.parse_range(req.headers.range);
if(!range.from) range.from = 0;
console.log("downloading...", range);
if(!d.ready) await d.init();
let [from, to] = [range.from, range.from+(2*1024*1024)];
const contentLength = to - from + 1;
const headers = {
"Content-Range": `bytes ${from}-${to}/${d.total_size}`,
"Accept-Ranges": "bytes",
"Content-Length": contentLength,
"Content-Type": "video/mp4",
};
// HTTP Status 206 for Partial Content
res.writeHead(206, headers);
let stream = await d.download_range(from, to);
res.write(stream);
console.log("downloaded", range);
res.end();
});
app.listen(8000, function () {
console.log("Listening on port 8000!");
});
}
parse_range(input: string): Range {
let [from, to]: (number|null)[] = [null, null];
let parts = input.split("=");
if(parts[1]) [from, to] = parts[1].split("-").map(i => i ? parseInt(i) : null);
return {from, to};
}
}
interface Range {
from: number | null;
to: number | null;
}