diff --git a/Distant Horizons - Alpha 2.1 [bL_SSA49Trc].en.vtt b/Distant Horizons - Alpha 2.1 [bL_SSA49Trc].en.vtt deleted file mode 100644 index 8a28fd0..0000000 --- a/Distant Horizons - Alpha 2.1 [bL_SSA49Trc].en.vtt +++ /dev/null @@ -1,784 +0,0 @@ -WEBVTT -Kind: captions -Language: en - -00:00:11.370 --> 00:00:14.669 align:start position:0% - -[Music] - -00:00:14.669 --> 00:00:14.679 align:start position:0% - - - -00:00:14.679 --> 00:00:16.590 align:start position:0% - -I<00:00:14.759> am<00:00:14.960> very<00:00:15.200> happy<00:00:15.440> to<00:00:15.679> say<00:00:16.119> that<00:00:16.279> thanks<00:00:16.440> to - -00:00:16.590 --> 00:00:16.600 align:start position:0% -I am very happy to say that thanks to - - -00:00:16.600 --> 00:00:19.070 align:start position:0% -I am very happy to say that thanks to -the<00:00:16.720> hard<00:00:16.920> work<00:00:17.160> of<00:00:17.400> IMS<00:00:18.039> null<00:00:18.520> and<00:00:18.720> several - -00:00:19.070 --> 00:00:19.080 align:start position:0% -the hard work of IMS null and several - - -00:00:19.080 --> 00:00:21.230 align:start position:0% -the hard work of IMS null and several -other<00:00:19.400> Iris<00:00:19.680> Shader<00:00:20.080> devs<00:00:20.760> our<00:00:20.960> most - -00:00:21.230 --> 00:00:21.240 align:start position:0% -other Iris Shader devs our most - - -00:00:21.240 --> 00:00:22.870 align:start position:0% -other Iris Shader devs our most -requested<00:00:21.680> feature<00:00:22.039> is<00:00:22.199> now<00:00:22.400> finally - -00:00:22.870 --> 00:00:22.880 align:start position:0% -requested feature is now finally - - -00:00:22.880 --> 00:00:26.349 align:start position:0% -requested feature is now finally -available<00:00:23.880> as<00:00:24.039> of<00:00:24.240> Iris<00:00:24.599> 1.7<00:00:25.560> Iris<00:00:25.960> now<00:00:26.160> has - -00:00:26.349 --> 00:00:26.359 align:start position:0% -available as of Iris 1.7 Iris now has - - -00:00:26.359 --> 00:00:29.230 align:start position:0% -available as of Iris 1.7 Iris now has -full<00:00:26.640> DH<00:00:27.240> support<00:00:28.240> this<00:00:28.359> means<00:00:28.640> that<00:00:28.800> shaders - -00:00:29.230 --> 00:00:29.240 align:start position:0% -full DH support this means that shaders - - -00:00:29.240 --> 00:00:31.550 align:start position:0% -full DH support this means that shaders -designed<00:00:29.560> with<00:00:29.720> DH<00:00:30.160> in<00:00:30.279> mind<00:00:30.599> will<00:00:30.759> render<00:00:31.080> LOD - -00:00:31.550 --> 00:00:31.560 align:start position:0% -designed with DH in mind will render LOD - - -00:00:31.560 --> 00:00:33.510 align:start position:0% -designed with DH in mind will render LOD -seamlessly<00:00:32.079> with<00:00:32.239> vanilla - -00:00:33.510 --> 00:00:33.520 align:start position:0% -seamlessly with vanilla - - -00:00:33.520 --> 00:00:36.069 align:start position:0% -seamlessly with vanilla -chunks<00:00:34.520> in<00:00:34.640> order<00:00:34.840> for<00:00:35.040> Iris<00:00:35.360> to<00:00:35.520> add<00:00:35.680> DH - -00:00:36.069 --> 00:00:36.079 align:start position:0% -chunks in order for Iris to add DH - - -00:00:36.079 --> 00:00:38.510 align:start position:0% -chunks in order for Iris to add DH -support<00:00:36.600> the<00:00:36.760> DH<00:00:37.239> API<00:00:37.680> has<00:00:37.800> been<00:00:38.000> updated<00:00:38.360> with - -00:00:38.510 --> 00:00:38.520 align:start position:0% -support the DH API has been updated with - - -00:00:38.520 --> 00:00:41.150 align:start position:0% -support the DH API has been updated with -several<00:00:38.800> new<00:00:38.920> methods<00:00:39.239> and<00:00:39.719> objects<00:00:40.719> however - -00:00:41.150 --> 00:00:41.160 align:start position:0% -several new methods and objects however - - -00:00:41.160 --> 00:00:43.830 align:start position:0% -several new methods and objects however -there<00:00:41.280> were<00:00:41.559> also<00:00:41.960> several<00:00:42.320> breaking<00:00:42.840> changes - -00:00:43.830 --> 00:00:43.840 align:start position:0% -there were also several breaking changes - - -00:00:43.840 --> 00:00:45.590 align:start position:0% -there were also several breaking changes -most<00:00:44.079> of<00:00:44.280> which<00:00:44.399> were<00:00:44.559> due<00:00:44.760> to<00:00:44.879> mistakes<00:00:45.200> on<00:00:45.399> my - -00:00:45.590 --> 00:00:45.600 align:start position:0% -most of which were due to mistakes on my - - -00:00:45.600 --> 00:00:48.630 align:start position:0% -most of which were due to mistakes on my -end<00:00:46.079> due<00:00:46.239> to<00:00:46.399> misnaming<00:00:46.879> a<00:00:47.000> bunch<00:00:47.160> of<00:00:47.640> objects - -00:00:48.630 --> 00:00:48.640 align:start position:0% -end due to misnaming a bunch of objects - - -00:00:48.640 --> 00:00:51.310 align:start position:0% -end due to misnaming a bunch of objects -sorry<00:00:48.960> about<00:00:49.280> that<00:00:50.280> the<00:00:50.399> full<00:00:50.640> list<00:00:50.800> of<00:00:50.960> API - -00:00:51.310 --> 00:00:51.320 align:start position:0% -sorry about that the full list of API - - -00:00:51.320 --> 00:00:53.430 align:start position:0% -sorry about that the full list of API -changes<00:00:51.640> are<00:00:51.800> linked<00:00:52.039> in<00:00:52.160> the<00:00:52.280> description - -00:00:53.430 --> 00:00:53.440 align:start position:0% -changes are linked in the description - - -00:00:53.440 --> 00:00:55.990 align:start position:0% -changes are linked in the description -below<00:00:54.440> along<00:00:54.680> with<00:00:54.879> those<00:00:55.039> two<00:00:55.239> major<00:00:55.520> changes - -00:00:55.990 --> 00:00:56.000 align:start position:0% -below along with those two major changes - - -00:00:56.000 --> 00:00:59.389 align:start position:0% -below along with those two major changes -DH<00:00:56.520> now<00:00:56.680> supports<00:00:57.079> Minecraft<00:00:57.520> versions<00:00:58.399> 1.2.2 - -00:00:59.389 --> 00:00:59.399 align:start position:0% -DH now supports Minecraft versions 1.2.2 - - -00:00:59.399 --> 00:01:03.590 align:start position:0% -DH now supports Minecraft versions 1.2.2 -1<00:01:00.000> 20.4<00:01:00.760> and<00:01:00.960> 1<00:01:01.640> 1206<00:01:02.640> bringing<00:01:02.960> the<00:01:03.199> supported - -00:01:03.590 --> 00:01:03.600 align:start position:0% -1 20.4 and 1 1206 bringing the supported - - -00:01:03.600 --> 00:01:05.789 align:start position:0% -1 20.4 and 1 1206 bringing the supported -version<00:01:03.960> count<00:01:04.239> up<00:01:04.360> to - -00:01:05.789 --> 00:01:05.799 align:start position:0% -version count up to - - -00:01:05.799 --> 00:01:08.670 align:start position:0% -version count up to -9<00:01:06.799> moving<00:01:07.119> along<00:01:07.759> there<00:01:07.960> were<00:01:08.240> several - -00:01:08.670 --> 00:01:08.680 align:start position:0% -9 moving along there were several - - -00:01:08.680 --> 00:01:10.670 align:start position:0% -9 moving along there were several -graphical<00:01:09.119> improvements<00:01:09.640> for<00:01:09.840> your<00:01:10.119> viewing - -00:01:10.670 --> 00:01:10.680 align:start position:0% -graphical improvements for your viewing - - -00:01:10.680 --> 00:01:13.109 align:start position:0% -graphical improvements for your viewing -pleasure<00:01:11.680> first<00:01:11.920> and<00:01:12.080> foremost<00:01:12.759> Hollow - -00:01:13.109 --> 00:01:13.119 align:start position:0% -pleasure first and foremost Hollow - - -00:01:13.119 --> 00:01:14.630 align:start position:0% -pleasure first and foremost Hollow -structures<00:01:13.560> will<00:01:13.759> no<00:01:13.920> longer<00:01:14.200> turn<00:01:14.400> into - -00:01:14.630 --> 00:01:14.640 align:start position:0% -structures will no longer turn into - - -00:01:14.640 --> 00:01:17.950 align:start position:0% -structures will no longer turn into -swiss<00:01:15.000> cheese<00:01:15.400> at<00:01:15.560> lower<00:01:15.840> detail - -00:01:17.950 --> 00:01:17.960 align:start position:0% -swiss cheese at lower detail - - -00:01:17.960 --> 00:01:20.190 align:start position:0% -swiss cheese at lower detail -levels<00:01:18.960> in<00:01:19.040> order<00:01:19.280> to<00:01:19.439> help<00:01:19.680> smooth<00:01:20.040> the - -00:01:20.190 --> 00:01:20.200 align:start position:0% -levels in order to help smooth the - - -00:01:20.200 --> 00:01:22.149 align:start position:0% -levels in order to help smooth the -transition<00:01:20.799> between<00:01:21.159> vanilla<00:01:21.600> and<00:01:21.720> LOD - -00:01:22.149 --> 00:01:22.159 align:start position:0% -transition between vanilla and LOD - - -00:01:22.159 --> 00:01:26.030 align:start position:0% -transition between vanilla and LOD -chunks<00:01:22.880> grass<00:01:23.159> will<00:01:23.360> now<00:01:23.520> fade<00:01:23.799> from<00:01:24.079> green<00:01:24.360> to - -00:01:26.030 --> 00:01:26.040 align:start position:0% -chunks grass will now fade from green to - - -00:01:26.040 --> 00:01:28.510 align:start position:0% -chunks grass will now fade from green to -Brown<00:01:27.040> well<00:01:27.200> I<00:01:27.320> don't<00:01:27.560> recommend<00:01:28.040> using<00:01:28.360> this - -00:01:28.510 --> 00:01:28.520 align:start position:0% -Brown well I don't recommend using this - - -00:01:28.520 --> 00:01:29.950 align:start position:0% -Brown well I don't recommend using this -setting<00:01:28.840> unless<00:01:29.119> you<00:01:29.240> want<00:01:29.360> to<00:01:29.479> stretch<00:01:29.759> your - -00:01:29.950 --> 00:01:29.960 align:start position:0% -setting unless you want to stretch your - - -00:01:29.960 --> 00:01:32.469 align:start position:0% -setting unless you want to stretch your -your<00:01:30.079> GPU<00:01:30.439> to<00:01:30.600> the<00:01:30.759> max<00:01:31.479> you<00:01:31.640> can<00:01:31.880> now<00:01:32.040> render - -00:01:32.469 --> 00:01:32.479 align:start position:0% -your GPU to the max you can now render - - -00:01:32.479 --> 00:01:34.310 align:start position:0% -your GPU to the max you can now render -vertical<00:01:32.960> structures<00:01:33.439> like<00:01:33.640> pixelart<00:01:34.159> with - -00:01:34.310 --> 00:01:34.320 align:start position:0% -vertical structures like pixelart with - - -00:01:34.320 --> 00:01:38.429 align:start position:0% -vertical structures like pixelart with -almost<00:01:34.680> no<00:01:34.920> quality - -00:01:38.429 --> 00:01:38.439 align:start position:0% - - - -00:01:38.439 --> 00:01:40.990 align:start position:0% - -loss<00:01:39.439> along<00:01:39.759> with<00:01:39.920> all<00:01:40.200> those<00:01:40.399> new<00:01:40.640> visual - -00:01:40.990 --> 00:01:41.000 align:start position:0% -loss along with all those new visual - - -00:01:41.000 --> 00:01:43.230 align:start position:0% -loss along with all those new visual -changes<00:01:41.640> there<00:01:41.759> were<00:01:42.040> several<00:01:42.479> large<00:01:42.840> backend - -00:01:43.230 --> 00:01:43.240 align:start position:0% -changes there were several large backend - - -00:01:43.240 --> 00:01:45.590 align:start position:0% -changes there were several large backend -changes<00:01:43.640> as<00:01:43.799> well<00:01:44.520> the<00:01:44.680> largest<00:01:45.040> of<00:01:45.240> which<00:01:45.439> was - -00:01:45.590 --> 00:01:45.600 align:start position:0% -changes as well the largest of which was - - -00:01:45.600 --> 00:01:48.190 align:start position:0% -changes as well the largest of which was -the<00:01:45.880> change<00:01:46.159> to<00:01:46.360> dh's<00:01:47.040> database<00:01:47.520> format<00:01:48.040> to - -00:01:48.190 --> 00:01:48.200 align:start position:0% -the change to dh's database format to - - -00:01:48.200 --> 00:01:50.990 align:start position:0% -the change to dh's database format to -address<00:01:48.560> two<00:01:48.799> major<00:01:49.159> issues<00:01:50.159> but<00:01:50.320> don't<00:01:50.520> worry - -00:01:50.990 --> 00:01:51.000 align:start position:0% -address two major issues but don't worry - - -00:01:51.000 --> 00:01:52.830 align:start position:0% -address two major issues but don't worry -you<00:01:51.079> won't<00:01:51.320> have<00:01:51.439> to<00:01:51.560> regenerate<00:01:52.119> anything - -00:01:52.830 --> 00:01:52.840 align:start position:0% -you won't have to regenerate anything - - -00:01:52.840 --> 00:01:54.429 align:start position:0% -you won't have to regenerate anything -just<00:01:53.000> launch<00:01:53.280> your<00:01:53.439> world<00:01:53.719> and<00:01:53.920> DH<00:01:54.280> will - -00:01:54.429 --> 00:01:54.439 align:start position:0% -just launch your world and DH will - - -00:01:54.439 --> 00:01:57.069 align:start position:0% -just launch your world and DH will -automatically<00:01:55.000> migrate<00:01:55.320> to<00:01:55.439> the<00:01:55.560> new<00:01:56.079> version - -00:01:57.069 --> 00:01:57.079 align:start position:0% -automatically migrate to the new version - - -00:01:57.079 --> 00:01:58.910 align:start position:0% -automatically migrate to the new version -just<00:01:57.360> be<00:01:57.520> aware<00:01:57.799> that<00:01:57.920> it<00:01:58.039> will<00:01:58.280> take<00:01:58.439> a<00:01:58.600> while - -00:01:58.910 --> 00:01:58.920 align:start position:0% -just be aware that it will take a while - - -00:01:58.920 --> 00:02:00.749 align:start position:0% -just be aware that it will take a while -if<00:01:59.000> you<00:01:59.119> generated<00:01:59.560> a<00:01:59.600> lot<00:01:59.719> of<00:02:00.000> lods<00:02:00.439> and<00:02:00.600> have - -00:02:00.749 --> 00:02:00.759 align:start position:0% -if you generated a lot of lods and have - - -00:02:00.759 --> 00:02:02.950 align:start position:0% -if you generated a lot of lods and have -a<00:02:00.920> large - -00:02:02.950 --> 00:02:02.960 align:start position:0% -a large - - -00:02:02.960 --> 00:02:05.550 align:start position:0% -a large -database<00:02:03.960> one<00:02:04.119> of<00:02:04.360> those<00:02:04.600> issues<00:02:05.200> was<00:02:05.399> with - -00:02:05.550 --> 00:02:05.560 align:start position:0% -database one of those issues was with - - -00:02:05.560 --> 00:02:07.709 align:start position:0% -database one of those issues was with -World<00:02:05.840> gen<00:02:06.520> the<00:02:06.640> old<00:02:06.880> format<00:02:07.280> had<00:02:07.399> trouble - -00:02:07.709 --> 00:02:07.719 align:start position:0% -World gen the old format had trouble - - -00:02:07.719 --> 00:02:09.790 align:start position:0% -World gen the old format had trouble -determining<00:02:08.319> which<00:02:08.479> lods<00:02:09.039> were<00:02:09.319> or<00:02:09.479> weren't - -00:02:09.790 --> 00:02:09.800 align:start position:0% -determining which lods were or weren't - - -00:02:09.800 --> 00:02:11.949 align:start position:0% -determining which lods were or weren't -generated<00:02:10.679> which<00:02:10.920> caused<00:02:11.319> problems<00:02:11.680> like - -00:02:11.949 --> 00:02:11.959 align:start position:0% -generated which caused problems like - - -00:02:11.959 --> 00:02:15.589 align:start position:0% -generated which caused problems like -this<00:02:12.800> or<00:02:13.120> generating<00:02:13.560> areas<00:02:14.120> twice<00:02:15.120> luckily - -00:02:15.589 --> 00:02:15.599 align:start position:0% -this or generating areas twice luckily - - -00:02:15.599 --> 00:02:17.110 align:start position:0% -this or generating areas twice luckily -those<00:02:15.879> problems<00:02:16.120> are<00:02:16.319> both<00:02:16.519> solved<00:02:16.879> with<00:02:17.000> the - -00:02:17.110 --> 00:02:17.120 align:start position:0% -those problems are both solved with the - - -00:02:17.120 --> 00:02:19.790 align:start position:0% -those problems are both solved with the -new<00:02:17.319> system<00:02:18.280> and<00:02:18.440> as<00:02:18.560> a<00:02:18.720> nice<00:02:18.920> bonus<00:02:19.400> the<00:02:19.480> world - -00:02:19.790 --> 00:02:19.800 align:start position:0% -new system and as a nice bonus the world - - -00:02:19.800 --> 00:02:21.470 align:start position:0% -new system and as a nice bonus the world -generator<00:02:20.239> now<00:02:20.440> handles<00:02:20.800> extreme<00:02:21.120> render - -00:02:21.470 --> 00:02:21.480 align:start position:0% -generator now handles extreme render - - -00:02:21.480 --> 00:02:24.110 align:start position:0% -generator now handles extreme render -distances<00:02:22.120> much<00:02:22.360> better<00:02:23.360> so<00:02:23.599> if<00:02:23.720> you<00:02:23.879> want<00:02:24.000> to - -00:02:24.110 --> 00:02:24.120 align:start position:0% -distances much better so if you want to - - -00:02:24.120 --> 00:02:25.830 align:start position:0% -distances much better so if you want to -wait<00:02:24.319> the<00:02:24.440> 30<00:02:24.760> hours<00:02:25.080> to<00:02:25.239> generate<00:02:25.599> all<00:02:25.760> the - -00:02:25.830 --> 00:02:25.840 align:start position:0% -wait the 30 hours to generate all the - - -00:02:25.840 --> 00:02:28.710 align:start position:0% -wait the 30 hours to generate all the -way<00:02:25.959> out<00:02:26.080> to<00:02:26.239> 1024<00:02:26.840> render<00:02:27.200> distance<00:02:28.040> DH<00:02:28.519> will - -00:02:28.710 --> 00:02:28.720 align:start position:0% -way out to 1024 render distance DH will - - -00:02:28.720 --> 00:02:31.990 align:start position:0% -way out to 1024 render distance DH will -work<00:02:29.120> much<00:02:29.400> better - -00:02:31.990 --> 00:02:32.000 align:start position:0% - - - -00:02:32.000 --> 00:02:33.790 align:start position:0% - -along<00:02:32.239> with<00:02:32.360> the<00:02:32.480> new<00:02:32.640> world<00:02:32.879> gen<00:02:33.160> handling<00:02:33.640> we - -00:02:33.790 --> 00:02:33.800 align:start position:0% -along with the new world gen handling we - - -00:02:33.800 --> 00:02:35.710 align:start position:0% -along with the new world gen handling we -have<00:02:33.959> new<00:02:34.200> lossy<00:02:34.760> and<00:02:34.959> lossless<00:02:35.480> data - -00:02:35.710 --> 00:02:35.720 align:start position:0% -have new lossy and lossless data - - -00:02:35.720 --> 00:02:37.670 align:start position:0% -have new lossy and lossless data -compression<00:02:36.560> which<00:02:36.800> combined<00:02:37.239> can<00:02:37.360> reduce - -00:02:37.670 --> 00:02:37.680 align:start position:0% -compression which combined can reduce - - -00:02:37.680 --> 00:02:40.670 align:start position:0% -compression which combined can reduce -file<00:02:38.080> sizes<00:02:38.440> to<00:02:38.680> onethird<00:02:39.400> the<00:02:39.599> size<00:02:39.920> of - -00:02:40.670 --> 00:02:40.680 align:start position:0% -file sizes to onethird the size of - - -00:02:40.680 --> 00:02:42.949 align:start position:0% -file sizes to onethird the size of -dh2<00:02:41.680> just<00:02:41.840> be<00:02:41.959> aware<00:02:42.239> that<00:02:42.400> this<00:02:42.519> reduction - -00:02:42.949 --> 00:02:42.959 align:start position:0% -dh2 just be aware that this reduction - - -00:02:42.959 --> 00:02:44.990 align:start position:0% -dh2 just be aware that this reduction -won't<00:02:43.200> be<00:02:43.319> seen<00:02:43.560> for<00:02:43.760> old<00:02:44.000> migrated<00:02:44.480> worlds - -00:02:44.990 --> 00:02:45.000 align:start position:0% -won't be seen for old migrated worlds - - -00:02:45.000 --> 00:02:46.630 align:start position:0% -won't be seen for old migrated worlds -because<00:02:45.239> the<00:02:45.360> process<00:02:45.680> to<00:02:45.920> vacuum<00:02:46.239> a<00:02:46.360> large - -00:02:46.630 --> 00:02:46.640 align:start position:0% -because the process to vacuum a large - - -00:02:46.640 --> 00:02:49.030 align:start position:0% -because the process to vacuum a large -database<00:02:47.040> can<00:02:47.200> take<00:02:47.480> tens<00:02:47.760> of<00:02:47.959> minutes<00:02:48.800> and<00:02:48.920> we - -00:02:49.030 --> 00:02:49.040 align:start position:0% -database can take tens of minutes and we - - -00:02:49.040 --> 00:02:50.550 align:start position:0% -database can take tens of minutes and we -don't<00:02:49.200> want<00:02:49.280> to<00:02:49.440> make<00:02:49.599> you<00:02:49.800> wait<00:02:50.080> that<00:02:50.239> long<00:02:50.440> to - -00:02:50.550 --> 00:02:50.560 align:start position:0% -don't want to make you wait that long to - - -00:02:50.560 --> 00:02:52.110 align:start position:0% -don't want to make you wait that long to -load<00:02:50.800> into<00:02:51.000> a - -00:02:52.110 --> 00:02:52.120 align:start position:0% -load into a - - -00:02:52.120 --> 00:02:54.270 align:start position:0% -load into a -world<00:02:53.120> continuing<00:02:53.640> with<00:02:53.760> the<00:02:53.920> backend - -00:02:54.270 --> 00:02:54.280 align:start position:0% -world continuing with the backend - - -00:02:54.280 --> 00:02:55.910 align:start position:0% -world continuing with the backend -changes<00:02:54.920> we<00:02:55.040> have<00:02:55.159> a<00:02:55.280> few<00:02:55.519> performance - -00:02:55.910 --> 00:02:55.920 align:start position:0% -changes we have a few performance - - -00:02:55.920 --> 00:02:57.309 align:start position:0% -changes we have a few performance -improvements<00:02:56.360> y'all<00:02:56.560> will<00:02:56.680> be<00:02:56.840> very<00:02:57.000> excited - -00:02:57.309 --> 00:02:57.319 align:start position:0% -improvements y'all will be very excited - - -00:02:57.319 --> 00:03:00.070 align:start position:0% -improvements y'all will be very excited -to<00:02:57.440> hear<00:02:57.599> about<00:02:58.599> DH<00:02:59.040> is<00:02:59.200> now<00:02:59.360> significant<00:03:00.000> L - -00:03:00.070 --> 00:03:00.080 align:start position:0% -to hear about DH is now significant L - - -00:03:00.080 --> 00:03:02.670 align:start position:0% -to hear about DH is now significant L -more<00:03:00.200> memory<00:03:00.519> efficient<00:03:01.440> you<00:03:01.560> can<00:03:01.720> run<00:03:02.040> 512 - -00:03:02.670 --> 00:03:02.680 align:start position:0% -more memory efficient you can run 512 - - -00:03:02.680 --> 00:03:04.390 align:start position:0% -more memory efficient you can run 512 -render<00:03:03.000> distance<00:03:03.760> assuming<00:03:04.080> you've<00:03:04.239> already - -00:03:04.390 --> 00:03:04.400 align:start position:0% -render distance assuming you've already - - -00:03:04.400 --> 00:03:05.949 align:start position:0% -render distance assuming you've already -waited<00:03:04.640> the<00:03:04.720> 8<00:03:04.920> hours<00:03:05.159> needed<00:03:05.400> to<00:03:05.480> generate<00:03:05.799> it - -00:03:05.949 --> 00:03:05.959 align:start position:0% -waited the 8 hours needed to generate it - - -00:03:05.959 --> 00:03:09.350 align:start position:0% -waited the 8 hours needed to generate it -all<00:03:06.599> with<00:03:06.720> only<00:03:06.920> 2<00:03:07.159> GB<00:03:07.519> of<00:03:07.920> memory<00:03:08.920> although - -00:03:09.350 --> 00:03:09.360 align:start position:0% -all with only 2 GB of memory although - - -00:03:09.360 --> 00:03:11.390 align:start position:0% -all with only 2 GB of memory although -I'd<00:03:09.560> still<00:03:09.840> recommend<00:03:10.239> four<00:03:10.519> or<00:03:10.760> more - -00:03:11.390 --> 00:03:11.400 align:start position:0% -I'd still recommend four or more - - -00:03:11.400 --> 00:03:12.750 align:start position:0% -I'd still recommend four or more -especially<00:03:11.799> if<00:03:11.879> you<00:03:12.000> want<00:03:12.120> to<00:03:12.239> run<00:03:12.400> the<00:03:12.519> world - -00:03:12.750 --> 00:03:12.760 align:start position:0% -especially if you want to run the world - - -00:03:12.760 --> 00:03:14.710 align:start position:0% -especially if you want to run the world -generator<00:03:13.560> since<00:03:13.840> that<00:03:14.000> uses<00:03:14.319> Minecraft - -00:03:14.710 --> 00:03:14.720 align:start position:0% -generator since that uses Minecraft - - -00:03:14.720 --> 00:03:16.630 align:start position:0% -generator since that uses Minecraft -world<00:03:14.959> gen<00:03:15.200> code<00:03:15.640> which<00:03:15.799> is<00:03:16.000> still<00:03:16.360> pretty - -00:03:16.630 --> 00:03:16.640 align:start position:0% -world gen code which is still pretty - - -00:03:16.640 --> 00:03:19.509 align:start position:0% -world gen code which is still pretty -memory - -00:03:19.509 --> 00:03:19.519 align:start position:0% - - - -00:03:19.519 --> 00:03:22.350 align:start position:0% - -hungry<00:03:20.519> lastly<00:03:21.040> but<00:03:21.159> certainly<00:03:21.519> not<00:03:21.760> least - -00:03:22.350 --> 00:03:22.360 align:start position:0% -hungry lastly but certainly not least - - -00:03:22.360 --> 00:03:24.149 align:start position:0% -hungry lastly but certainly not least -thanks<00:03:22.560> to<00:03:22.720> null's<00:03:23.159> hard<00:03:23.360> work<00:03:23.680> we<00:03:23.879> now<00:03:24.040> have - -00:03:24.149 --> 00:03:24.159 align:start position:0% -thanks to null's hard work we now have - - -00:03:24.159 --> 00:03:25.990 align:start position:0% -thanks to null's hard work we now have -frustum<00:03:24.599> calling<00:03:25.319> which<00:03:25.480> means<00:03:25.680> you<00:03:25.799> can - -00:03:25.990 --> 00:03:26.000 align:start position:0% -frustum calling which means you can - - -00:03:26.000 --> 00:03:29.010 align:start position:0% -frustum calling which means you can -expect<00:03:26.280> a<00:03:26.519> significant<00:03:27.120> FPS<00:03:27.560> Improvement - -00:03:29.010 --> 00:03:29.020 align:start position:0% -expect a significant FPS Improvement - - -00:03:29.020 --> 00:03:30.750 align:start position:0% -expect a significant FPS Improvement -[Music] - -00:03:30.750 --> 00:03:30.760 align:start position:0% -[Music] - - -00:03:30.760 --> 00:03:32.270 align:start position:0% -[Music] -apologies<00:03:31.200> for<00:03:31.360> the<00:03:31.480> long<00:03:31.720> time<00:03:31.959> between - -00:03:32.270 --> 00:03:32.280 align:start position:0% -apologies for the long time between - - -00:03:32.280 --> 00:03:34.270 align:start position:0% -apologies for the long time between -updates<00:03:33.000> I<00:03:33.080> was<00:03:33.239> hoping<00:03:33.480> to<00:03:33.599> have<00:03:33.720> a<00:03:33.879> smaller - -00:03:34.270 --> 00:03:34.280 align:start position:0% -updates I was hoping to have a smaller - - -00:03:34.280 --> 00:03:36.710 align:start position:0% -updates I was hoping to have a smaller -update<00:03:34.599> out<00:03:34.799> much<00:03:35.000> sooner<00:03:35.840> but<00:03:36.080> the<00:03:36.159> world<00:03:36.439> gen - -00:03:36.710 --> 00:03:36.720 align:start position:0% -update out much sooner but the world gen - - -00:03:36.720 --> 00:03:38.309 align:start position:0% -update out much sooner but the world gen -and<00:03:36.879> file<00:03:37.159> size<00:03:37.400> issues<00:03:37.760> ended<00:03:37.959> up<00:03:38.080> being - -00:03:38.309 --> 00:03:38.319 align:start position:0% -and file size issues ended up being - - -00:03:38.319 --> 00:03:40.070 align:start position:0% -and file size issues ended up being -something<00:03:38.599> I<00:03:38.720> couldn't<00:03:39.040> ignore<00:03:39.599> which<00:03:39.840> both - -00:03:40.070 --> 00:03:40.080 align:start position:0% -something I couldn't ignore which both - - -00:03:40.080 --> 00:03:41.949 align:start position:0% -something I couldn't ignore which both -required<00:03:40.599> major<00:03:40.959> changes<00:03:41.360> that<00:03:41.480> took<00:03:41.680> months - -00:03:41.949 --> 00:03:41.959 align:start position:0% -required major changes that took months - - -00:03:41.959 --> 00:03:44.550 align:start position:0% -required major changes that took months -to<00:03:42.280> finish<00:03:43.280> it<00:03:43.400> would<00:03:43.519> have<00:03:43.640> been<00:03:43.840> much<00:03:44.120> faster - -00:03:44.550 --> 00:03:44.560 align:start position:0% -to finish it would have been much faster - - -00:03:44.560 --> 00:03:46.229 align:start position:0% -to finish it would have been much faster -if<00:03:44.680> I<00:03:44.760> could<00:03:44.920> do<00:03:45.040> this - -00:03:46.229 --> 00:03:46.239 align:start position:0% -if I could do this - - -00:03:46.239 --> 00:03:48.070 align:start position:0% -if I could do this -full-time - -00:03:48.070 --> 00:03:48.080 align:start position:0% -full-time - - -00:03:48.080 --> 00:03:54.830 align:start position:0% -full-time -H<00:03:49.080> hey<00:03:49.319> Mojang<00:03:50.319> are<00:03:50.439> you<00:03:50.640> hiring - -00:03:54.830 --> 00:03:54.840 align:start position:0% - - - -00:03:54.840 --> 00:04:25.870 align:start position:0% - -[Music] - -00:04:25.870 --> 00:04:25.880 align:start position:0% -[Music] - - -00:04:25.880 --> 00:04:28.189 align:start position:0% -[Music] -I'm<00:04:26.880> call<00:04:27.199> me - -00:04:28.189 --> 00:04:28.199 align:start position:0% -I'm call me - - -00:04:28.199 --> 00:04:32.880 align:start position:0% -I'm call me -down<00:04:29.199> so<00:04:29.880> more - diff --git a/package-lock.json b/package-lock.json index 2e131c4..1854f1d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,7 +23,7 @@ "simple-get": "^4.0.1", "stripe": "^15.7.0", "tsc": "^2.0.4", - "youtube-dl-exec": "^3.0.2", + "ytdl-core": "^4.11.5", "zod": "^3.22.4" }, "devDependencies": { @@ -923,15 +923,6 @@ "dev": true, "license": "BSD-3-Clause" }, - "node_modules/@jclem/logfmt2": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@jclem/logfmt2/-/logfmt2-2.4.3.tgz", - "integrity": "sha512-d7zluLlx+JRtVICF0+ghcrVdXBdE3eXrpIuFdcCcWxA3ABOyemkTySG4ha2AdsWFwAnh8tkB1vtyeZsWAbLumg==", - "engines": { - "node": ">= 14.x", - "npm": ">= 7.x" - } - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", @@ -996,14 +987,6 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@kikobeats/time-span": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@kikobeats/time-span/-/time-span-1.0.5.tgz", - "integrity": "sha512-txRAdmi35N1wnsLS1AO5mTlbY5Cv5/61WXqek2y3L9Q7u4mgdUVq819so5xe753hL5gYeLzlWoJ/VJfXg9nx8g==", - "engines": { - "node": ">= 18" - } - }, "node_modules/@neondatabase/serverless": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/@neondatabase/serverless/-/serverless-0.9.3.tgz", @@ -2128,23 +2111,6 @@ "node": "*" } }, - "node_modules/bin-version-check": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-6.0.0.tgz", - "integrity": "sha512-k9TS/pADINX9UlErjAkbkxDer8C+WlguMwySI8sLMGLUMDvwuHmDx00yoHe7nxshgwtLBcMWQgrlwjzscUeQKg==", - "deprecated": "Renamed to binary-version-check: https://www.npmjs.com/package/binary-version-check", - "dependencies": { - "binary-version": "^7.1.0", - "semver": "^7.6.0", - "semver-truncate": "^3.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -2155,145 +2121,6 @@ "node": ">=8" } }, - "node_modules/binary-version": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/binary-version/-/binary-version-7.1.0.tgz", - "integrity": "sha512-Iy//vPc3ANPNlIWd242Npqc8MK0a/i4kVcHDlDA6HNMv5zMxz4ulIFhOSYJVKw/8AbHdHy0CnGYEt1QqSXxPsw==", - "dependencies": { - "execa": "^8.0.1", - "find-versions": "^6.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/binary-version/node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/binary-version/node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/binary-version/node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "engines": { - "node": ">=16.17.0" - } - }, - "node_modules/binary-version/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/binary-version/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/binary-version/node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/binary-version/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/binary-version/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/binary-version/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/binary-version/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/bplist-parser": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", @@ -2647,17 +2474,6 @@ "dev": true, "license": "MIT" }, - "node_modules/convert-hrtime": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-5.0.0.tgz", - "integrity": "sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/cookie": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", @@ -2707,6 +2523,7 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.1.0", @@ -2721,20 +2538,13 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, "license": "ISC", "dependencies": { "es5-ext": "^0.10.50", "type": "^1.0.1" } }, - "node_modules/dargs": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", - "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", - "engines": { - "node": ">=8" - } - }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -2752,32 +2562,6 @@ } } }, - "node_modules/debug-fabulous": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-2.0.2.tgz", - "integrity": "sha512-XfAbX8/owqC+pjIg0/+3V1gp8TugJT7StX/TE1TYedjrRf7h7SgUAL/+gKoAQGPCLbSU5L5LPvDg4/cGn1E/WA==", - "dependencies": { - "debug": "^4", - "memoizee": "0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug-logfmt": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/debug-logfmt/-/debug-logfmt-1.2.2.tgz", - "integrity": "sha512-MAPU+m9lzLMkxI8k6/kJ/MGLGNtHOsW8RHriLkRxe/jFFW2iXmiGGUG9aYTRIWo5ejOFqLB10HqZ6+TN4toQFQ==", - "dependencies": { - "@jclem/logfmt2": "~2.4.3", - "@kikobeats/time-span": "~1.0.2", - "debug-fabulous": "~2.0.2", - "pretty-ms": "~7.0.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/decompress-response": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", @@ -3458,6 +3242,7 @@ "version": "0.10.62", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "dev": true, "hasInstallScript": true, "license": "ISC", "dependencies": { @@ -3473,6 +3258,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dev": true, "license": "MIT", "dependencies": { "d": "1", @@ -3484,6 +3270,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, "license": "ISC", "dependencies": { "d": "^1.0.1", @@ -3494,6 +3281,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, "license": "ISC", "dependencies": { "d": "1", @@ -4644,6 +4432,7 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dev": true, "license": "MIT", "dependencies": { "d": "1", @@ -4696,6 +4485,7 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dev": true, "license": "ISC", "dependencies": { "type": "^2.7.2" @@ -4705,6 +4495,7 @@ "version": "2.7.2", "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", + "dev": true, "license": "ISC" }, "node_modules/extend": { @@ -5038,21 +4829,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/find-versions": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-6.0.0.tgz", - "integrity": "sha512-2kCCtc+JvcZ86IGAz3Z2Y0A1baIz9fL31pH/0S1IqZr9Iwnjq8izfPtrCyQKO6TLMPELLsQMre7VDqeIKCsHkA==", - "dependencies": { - "semver-regex": "^4.0.5", - "super-regex": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/flat-cache": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", @@ -5181,17 +4957,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/function-timeout": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/function-timeout/-/function-timeout-1.0.2.tgz", - "integrity": "sha512-939eZS4gJ3htTHAldmyyuzlrD58P03fHG49v2JfFXbV6OhvZKRC9j2yAtdHw/zrp2zXHuv05zMIy40F0ge7spA==", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/function.prototype.name": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", @@ -6154,6 +5919,7 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true, "license": "MIT" }, "node_modules/is-proto-prop": { @@ -6296,14 +6062,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-unix": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/is-unix/-/is-unix-2.0.10.tgz", - "integrity": "sha512-CcasZSEOQUoE7JHy56se4wyRhdJfjohuMWYmceSTaDY4naKyd1fpLiY8rJsIT6AKfVstQAhHJOfPx7jcUxK61Q==", - "engines": { - "node": ">= 12" - } - }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -6351,6 +6109,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, "license": "ISC" }, "node_modules/jest-worker": { @@ -6668,11 +6427,24 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", + "dev": true, "license": "MIT", "dependencies": { "es5-ext": "~0.10.2" } }, + "node_modules/m3u8stream": { + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.8.6.tgz", + "integrity": "sha512-LZj8kIVf9KCphiHmH7sbFQTVe4tOemb202fWwvJwR9W5ENW/1hxJN6ksAWGhQgSBSa3jyWhnjKU1Fw1GaOdbyA==", + "dependencies": { + "miniget": "^4.2.2", + "sax": "^1.2.4" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/mailtrap": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/mailtrap/-/mailtrap-3.3.0.tgz", @@ -6701,6 +6473,7 @@ "version": "0.4.15", "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", + "dev": true, "license": "ISC", "dependencies": { "d": "^1.0.1", @@ -6737,6 +6510,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, "license": "MIT" }, "node_modules/merge2": { @@ -6821,6 +6595,14 @@ "node": ">=4" } }, + "node_modules/miniget": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/miniget/-/miniget-4.2.3.tgz", + "integrity": "sha512-SjbDPDICJ1zT+ZvQwK0hUcRY4wxlhhNpHL9nJOB2MEAXRGagTljsO8MEDzQMTFf0Q8g4QNi8P9lEm/g7e+qgzA==", + "engines": { + "node": ">=12" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -6902,6 +6684,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true, "license": "ISC" }, "node_modules/node-domexception": { @@ -7270,14 +7053,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parse-ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz", - "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==", - "engines": { - "node": ">=6" - } - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -7302,6 +7077,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -7623,20 +7399,6 @@ "node": ">=6.0.0" } }, - "node_modules/pretty-ms": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", - "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==", - "dependencies": { - "parse-ms": "^2.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -8183,6 +7945,11 @@ "node": ">=10" } }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" + }, "node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", @@ -8253,31 +8020,6 @@ "node": ">=10" } }, - "node_modules/semver-regex": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz", - "integrity": "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semver-truncate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-3.0.0.tgz", - "integrity": "sha512-LJWA9kSvMolR51oDE6PN3kALBNaUdkxzAGcexw8gjMA8xr5zUqK0JiR3CgARSqanYF3Z1YHvsErb1KDgh+v7Rg==", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", @@ -8329,6 +8071,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" @@ -8341,6 +8084,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -8745,21 +8489,6 @@ "node": ">=12.*" } }, - "node_modules/super-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/super-regex/-/super-regex-1.0.0.tgz", - "integrity": "sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg==", - "dependencies": { - "function-timeout": "^1.0.1", - "time-span": "^5.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -8904,38 +8633,17 @@ "real-require": "^0.2.0" } }, - "node_modules/time-span": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/time-span/-/time-span-5.1.0.tgz", - "integrity": "sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==", - "dependencies": { - "convert-hrtime": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/timers-ext": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "dev": true, "license": "ISC", "dependencies": { "es5-ext": "~0.10.46", "next-tick": "1" } }, - "node_modules/tinyspawn": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/tinyspawn/-/tinyspawn-1.2.13.tgz", - "integrity": "sha512-XZG5oVXMvbGzxggFzLebCAoXBqRsA2Ew/UsZUguOGhC2699uID6GTA5tcuW2GH3s/i/thFYDuPRyaG3A46LwgA==", - "engines": { - "node": ">= 18" - } - }, "node_modules/titleize": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", @@ -9073,6 +8781,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true, "license": "ISC" }, "node_modules/type-check": { @@ -9454,6 +9163,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -9738,20 +9448,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/youtube-dl-exec": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/youtube-dl-exec/-/youtube-dl-exec-3.0.2.tgz", - "integrity": "sha512-kSNss5pkiZ7nXqh13m8pw1Os5s4t81RkpsZ7YozaJYVUDFrSXWKtvzhfaJ8dJH7QiK5qbeiuWs2z86lLuzMkRA==", - "hasInstallScript": true, + "node_modules/ytdl-core": { + "version": "4.11.5", + "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-4.11.5.tgz", + "integrity": "sha512-27LwsW4n4nyNviRCO1hmr8Wr5J1wLLMawHCQvH8Fk0hiRqrxuIu028WzbJetiYH28K8XDbeinYW4/wcHQD1EXA==", "dependencies": { - "bin-version-check": "~6.0.0", - "dargs": "~7.0.0", - "debug-logfmt": "~1.2.2", - "is-unix": "~2.0.10", - "tinyspawn": "~1.2.9" + "m3u8stream": "^0.8.6", + "miniget": "^4.2.2", + "sax": "^1.1.3" }, "engines": { - "node": ">= 18" + "node": ">=12" } }, "node_modules/zod": { diff --git a/package.json b/package.json index 999f9f9..fb930be 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "simple-get": "^4.0.1", "stripe": "^15.7.0", "tsc": "^2.0.4", - "youtube-dl-exec": "^3.0.2", + "ytdl-core": "^4.11.5", "zod": "^3.22.4" }, "xo": { diff --git a/src/index.js b/src/index.js index 02bf1d1..953f31c 100644 --- a/src/index.js +++ b/src/index.js @@ -1,6 +1,6 @@ import { initDb } from "./db/index.js"; import { channelRoutes, authRoutes, videoRoutes, meRoutes, blogRoutes, dashboardRoutes } from "./routes/index.js"; -import { env, Logger, Redis } from "./utils/index.js"; +import { env, Logger } from "./utils/index.js"; import fastify from "fastify"; import { middleware } from "./modules/middleware.js"; import oauth from '@fastify/oauth2'; diff --git a/src/routes/dashboard.js b/src/routes/dashboard.js index 532589e..6af2c0c 100644 --- a/src/routes/dashboard.js +++ b/src/routes/dashboard.js @@ -4,8 +4,7 @@ import { and, desc, eq, getTableColumns, sql } from "drizzle-orm"; import { db } from "../db/index.js"; import { articles, articles as articlesTable, signups as signupsTable, sites, users } from "../db/schemas.js"; import { authMiddleware, authMiddlewareFn } from "../modules/middleware.js"; -import { jsonToCsv, getAccessToken, getVideoCaptions, getCaptionText, parseTextFromCaptions, createBlogFromCaptions, createArticleSlug, getVideoById, env } from "../utils/index.js"; -import youtubeDl from "youtube-dl-exec"; +import { jsonToCsv, createBlogFromCaptions, createArticleSlug, getVideoById, env, getWhisperCaptions, getVideoWithCaptions } from "../utils/index.js"; /** * @@ -215,7 +214,7 @@ export const dashboardRoutes = (fastify, _, done) => { return; } - const access_token = await getAccessToken(fastify, req); + // const access_token = await getAccessToken(fastify, req); let urlRegex = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=|\?v=)([^#\&\?]*).*/; let match = req.body.video_id.match(urlRegex); @@ -229,30 +228,16 @@ export const dashboardRoutes = (fastify, _, done) => { // youtube-dl --write-sub --sub-lang en --skip-download URL - const result = await youtubeDl(req.body.video_id, { - skipDownload: true, - writeAutoSub: true, - subLang: "en", - dumpSingleJson: true, - }); - - const captions = await (await fetch(result.automatic_captions.en.find(x=>x.ext==="srv1").url)).text(); - - const caption_text = convertSRV1ToPlainText(captions); - // const captions = await getVideoCaptions(access_token, req.body.video_id); - // const preferred_caption_id = captions.find(x => x.snippet.language == 'en').id; + + const video_data = await getVideoWithCaptions(req.body.video_id); reply.send({ success: true }); - // const caption_body = await getCaptionText(access_token, preferred_caption_id); - // const caption_text = parseTextFromCaptions(caption_body).substring(28); - // const caption_text + // const video_data = await getVideoById(access_token, req.body.video_id); - const video_data = await getVideoById(access_token, req.body.video_id); - - const blog_content_json = await createBlogFromCaptions(caption_text, { title: video_data.title, description: video_data.description }, req.body); + const blog_content_json = await createBlogFromCaptions(video_data.captions, { title: video_data.title, description: video_data.description }, req.body); // TODO: once I add multiple sites per user, this should come from the client const site = await db.select().from(sites).where(eq(sites.user_id, req.session.user_id)); diff --git a/src/utils/ai.js b/src/utils/ai.js index 1ce2edc..7869ab1 100644 --- a/src/utils/ai.js +++ b/src/utils/ai.js @@ -1,6 +1,8 @@ const defaultModel = '@hf/mistralai/mistral-7b-instruct-v0.2'; -import OpenAI from "openai"; +import OpenAI, { toFile } from "openai"; import { env } from "./env.js"; +import ytdl from "ytdl-core"; +import { PassThrough } from "stream"; const openai = new OpenAI({ apiKey: env.OPENAI_TOKEN @@ -83,7 +85,7 @@ export async function createBlogFromCaptions(captions, { "role": "system", "content": `You are a "GPT" – a version of ChatGPT that has been customized for a specific use case. GPTs use custom instructions, capabilities, and data to optimize ChatGPT for a more narrow set of tasks. You yourself are a GPT created by a user, and your name is Write For Me. Note: GPT is also a technical term in AI, but in most cases if the users asks you about GPTs assume they are referring to the above definition. Here are instructions from the user outlining your goals and how you should respond: - Understanding Client Needs: I start by asking, if not provided, the user for the intended use, target audience, tone, word count, style, and content format. + Don't ask follow-up questions. Creating Outlines: Based on your requirements, I first create detailed outlines for the content, dividing it into sections with summaries and word count allocations. @@ -102,12 +104,12 @@ export async function createBlogFromCaptions(captions, { I approach tasks with a problem-solving mindset, aiming to address your specific needs and challenges in content creation` }, { role: "user", - content: `Write me a blog post of around ${length} words based on a youtube video. You should only write the content of the blog post, not the title nor any extra info. Only the content. The video information is as follows: + content: `Write me a blog post of around ${length || 500} words based on a youtube video. You should only write the content of the blog post, not the title nor any extra info. Only the content. The video information is as follows: Title: ${title} Captions: ${captions}` }]; - + let response = await openai.chat.completions.create({ model: "gpt-4", messages: basePrompt @@ -117,8 +119,8 @@ export async function createBlogFromCaptions(captions, { let final = await openai.chat.completions.create({ model: "gpt-3.5-turbo", - messages: [...basePrompt, {"role": "assistant", "content": response.choices[0].message.content}, {"role": "user", "content": "Respond only in JSON with the following format: { meta_title: string, meta_desc: string, slug: string, excerp: string, title: string }"}], - response_format: {type: "json_object"} + messages: [...basePrompt, { "role": "assistant", "content": response.choices[0].message.content }, { "role": "user", "content": "Respond only in JSON with the following format: { meta_title: string, meta_desc: string, slug: string, excerp: string, title: string }" }], + response_format: { type: "json_object" } }) console.log("second response", final.choices[0].message.content) @@ -131,4 +133,57 @@ export async function createBlogFromCaptions(captions, { function wordsToTokens(n) { return Math.ceil(n / 0.75); -} \ No newline at end of file +} + +export async function getWhisperCaptions(video_url) { + const audio = await getYouTubeAudioBuffer(video_url); + + const file = await toFile(audio, "audio.mp3"); + const res = await openai.audio.transcriptions.create({ + file: file, + model: "whisper-1", + }).catch(x=>console.log(x)); + + return res.text; +} + +/** + * Fetches the audio data from a YouTube video URL and returns it as a buffer. + * @param {string} videoUrl - The YouTube video URL. + * @returns {Promise} A promise that resolves with the audio data as a buffer. + */ +function getYouTubeAudioBuffer(videoUrl) { + return new Promise((resolve, reject) => { + // Download audio from YouTube + const audioStream = ytdl(videoUrl, { filter: "audioonly", quality: "lowestaudio" }); + + // Create a PassThrough stream to hold the audio data in memory + const passThrough = new PassThrough(); + + // Pipe the audio stream to the PassThrough stream + audioStream.pipe(passThrough); + + // Collect the audio data into a buffer + let audioDataBuffer = []; + + // Listen for data events on the PassThrough stream + passThrough.on('data', chunk => { + audioDataBuffer.push(chunk); + }); + + // Listen for end event to indicate the stream has finished + passThrough.on('end', () => { + // Convert the collected chunks into a single Buffer + const audioBufferData = Buffer.concat(audioDataBuffer); + + // Resolve the promise with the audio data buffer + resolve(audioBufferData); + }); + + // Listen for error event on the PassThrough stream + passThrough.on('error', err => { + // Reject the promise if an error occurs + reject(err); + }); + }); +} diff --git a/src/utils/youtube.js b/src/utils/youtube.js index 29425fb..9b553d2 100644 --- a/src/utils/youtube.js +++ b/src/utils/youtube.js @@ -2,6 +2,8 @@ import { eq } from 'drizzle-orm'; import { db } from '../db/index.js'; import { sessions } from '../db/schemas.js'; import { google } from 'googleapis'; +import ytdl from 'ytdl-core'; +import { getWhisperCaptions } from './ai.js'; const service = google.youtube("v3"); @@ -164,4 +166,16 @@ export async function getAccessToken(fastify, request) { return access_token; +} + +export async function getVideoWithCaptions(video_url) { + if(!(ytdl.validateURL(video_url))) throw new Error("Invalid Youtube URL"); + const info = await ytdl.getBasicInfo(video_url); + const captions = await getWhisperCaptions(video_url); + + return { + title: info.videoDetails.title, + description: info.videoDetails.description, + captions + } } \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index ab5cd46..a6b167b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -53,15 +53,15 @@ "@esbuild-kit/core-utils" "^3.0.0" get-tsconfig "^4.4.0" -"@esbuild/win32-x64@0.17.19": +"@esbuild/linux-arm64@0.17.19": version "0.17.19" - resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz" - integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA== + resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz" + integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg== -"@esbuild/win32-x64@0.19.12": +"@esbuild/linux-arm64@0.19.12": version "0.19.12" - resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz" - integrity sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA== + resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz" + integrity sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA== "@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" @@ -225,11 +225,6 @@ resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz" integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== -"@jclem/logfmt2@~2.4.3": - version "2.4.3" - resolved "https://registry.npmjs.org/@jclem/logfmt2/-/logfmt2-2.4.3.tgz" - integrity sha512-d7zluLlx+JRtVICF0+ghcrVdXBdE3eXrpIuFdcCcWxA3ABOyemkTySG4ha2AdsWFwAnh8tkB1vtyeZsWAbLumg== - "@jridgewell/gen-mapping@^0.3.5": version "0.3.5" resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz" @@ -270,11 +265,6 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@kikobeats/time-span@~1.0.2": - version "1.0.5" - resolved "https://registry.npmjs.org/@kikobeats/time-span/-/time-span-1.0.5.tgz" - integrity sha512-txRAdmi35N1wnsLS1AO5mTlbY5Cv5/61WXqek2y3L9Q7u4mgdUVq819so5xe753hL5gYeLzlWoJ/VJfXg9nx8g== - "@neondatabase/serverless@>=0.1": version "0.9.3" resolved "https://registry.npmjs.org/@neondatabase/serverless/-/serverless-0.9.3.tgz" @@ -921,28 +911,11 @@ bignumber.js@^9.0.0: resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz" integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== -bin-version-check@~6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/bin-version-check/-/bin-version-check-6.0.0.tgz" - integrity sha512-k9TS/pADINX9UlErjAkbkxDer8C+WlguMwySI8sLMGLUMDvwuHmDx00yoHe7nxshgwtLBcMWQgrlwjzscUeQKg== - dependencies: - binary-version "^7.1.0" - semver "^7.6.0" - semver-truncate "^3.0.0" - binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -binary-version@^7.1.0: - version "7.1.0" - resolved "https://registry.npmjs.org/binary-version/-/binary-version-7.1.0.tgz" - integrity sha512-Iy//vPc3ANPNlIWd242Npqc8MK0a/i4kVcHDlDA6HNMv5zMxz4ulIFhOSYJVKw/8AbHdHy0CnGYEt1QqSXxPsw== - dependencies: - execa "^8.0.1" - find-versions "^6.0.0" - bplist-parser@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz" @@ -1163,11 +1136,6 @@ confusing-browser-globals@1.0.11: resolved "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz" integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== -convert-hrtime@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-5.0.0.tgz" - integrity sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg== - cookie-signature@^1.1.0: version "1.2.1" resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.1.tgz" @@ -1205,29 +1173,6 @@ d@^1.0.1, d@1: es5-ext "^0.10.50" type "^1.0.1" -dargs@~7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz" - integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== - -debug-fabulous@~2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-2.0.2.tgz" - integrity sha512-XfAbX8/owqC+pjIg0/+3V1gp8TugJT7StX/TE1TYedjrRf7h7SgUAL/+gKoAQGPCLbSU5L5LPvDg4/cGn1E/WA== - dependencies: - debug "^4" - memoizee "0.4" - -debug-logfmt@~1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/debug-logfmt/-/debug-logfmt-1.2.2.tgz" - integrity sha512-MAPU+m9lzLMkxI8k6/kJ/MGLGNtHOsW8RHriLkRxe/jFFW2iXmiGGUG9aYTRIWo5ejOFqLB10HqZ6+TN4toQFQ== - dependencies: - "@jclem/logfmt2" "~2.4.3" - "@kikobeats/time-span" "~1.0.2" - debug-fabulous "~2.0.2" - pretty-ms "~7.0.1" - debug@^3.2.7: version "3.2.7" resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" @@ -1235,7 +1180,7 @@ debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4, debug@^4.0.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4, debug@4: +debug@^4.0.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4, debug@4: version "4.3.4" resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -1966,21 +1911,6 @@ execa@^7.1.1: signal-exit "^3.0.7" strip-final-newline "^3.0.0" -execa@^8.0.1: - version "8.0.1" - resolved "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz" - integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^8.0.1" - human-signals "^5.0.0" - is-stream "^3.0.0" - merge-stream "^2.0.0" - npm-run-path "^5.1.0" - onetime "^6.0.0" - signal-exit "^4.1.0" - strip-final-newline "^3.0.0" - ext@^1.1.2: version "1.7.0" resolved "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz" @@ -2181,14 +2111,6 @@ find-up@^6.3.0: locate-path "^7.1.0" path-exists "^5.0.0" -find-versions@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/find-versions/-/find-versions-6.0.0.tgz" - integrity sha512-2kCCtc+JvcZ86IGAz3Z2Y0A1baIz9fL31pH/0S1IqZr9Iwnjq8izfPtrCyQKO6TLMPELLsQMre7VDqeIKCsHkA== - dependencies: - semver-regex "^4.0.5" - super-regex "^1.0.0" - flat-cache@^3.0.4: version "3.2.0" resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz" @@ -2252,11 +2174,6 @@ function-bind@^1.1.2: resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -function-timeout@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/function-timeout/-/function-timeout-1.0.2.tgz" - integrity sha512-939eZS4gJ3htTHAldmyyuzlrD58P03fHG49v2JfFXbV6OhvZKRC9j2yAtdHw/zrp2zXHuv05zMIy40F0ge7spA== - function.prototype.name@^1.1.6: version "1.1.6" resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz" @@ -2332,11 +2249,6 @@ get-stream@^6.0.0, get-stream@^6.0.1: resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -get-stream@^8.0.1: - version "8.0.1" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz" - integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== - get-symbol-description@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" @@ -2572,11 +2484,6 @@ human-signals@^4.3.0: resolved "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz" integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== -human-signals@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz" - integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== - humanize-ms@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz" @@ -2896,11 +2803,6 @@ is-unicode-supported@^0.1.0: resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== -is-unix@~2.0.10: - version "2.0.10" - resolved "https://registry.npmjs.org/is-unix/-/is-unix-2.0.10.tgz" - integrity sha512-CcasZSEOQUoE7JHy56se4wyRhdJfjohuMWYmceSTaDY4naKyd1fpLiY8rJsIT6AKfVstQAhHJOfPx7jcUxK61Q== - is-weakref@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" @@ -3137,6 +3039,14 @@ lru-queue@^0.1.0: dependencies: es5-ext "~0.10.2" +m3u8stream@^0.8.6: + version "0.8.6" + resolved "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.8.6.tgz" + integrity sha512-LZj8kIVf9KCphiHmH7sbFQTVe4tOemb202fWwvJwR9W5ENW/1hxJN6ksAWGhQgSBSa3jyWhnjKU1Fw1GaOdbyA== + dependencies: + miniget "^4.2.2" + sax "^1.2.4" + mailtrap@^3.3.0: version "3.3.0" resolved "https://registry.npmjs.org/mailtrap/-/mailtrap-3.3.0.tgz" @@ -3144,7 +3054,7 @@ mailtrap@^3.3.0: dependencies: axios ">=0.27" -memoizee@^0.4.15, memoizee@0.4: +memoizee@^0.4.15: version "0.4.15" resolved "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz" integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ== @@ -3223,6 +3133,11 @@ min-indent@^1.0.0: resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== +miniget@^4.2.2: + version "4.2.3" + resolved "https://registry.npmjs.org/miniget/-/miniget-4.2.3.tgz" + integrity sha512-SjbDPDICJ1zT+ZvQwK0hUcRY4wxlhhNpHL9nJOB2MEAXRGagTljsO8MEDzQMTFf0Q8g4QNi8P9lEm/g7e+qgzA== + minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" @@ -3312,9 +3227,9 @@ npm-run-path@^4.0.1: path-key "^3.0.0" npm-run-path@^5.1.0: - version "5.3.0" - resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz" - integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== + version "5.1.0" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz" + integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== dependencies: path-key "^4.0.0" @@ -3507,11 +3422,6 @@ parse-json@^5.0.0, parse-json@^5.2.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse-ms@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz" - integrity sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA== - path-exists@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" @@ -3760,13 +3670,6 @@ prettier@^3.0.0, prettier@^3.1.1, prettier@>=3.0.0: resolved "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz" integrity sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw== -pretty-ms@~7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz" - integrity sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q== - dependencies: - parse-ms "^2.1.0" - process-warning@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/process-warning/-/process-warning-2.2.0.tgz" @@ -4018,6 +3921,11 @@ safe-stable-stringify@^2.3.1: resolved "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz" integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== +sax@^1.1.3, sax@^1.2.4: + version "1.4.1" + resolved "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz" + integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== + schema-utils@^3.1.1, schema-utils@^3.2.0: version "3.3.0" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" @@ -4032,18 +3940,6 @@ secure-json-parse@^2.4.0, secure-json-parse@^2.7.0: resolved "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz" integrity sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw== -semver-regex@^4.0.5: - version "4.0.5" - resolved "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz" - integrity sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw== - -semver-truncate@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/semver-truncate/-/semver-truncate-3.0.0.tgz" - integrity sha512-LJWA9kSvMolR51oDE6PN3kALBNaUdkxzAGcexw8gjMA8xr5zUqK0JiR3CgARSqanYF3Z1YHvsErb1KDgh+v7Rg== - dependencies: - semver "^7.3.5" - semver@^5.7.2: version "5.7.2" resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" @@ -4054,7 +3950,7 @@ semver@^6.3.0: resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.0.0, semver@^7.3.5, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0: +semver@^7.0.0, semver@^7.5.3, semver@^7.5.4: version "7.6.2" resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== @@ -4143,11 +4039,6 @@ signal-exit@^3.0.3, signal-exit@^3.0.7: resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -signal-exit@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - simple-concat@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz" @@ -4321,14 +4212,6 @@ stripe@^15.7.0: "@types/node" ">=8.1.0" qs "^6.11.0" -super-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/super-regex/-/super-regex-1.0.0.tgz" - integrity sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg== - dependencies: - function-timeout "^1.0.1" - time-span "^5.1.0" - supports-color@^5.3.0: version "5.5.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" @@ -4414,13 +4297,6 @@ thread-stream@^2.0.0: dependencies: real-require "^0.2.0" -time-span@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/time-span/-/time-span-5.1.0.tgz" - integrity sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA== - dependencies: - convert-hrtime "^5.0.0" - timers-ext@^0.1.7: version "0.1.7" resolved "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz" @@ -4429,11 +4305,6 @@ timers-ext@^0.1.7: es5-ext "~0.10.46" next-tick "1" -tinyspawn@~1.2.9: - version "1.2.13" - resolved "https://registry.npmjs.org/tinyspawn/-/tinyspawn-1.2.13.tgz" - integrity sha512-XZG5oVXMvbGzxggFzLebCAoXBqRsA2Ew/UsZUguOGhC2699uID6GTA5tcuW2GH3s/i/thFYDuPRyaG3A46LwgA== - titleize@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz" @@ -4823,16 +4694,14 @@ yocto-queue@^1.0.0: resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz" integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== -youtube-dl-exec@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/youtube-dl-exec/-/youtube-dl-exec-3.0.2.tgz" - integrity sha512-kSNss5pkiZ7nXqh13m8pw1Os5s4t81RkpsZ7YozaJYVUDFrSXWKtvzhfaJ8dJH7QiK5qbeiuWs2z86lLuzMkRA== +ytdl-core@^4.11.5: + version "4.11.5" + resolved "https://registry.npmjs.org/ytdl-core/-/ytdl-core-4.11.5.tgz" + integrity sha512-27LwsW4n4nyNviRCO1hmr8Wr5J1wLLMawHCQvH8Fk0hiRqrxuIu028WzbJetiYH28K8XDbeinYW4/wcHQD1EXA== dependencies: - bin-version-check "~6.0.0" - dargs "~7.0.0" - debug-logfmt "~1.2.2" - is-unix "~2.0.10" - tinyspawn "~1.2.9" + m3u8stream "^0.8.6" + miniget "^4.2.2" + sax "^1.1.3" zod@^3.22.4: version "3.22.4"