From b718dfd42d023752e8f3dcb885d0093d0b1b99cf Mon Sep 17 00:00:00 2001 From: Mike Nolan Date: Thu, 24 Feb 2022 15:22:23 -0600 Subject: [PATCH] fixed some bugs --- Program.cs | 18 +++++++++--------- bin/Release/youtube-downloader.exe | Bin 43520 -> 44032 bytes obj/x86/Release/youtube-downloader.exe | Bin 43520 -> 44032 bytes 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Program.cs b/Program.cs index 8912058..ad62728 100644 --- a/Program.cs +++ b/Program.cs @@ -73,7 +73,7 @@ namespace TYTD Route.Add("/api/Redownload", (HttpAction)Redownload); Route.Add("/api/Redownload/{R}", (HttpAction)RedownloadRes); Route.Add("/api/Watch/{VideoId}", (HttpAction)Watch); - Route.Add("/api/Info/Video/{Id}",(HttpAction)VideoInfo); + Route.Add("/api/VideoInfo/{Id}",(HttpAction)VideoInfo); /* Playlist */ Route.Add("/api/AddPlaylistOnly/{Id}", (HttpAction)AddPlaylistOnly); Route.Add("/api/AddPlaylist/{Id}", (HttpAction)AddPlaylist); @@ -81,7 +81,7 @@ namespace TYTD Route.Add("/api/PersonalPlaylist/{PlaylistName}",(HttpAction)PersonalPlaylist); Route.Add("/api/CreatePlaylist/{Ids}/playlist.{extension}", (HttpAction)CreatePlaylist); Route.Add("/api/CreatePlaylistRes/{Ids}/playlist.{extension}", (HttpAction)CreatePlaylistRes); - Route.Add("/api/Info/Playlist/{Id}", (HttpAction)PlaylistInfo); + Route.Add("/api/PlaylistInfo/{Id}", (HttpAction)PlaylistInfo); Route.Add("/api/ListPlaylists.html", (HttpAction)ListPlaylists); /* Search */ Route.Add("/api/SearchOnly/{text}", (HttpAction)SearchOnly); @@ -102,7 +102,7 @@ namespace TYTD /* Queue and Progress */ Route.Add("/api/QueueList", (HttpAction)QueueList); - Route.Add("/api/QueueList.html", (HttpAction)QueueListHtml); + Route.Add("/api/QueueListPage/", (HttpAction)QueueListHtml); Route.Add("/api/QueueMove/{From}/{To}", (HttpAction)QueueMove); Route.Add("/api/QueueMove2/{To}/{Id}", (HttpAction)QueueMove2); Route.Add("/api/Progress", (HttpAction)VideoProgress); @@ -224,7 +224,7 @@ namespace TYTD videos.AddEscapedHtml("Description", item.Description); videos.AddEscapedHtml("UploadDate", DateTime.Parse(item.UploadDate).ToShortDateString()); - string res=ApiLoader.RenderFileOrDefault("WebSite/err/video_list/VideoInfo.html", "Information about {Title}

Video Info for {Title}

Video Id: {Id}

Video Channel: {AuthorTitle}

Video Channel Id: {AuthorChannelId}

Likes: {Likes}, Dislikes: {Dislikes}, Views: {Views}

Upload Date: {UploadDate}

Duration: {DurationStringLong}

Description:

{Description}

", videos); + string res=ApiLoader.RenderFileOrDefault("WebSite/err/video_list/VideoInfo.html", "Information about {Title}

Video Info for {Title}

Playback: SD HD Audio
Download: SD HD Audio

Video Id: {Id}

Video Channel: {AuthorTitle}

Video Channel Id: {AuthorChannelId}

Likes: {Likes}, Dislikes: {Dislikes}, Views: {Views}

Upload Date: {UploadDate}

Duration: {DurationStringLong}

Description:

{Description}

", videos); response.AsText(res); } else @@ -429,7 +429,7 @@ namespace TYTD } public static void ListPlaylists(HttpListenerRequest request,HttpListenerResponse resp,Dictionary args) { - string htmlBeforeProcessed = ApiLoader.ReadAllTextOrDefault("WebSite/err/playlist_list/element.html", "\"\"{Title}
{AuthorTitle}
"); + string htmlBeforeProcessed = ApiLoader.ReadAllTextOrDefault("WebSite/err/playlist_list/element.html", "\"\"{Title}
{AuthorTitle}
"); StringBuilder builder = new StringBuilder(); foreach (var f in Directory.EnumerateFiles("Playlist","*.json")) { @@ -467,7 +467,7 @@ namespace TYTD { var plitem = JsonConvert.DeserializeObject(File.ReadAllText(Path.Combine("Playlist", $"{id.Value.Value}.json"))); - string htmlBeforeProcessed = ApiLoader.ReadAllTextOrDefault("WebSite/err/video_list/element.html", "\"\"{Title}
{AuthorTitle}
"); + string htmlBeforeProcessed = ApiLoader.ReadAllTextOrDefault("WebSite/err/video_list/element.html", "\"\"{Title}
{AuthorTitle}
"); StringBuilder builder = new StringBuilder(); foreach (var v in plitem.Videos) @@ -537,7 +537,7 @@ namespace TYTD } StringBuilder innerHtml = new StringBuilder(); - string htmlBeforeProcessed = ApiLoader.ReadAllTextOrDefault("WebSite/err/video_list/element.html", "\"\"{Title}
{AuthorTitle}
"); + string htmlBeforeProcessed = ApiLoader.ReadAllTextOrDefault("WebSite/err/video_list/element.html", "\"\"{Title}
{AuthorTitle}
"); long i=0; foreach (var item in Downloader.SearchFor(search)) { @@ -620,7 +620,7 @@ namespace TYTD public static void QueueListHtml(HttpListenerRequest req,HttpListenerResponse resp,Dictionary args) { StringBuilder innerHtml = new StringBuilder(); - string htmlBeforeProcessed = ApiLoader.ReadAllTextOrDefault("WebSite/err/video_list/element.html", "\"\"{Title}
{AuthorTitle}
"); + string htmlBeforeProcessed = ApiLoader.ReadAllTextOrDefault("WebSite/err/video_list/element.html", "\"\"{Title}
{AuthorTitle}
"); long i = 0; foreach (var item0 in Downloader.GetQueueItems()) { @@ -906,7 +906,7 @@ namespace TYTD #region Other public static void Index(HttpListenerRequest rq, HttpListenerResponse rp, Dictionary args) { - string r = ApiLoader.ReadAllTextOrDefault(Path.Combine(webSitePath, "index.html"), "TYTD

TYTD

Existing Videos:

Get Progress
List QueueList Playlists
"); + string r = ApiLoader.ReadAllTextOrDefault(Path.Combine(webSitePath, "index.html"), "TYTD

TYTD

Existing Videos:

Get Progress
List Queue
List Playlists
"); rp.AsText( r); } diff --git a/bin/Release/youtube-downloader.exe b/bin/Release/youtube-downloader.exe index 0a39de2c22d4171cd9c2bcde5f0c9ce8bed18241..9a795e67e655fd60547fe7ba2ef89854efeb27f9 100644 GIT binary patch delta 6548 zcmb_g3vg7`89sOS?%jL$mE7HA-;caDxk)zJWfMqZBqB)UVFHLWpwgP4JVd#00%}Pt zTBX~!K$s}13|4FMMc~3F*Q2<&$+vMZ*~LPnQkU$ z@A)6!f6o8^_y7OohF48Dyl&cZ%dBs{^bMfw=QuKPb}og`2oOY#_~l{vu7Ka;@QbEs z&nAR;x`mIReF1&zUz=U`gY+CqIgZe%Wou=bnL`e;=Dt?4h^w=W?gmZ;{Em=YxoQby znEL%>KNph_hY;YRedHKdRq;9i(a#L{H6aUn|00AAU4@XD?U4YOsmxqcmx+_eWXBJAl7QBZV2i->~7HB%cER6O9yQe4mAZ#hCsaa*hxbhcr?p&PkK_lZnp0wsm-(Kf9RlfhbqY`6)b)k++7`-&V`Lb#7jWNs?LLr0;$+2VhV0m zFVqPtBh1$cn-~ESDW|fB%(K^oUS#A2K=uf3L0PEtPm(S6K=)USe+lJV-B#sdoiEv_ z$xFxKlrzp^U9^duvPaU>fQ&c8A}amBbDAYQEQ6N^VAEj6Tj1G1SkL25(&dPPR~9?Q z^WJTab|>}Kh*}8%_;HyWb(~)_h63PAfoJpD8!H9tc4ZlCsN*}GZL1DZ)4i0SET=MN zp};sm>*4Y#D?rF(RyrZh4cEZg#;}zu4cz^OTx#;TvmyE}nA9O{0y~c#j{?~W5msDN zO;I=5(ikSUxSCA0ZgRj?ouhp1noKEeB@I)~a>J$LKHST`{dhV3wwaW(;b?Z=cL!XV zi+f|uJ5&s(f^1m}0?HsfHh z;fJY|G7LNQdRQ>^ZkEkb(og1<> zE;i#nvl)$@HA6g?hTEB$oz#r1?xJQacqygfVGpsFbw_T84SoX_Tyf%F>#X%3hI(mo)0 z)rWG7V?wRhBOF7rKq|^x;wwPNs`dd_{Vgnbh@S6RSd4Erxvo47FYiO;Aul~Yl(fe{ zmQ|U@sZt+#t2|&`?FZFA_{nH_gUGT=WbUf&VfU2u8YkPddrEqh0}{KZq~_}!kk~yX zHDBp~w1@2U)<#~W4vl|)}Uh6>OBst*?abJ;dVUMArMwA5P~5PRxJ>MArMvw#IFLi+>7L3AjF*{Zv;Xj?Ju&R zUP4X;%0${yU~?(mXaNum0kA><&J9+WE{>2T!C7@Q4uT#BycDj1_rfA+&f?8*one{0 z8mxmf91TWb4Ti?+Br`&ho`QM~1K1g={WAvcxYhpgP%^H-QMBHMLMbyUhw;vZkj!3b z8_wmu5N_8zY-s1Q*3aQJ%r|r(WnXDM)kV$2R)dE{@bGQnY^qzeRJXhBhEx|J)n5wJ zRR1U((i{#=oO~WGi$*G$_n(8yd7N&i@;p3fB}T+8mE@dAERZc2`b#0=CRRg8kI!#` zLqcrsiWJ9YHbCPWVJV1>CE73r)nwC_$3pH=dCB16ojf+k=z%%{GG=^)sL^Vg(04_r zO#lDPMS)liQ?F%@zMJ&8a6JRrGrFbTZ>b^&kvao?RK&*b%b1azbbvkz5Lr zWL1QU{--i1{{*xfEqEn-(aNyYL*i9+l-XMqoKeKgA;6y=o|F|$hBS6V8uNG#=(A}C zucJ@z!krSb8Q%mO`r18O<)@g>S5=sH*OQN{BGv@6e$*GYJmRq-Jcw|kjH*fpS+V<+aqU~oDa9p21XNZm1 zai0kq^@p{J>0vkV)ZK6WV;1IMU7~w8M3T+c_y|z7QD)41-ECGl4xFLS|8T=l%7Qk+ zw>O(!B&9snA5CYQQ-@QcPGI|~)RAf6u&K5K<|*J@P9-VFS#VxDU&FjC;XY}MD?B`p zSEXUzj*u(sXN7g-Yx2l2-7sWwwB8@f;>a+o7XXQQpqhq-^L3y{^FT0&8IS03jekbj zRfJuV$Nsoso&o#aJofJku-&J@b{AoLve?50+;B_Itw#%R1E;|a6yXN*XC6+Jm0Sdf z+I->T@kK3USEA2gZ{W1{qNlMJEwUHO+gsYS-Vn&0dF=OcfgEkp0~s#@s?7t<}I+b-?Ys&8_qB4`hCf!M87Ugy_>AZ=KKeL;%J(YH+lz&mNT|kyo{**;dd6T6A zrd33BRl`fz?g#ucRS{cCDbE)Jt!jDFw2Y9aQWa!bs-&Bi5Yz7N%k*| zaf_g*B?~v9msURw%E2zCJLu`0gAyU-Pt*miX1Nu*Ah>M+wmy6N8|>=3#yhQ~b3$N) zQRLSJBA@3#J2o+nbz(MDo=H4*<~MEfB)P3WQQ~z7I6$fNvW<&)+?NwcbY?fy>7I6Z zQo=2_^BC~Dvw!o`aYb%R#3`8}Q%N@HG|CiraUR#?b%+VSfS<@w1RR<~0_liz=Oh>( zloG9Ul4)tywo^(o*`Bu3HoGUSx7oj>YfLZKlh4y0iFHI_1R_LaBYlT+HTI)S63yYyj#({!%szX6L)uBqVz4e}!SgqDutx#QQZO?`W9txBf8%s(>0wL^e%N(CLgA2C9e+8=- z%ttTuBUB3cRek<~ndiaxTm6}-ZN7x9E{XclYP13+i8>I?Y+UjnSJjlKp}FWP;QtiX z6=)ExMKjSVv=phCo+~;{(p+FILsy_=X6v%`yy@nX8E)Nrj%>Pmdorgt03u7!N^};g zKxe~q1zL_Us4PX3Q59;2pCnz$&(=i9IcxlFNi+mDE=Sh`w+qcj=YbYIP1pD9&zy!- zINddXj^U(N0Loaj8UG7f|G8)#Agln)u_!t{ce1n509fn-bQN6-C%6i}`$6~n?)>J8 zc*leS^dEj>s+}s({^2(S?fP_qcJa+<%;0XB=&DC}uAjVs8!RkY$iML;k!;$GpCaV3 z!FrNj+niax_I9)B#@V3zDp@@cCI<(@lunkfmAO80Xr-SVT^r8SUw606^=Ro+@(VFD z^|r6gWZ^Qmo?>Ld=4#^IoXFg}d84KDZtGc}eztB$_tOjBn~v{ndn=RL_P)*i!eL14 z?B@geT(Py%YkK`K>AG(Uag7Xe$1^`488UP4XTE#DY?2Nkwf{+ CDtsXT delta 6109 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 CDtsXT delta 6109 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 x4wGYhCg);98#&^9s*gL8yZ@