diff --git a/downloader.ts b/downloader.ts index f73e27e..b85f37e 100644 --- a/downloader.ts +++ b/downloader.ts @@ -8,7 +8,7 @@ export class Downloader { downloaded_chunks = 0; total_chunks = 0; - chunk_size = 256*1024; + chunk_size = 512*1024; total_size = 0; ready: boolean = false; diff --git a/index.ts b/index.ts index c62273f..5c77722 100644 --- a/index.ts +++ b/index.ts @@ -1,8 +1,11 @@ -import fs from "fs"; import { Webserver } from "./webserver"; let webserver = new Webserver; +process.on('uncaughtException', err => { + console.error('There was an uncaught error', err) +}); + // (async () => { // let downloader = new Downloader(pool); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5f05d43..a0bef7a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,11 +7,13 @@ specifiers: express: ^4.17.3 dependencies: - '@types/express': 4.17.13 - '@types/node': 17.0.20 axios: 0.26.0 express: 4.17.3 +devDependencies: + '@types/express': 4.17.13 + '@types/node': 17.0.20 + packages: /@types/body-parser/1.19.2: @@ -19,13 +21,13 @@ packages: dependencies: '@types/connect': 3.4.35 '@types/node': 17.0.20 - dev: false + dev: true /@types/connect/3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: '@types/node': 17.0.20 - dev: false + dev: true /@types/express-serve-static-core/4.17.28: resolution: {integrity: sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==} @@ -33,7 +35,7 @@ packages: '@types/node': 17.0.20 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 - dev: false + dev: true /@types/express/4.17.13: resolution: {integrity: sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==} @@ -42,30 +44,30 @@ packages: '@types/express-serve-static-core': 4.17.28 '@types/qs': 6.9.7 '@types/serve-static': 1.13.10 - dev: false + dev: true /@types/mime/1.3.2: resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} - dev: false + dev: true /@types/node/17.0.20: resolution: {integrity: sha512-Q15Clj3lZSLnhVA6yKw1G7SQz46DeL9gO1TEgfK1OQGvMdQ6TUWmCeWf1QBUNkw2BDfV52i2YuYd9OF3ZwGhjw==} - dev: false + dev: true /@types/qs/6.9.7: resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} - dev: false + dev: true /@types/range-parser/1.2.4: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} - dev: false + dev: true /@types/serve-static/1.13.10: resolution: {integrity: sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==} dependencies: '@types/mime': 1.3.2 '@types/node': 17.0.20 - dev: false + dev: true /accepts/1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} diff --git a/webserver.ts b/webserver.ts index ec112fa..a44d607 100644 --- a/webserver.ts +++ b/webserver.ts @@ -1,57 +1,28 @@ import express from "express"; import { Downloader } from "./downloader"; import { UrlPool } from "./urlpool"; +import { Readable } from 'stream'; -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 pool = new UrlPool(`https://download.uloz.to/Ps;Hs;up=0;cid=1412447369;uip=89.163.243.88;aff=uloz.to;did=uloz-to;fide=az2Gxzu;fs=pLlZx78VhpLo;hid=JPWTfrY;rid=53936164;tm=1645827197;ut=f;rs=0;He;ch=3676c0f11954b17f3b47a432f1ae1ee8;Pe/file/pLlZx78VhpLo/matrix-1999-cz-mp4?bD&c=1412447369&De +https://download.uloz.to/Ps;Hs;up=0;cid=1129985479;uip=185.220.102.249;aff=uloz.to;did=uloz-to;fide=az2Gxzu;fs=pLlZx78VhpLo;hid=JPWTfrY;rid=561098867;tm=1645827209;ut=f;rs=0;He;ch=519cfbfcb4efe4af4a94b34ec9644609;Pe/file/pLlZx78VhpLo/matrix-1999-cz-mp4?bD&c=1129985479&De +https://download.uloz.to/Ps;Hs;up=0;cid=114914590;uip=185.220.101.86;aff=uloz.to;did=uloz-to;fide=az2Gxzu;fs=pLlZx78VhpLo;hid=JPWTfrY;rid=1829476423;tm=1645827209;ut=f;rs=0;He;ch=4cf0db28c8c81955bdc81ccd3b7f92f6;Pe/file/pLlZx78VhpLo/matrix-1999-cz-mp4?bD&c=114914590&De +https://download.uloz.to/Ps;Hs;up=0;cid=1617820972;uip=107.189.4.253;aff=uloz.to;did=uloz-to;fide=az2Gxzu;fs=pLlZx78VhpLo;hid=JPWTfrY;rid=141776455;tm=1645827211;ut=f;rs=0;He;ch=7c1fb7f1a836590c274039c66dfcda99;Pe/file/pLlZx78VhpLo/matrix-1999-cz-mp4?bD&c=1617820972&De +https://download.uloz.to/Ps;Hs;up=0;cid=1469359686;uip=5.2.72.226;aff=uloz.to;did=uloz-to;fide=az2Gxzu;fs=pLlZx78VhpLo;hid=JPWTfrY;rid=1774386903;tm=1645827212;ut=f;rs=0;He;ch=6b1485bc3e20cc06d0a712ebe4036905;Pe/file/pLlZx78VhpLo/matrix-1999-cz-mp4?bD&c=1469359686&De +https://download.uloz.to/Ps;Hs;up=0;cid=1910168684;uip=107.189.10.63;aff=uloz.to;did=uloz-to;fide=az2Gxzu;fs=pLlZx78VhpLo;hid=JPWTfrY;rid=1577890352;tm=1645827223;ut=f;rs=0;He;ch=3be975ccb9361af36b61255001a5427b;Pe/file/pLlZx78VhpLo/matrix-1999-cz-mp4?bD&c=1910168684&De +https://download.uloz.to/Ps;Hs;up=0;cid=381158312;uip=89.248.168.41;aff=uloz.to;did=uloz-to;fide=az2Gxzu;fs=pLlZx78VhpLo;hid=JPWTfrY;rid=666945992;tm=1645827223;ut=f;rs=0;He;ch=ef7f799ef9521ff132ef82f8c21cd831;Pe/file/pLlZx78VhpLo/matrix-1999-cz-mp4?bD&c=381158312&De +https://download.uloz.to/Ps;Hs;up=0;cid=335896018;uip=185.195.71.2;aff=uloz.to;did=uloz-to;fide=az2Gxzu;fs=pLlZx78VhpLo;hid=JPWTfrY;rid=1195420583;tm=1645827224;ut=f;rs=0;He;ch=b77f94898e04485661c3120f1f23e95d;Pe/file/pLlZx78VhpLo/matrix-1999-cz-mp4?bD&c=335896018&De +https://download.uloz.to/Ps;Hs;up=0;cid=1364037004;uip=185.195.71.244;aff=uloz.to;did=uloz-to;fide=az2Gxzu;fs=pLlZx78VhpLo;hid=JPWTfrY;rid=1209800903;tm=1645827245;ut=f;rs=0;He;ch=d3a38438c7c8786cb869458f391d6ca3;Pe/file/pLlZx78VhpLo/matrix-1999-cz-mp4?bD&c=1364037004&De +https://download.uloz.to/Ps;Hs;up=0;cid=947300788;uip=185.220.100.243;aff=uloz.to;did=uloz-to;fide=az2Gxzu;fs=pLlZx78VhpLo;hid=JPWTfrY;rid=1975067348;tm=1645827245;ut=f;rs=0;He;ch=39019f9e27d7a216eb2d2cecffda619c;Pe/file/pLlZx78VhpLo/matrix-1999-cz-mp4?bD&c=947300788&De +https://download.uloz.to/Ps;Hs;up=0;cid=1608448688;uip=185.220.101.42;aff=uloz.to;did=uloz-to;fide=az2Gxzu;fs=pLlZx78VhpLo;hid=JPWTfrY;rid=1643356760;tm=1645827246;ut=f;rs=0;He;ch=1347a9cf2cabad923867347b897924a3;Pe/file/pLlZx78VhpLo/matrix-1999-cz-mp4?bD&c=1608448688&De +https://download.uloz.to/Ps;Hs;up=0;cid=709281061;uip=185.220.101.20;aff=uloz.to;did=uloz-to;fide=az2Gxzu;fs=pLlZx78VhpLo;hid=JPWTfrY;rid=2092835317;tm=1645827247;ut=f;rs=0;He;ch=254d43fbd221b68723edcb0c6f0d9181;Pe/file/pLlZx78VhpLo/matrix-1999-cz-mp4?bD&c=709281061&De`.split("\n")); let d = new Downloader(pool); export class Webserver { + chunk_size = 5*1024*1024; + partial_size = this.chunk_size*10; + constructor() { const app = express(); @@ -62,15 +33,15 @@ export class Webserver { 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)]; + let [from, to] = this.from_to([range.from, range.from+this.chunk_size], d.total_size); - const contentLength = to - from + 1; - const headers = { - "Content-Range": `bytes ${from}-${to}/${d.total_size}`, - "Range": `bytes=${from}-${to}/${d.total_size}`, + let contentLength = this.partial_size + 1; + if(contentLength+from > d.total_size) contentLength = d.total_size-from; + let headers = { + "Content-Range": `bytes ${from}-${from+contentLength}/${d.total_size+1}`, + "Range": `bytes=${from}-${from+contentLength}/${d.total_size+1}`, "Accept-Ranges": "bytes", "Content-Length": contentLength, "Content-Type": "application/octet-stream", @@ -78,11 +49,22 @@ export class Webserver { res.writeHead(206, headers); - let stream = await d.download_range(from, to); - res.write(stream); - console.log("downloaded", range); - res.end(); + const readable = new Readable() + readable._read = async () => { + [from, to] = this.from_to([to+1, to+1+this.chunk_size], d.total_size); + if(from == d.total_size) { + readable.push(null); + //res.end(); + } + else { + let stream = await this.download_chunk(from, to); + readable.push(stream); + } + } + let stream = await this.download_chunk(from, to); + readable.push(stream); + readable.pipe(res); }); @@ -92,6 +74,13 @@ export class Webserver { } + async download_chunk(from: number, to: number) { + console.log("downloading...", from, to); + let stream = await d.download_range(from, to); + console.log("downloaded ", from, to); + return stream; + } + parse_range(input: string): Range { let [from, to]: (number|null)[] = [null, null]; @@ -101,6 +90,12 @@ export class Webserver { } + from_to(range: [number, number], max: number) { + if(range[0] > max) range[0] = max; + if(range[1] > max) range[1] = max; + return range; + } + } interface Range {