diff --git a/Tesses.YouTubeDownloader.Server/cross.json b/Tesses.YouTubeDownloader.Server/cross.json index 50781a2..82d8e17 100644 --- a/Tesses.YouTubeDownloader.Server/cross.json +++ b/Tesses.YouTubeDownloader.Server/cross.json @@ -14,6 +14,6 @@ "project_dependencies": [ "..\/Tesses.YouTubeDownloader" ], - "version": "1.0.0.5-prod", + "version": "1.0.0.6-dev", "compTime": "secure" } \ No newline at end of file diff --git a/Tesses.YouTubeDownloader.Server/src/main.tcross b/Tesses.YouTubeDownloader.Server/src/main.tcross index 9f3adf0..a5984ff 100644 --- a/Tesses.YouTubeDownloader.Server/src/main.tcross +++ b/Tesses.YouTubeDownloader.Server/src/main.tcross @@ -629,7 +629,6 @@ class TYTDApp { if(TypeIsString(v)) { const resp=this.TYTD.ManifestRequest(v); - Console.WriteLine(resp); ctx.WithMimeType("application/json").SendJson(resp); return true; } diff --git a/Tesses.YouTubeDownloader/cross.json b/Tesses.YouTubeDownloader/cross.json index 5decd19..3aeba32 100644 --- a/Tesses.YouTubeDownloader/cross.json +++ b/Tesses.YouTubeDownloader/cross.json @@ -14,6 +14,6 @@ } ], "name": "Tesses.YouTubeDownloader", - "version": "1.0.0.5-prod", + "version": "1.0.0.6-dev", "icon": "icon.png" } \ No newline at end of file diff --git a/Tesses.YouTubeDownloader/src/YouTubeDownloader.tcross b/Tesses.YouTubeDownloader/src/YouTubeDownloader.tcross index 237a787..386acf6 100644 --- a/Tesses.YouTubeDownloader/src/YouTubeDownloader.tcross +++ b/Tesses.YouTubeDownloader/src/YouTubeDownloader.tcross @@ -1659,7 +1659,7 @@ class TYTD.Downloader { ^/ public ManifestRequest(vid) { - while(true) { + for(var tries=0; tries<5;tries++) { var id = TYTD.GetVideoId(vid); if(id == null) return null; TryDownloadVideoThumbnail(id,"0"); @@ -1704,10 +1704,23 @@ class TYTD.Downloader { this.RateLimit(); var response = Net.Http.MakeRequest(url,requestData); - if(response.StatusCode < 200 || response.StatusCode > 299) continue; + if(response.StatusCode < 200 || response.StatusCode > 299) { + if(tries == 4) + { + const respText = response.ReadAsString(); + throw new VideoDownloadError(id, $"StatusCode does not indicate success {response.StatusCode}\n{respText}"); + } + continue; + } const respText = response.ReadAsString(); const jsonResp = Json.Decode(respText); - if(!TypeIsDictionary(jsonResp.playerResponse)) continue; + if(!TypeIsDictionary(jsonResp.playerResponse)) { + if(tries == 4) + { + throw new VideoDownloadError(id, $"Player response is not defined, StatusCode: {response.StatusCode}"); + } + continue; + } if(TypeIsDictionary(jsonResp.playerResponse.playabilityStatus)) { @@ -2063,6 +2076,7 @@ class TYTD.Downloader { this.Mutex.Lock(); const db = this.OpenDB(); const res = Sqlite.Exec(db, $"SELECT * FROM sso WHERE service_name = {Sqlite.Escape(appname)}"); + Sqlite.Close(db); this.Mutex.Unlock(); if(TypeIsList(res))