// DoWork event handler for the file download BackgroundWorker. // The selected TreeNode (either a module, folder, or file) is passed in the DoWorkEventArgs e private void DownloadBW_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; TreeNode selectedNode = e.Argument as TreeNode; scraper.DownloadProgress.BeginJob(worker); // -- DETERMINE TYPE OF NODE SELECTED -- // Module selected if (selectedNode.Tag.GetType() == typeof(BbModule)) { BbModule module = selectedNode.Tag as BbModule; scraper.DownloadProgress.TotalWork = module.Content.CountAllFiles(); scraper.DownloadModuleFiles(module); } // Single folder selected else if (selectedNode.Tag.GetType() == typeof(BbContentDirectory)) { BbContentDirectory folder = selectedNode.Tag as BbContentDirectory; scraper.DownloadProgress.TotalWork = folder.CountAllFiles(); scraper.DownloadFolder(folder, scraper.OutputDirectory + BbUtils.CleanDirectory(folder.Name) + @"\"); } // Single file selected else if (selectedNode.Tag.GetType() == typeof(BbContentItem)) { BbContentItem file = selectedNode.Tag as BbContentItem; scraper.DownloadProgress.TotalWork = 1; scraper.DownloadFile(file); } }
public BbContentItem(string name, Uri url, BbContentDirectory folder, string linkType = "local") { this.name = name; this.url = url; this.linkType = linkType; this.folder = folder; filename = BbUtils.CleanFileName(name).Truncate(40); }
// Downloads all files in folders. Used recursively for each subfolder found. public void DownloadFolder(BbContentDirectory folder, string directory) { foreach (BbContentItem file in folder.Files) { DownloadFile(file, directory); } foreach (BbContentDirectory subFolder in folder.SubFolders) { DownloadFolder(subFolder, directory + BbUtils.CleanDirectory(subFolder.Name) + "\\"); //Add subfolder name to directory } }
// Downloads all files in a module public void DownloadModuleFiles(BbModule m) { DownloadFolder(m.Content, outputDirectory + BbUtils.CleanDirectory(m.Name) + "\\"); }
////////// ### DOWNLOADING CONTENT ### //Used in ConsoleUI public void DownloadModuleFiles(string moduleName) { BbModule m = webData.GetModuleByName(moduleName); DownloadFolder(m.Content, outputDirectory + BbUtils.CleanDirectory(m.Name) + "\\"); }