public void downloadThumbnails(downloadObject paynus) { WebClient wc = new WebClient(); while (true) { try { if (Settings.Default.Thumbnails == 0) { wc.DownloadFile("https://img.youtube.com/vi/" + paynus.id + "/0.jpg", paynus.downloadpath + "_thumb-1.jpg"); wc.DownloadFile("https://img.youtube.com/vi/" + paynus.id + "/1.jpg", paynus.downloadpath + "_thumb-2.jpg"); wc.DownloadFile("https://img.youtube.com/vi/" + paynus.id + "/2.jpg", paynus.downloadpath + "_thumb-3.jpg"); wc.DownloadFile("https://img.youtube.com/vi/" + paynus.id + "/3.jpg", paynus.downloadpath + "_thumb-4.jpg"); } else if (Settings.Default.Thumbnails == 1) { wc.DownloadFile("https://img.youtube.com/vi/" + paynus.id + "/1.jpg", paynus.downloadpath + "_thumb-1.jpg"); } else if (Settings.Default.Thumbnails == 2) { wc.DownloadFile("https://img.youtube.com/vi/" + paynus.id + "/0.jpg", paynus.downloadpath + "_thumb-1.jpg"); } } catch (WebException e) { writeToLog(e.ToString()); continue; } break; } wc.Dispose(); }
public void downloadAsync() { bool success = true; String databasepath = Settings.Default.Path + "/downloaded"; downloadObject paynus = taargus; if ((currentlyDownloading.Contains(paynus.id) == false) && (currentlyDownloading.Count() < Settings.Default.MaxDownloads)) { currentlyDownloading.Add(paynus.id); window.set_statusbar_text("Downloading " + currentlyDownloading.Count + " video(s)."); WebClient wc = new WebClient(); try { // get content-length from headers downloadThumbnails(paynus); wc.DownloadFile(paynus.videourl, paynus.downloadpath); Int64 vfsize = Convert.ToInt64(wc.ResponseHeaders["Content-Length"]); // check file size FileInfo f = new FileInfo(paynus.downloadpath); Int64 vdlfsize = f.Length; if (vdlfsize < vfsize) { writeToLog("Filesize mismatch: YT=" + vfsize.ToString() + ", Local=" + vdlfsize.ToString()); currentlyDownloading.Remove(paynus.id); success = false; } if (paynus.audiourl != null) { wc.DownloadFile(paynus.audiourl, paynus.downloadpath.Replace("mp4", "m4a")); Int64 afsize = Convert.ToInt64(wc.ResponseHeaders["Content-Length"]); FileInfo af = new FileInfo(paynus.downloadpath.Replace("mp4", "m4a")); Int64 adlfsize = af.Length; if (adlfsize < afsize) { writeToLog("Filesize mismatch: YT=" + afsize.ToString() + ", Local=" + adlfsize.ToString()); currentlyDownloading.Remove(paynus.id); success = false; } else { string cleanaudiopath = '"' + af.FullName + '"'; string cleanvideopath = '"' + f.FullName + '"'; System.Diagnostics.Process process = new System.Diagnostics.Process(); System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); startInfo.UseShellExecute = false; startInfo.CreateNoWindow = true; startInfo.FileName = "cmd.exe"; startInfo.Arguments = "/c mp4box.exe -add " + cleanaudiopath + " " + cleanvideopath; process.StartInfo = startInfo; process.Start(); Thread.Sleep(1000); File.Delete(af.FullName); } } } catch (WebException e) { writeToLog(e.ToString()); currentlyDownloading.Remove(paynus.id); success = false; } wc.Dispose(); if (success) { while (true) { try { File.AppendAllText(databasepath, paynus.id + "\n"); break; } catch (IOException e) { continue; } } currentlyDownloading.Remove(paynus.id); } if (currentlyDownloading.Count == 0) { window.set_statusbar_text("Waiting " + Settings.Default.Delay.ToString() + " minute(s)..."); } else { window.set_statusbar_text("Downloading " + currentlyDownloading.Count + " video(s)."); } } }