//Updated July 24th - TODO: Need to accept download quality from user in config public static void DownloadMovies(List <Movie> moviesToDownload) { try { MongoCollection pendingCollection = MongoUtils.GetMongoCollection ( @"mongodb://" + ConfigurationManager.AppSettings["mongoHost"] + @"/", ConfigurationManager.AppSettings["port"], ConfigurationManager.AppSettings["db"], ConfigurationManager.AppSettings["pending_collection"] ); foreach (var m in moviesToDownload.Where(s => !MovieUtils.IsInPending(s) && !MovieUtils.IsInDownloaded(s))) { var torURL = ""; //Is the preferred download quality avilable? foreach (var t in m.DownloadLogistics) { if (t.Quality == ConfigurationManager.AppSettings["yts_quality_pref"]) { torURL = t.TorrentUrl; } } //Preferred quality was not available. Get next. if (torURL == "") { foreach (var t in m.DownloadLogistics) { if (t.Quality != ConfigurationManager.AppSettings["yts_quality_excl"]) { torURL = t.TorrentUrl; } } } //Download torrent file to temp folder first to be able to extract the video filename DownloadFile(torURL, ConfigurationManager.AppSettings["temp_torrent_download_path"] + @"\" + ((m.ImdbTitle == null) ? m.YtsMovieTitle : m.ImdbTitle) + ".torrent"); //Pull video filename out of the torrent file string name = MovieUtils.NameFromDownloadString(((m.ImdbTitle == null) ? m.YtsMovieTitle : m.ImdbTitle)); List <string> fileNameArry = name.Split(':').ToList(); foreach (var f in fileNameArry.Where(f => f.Contains("name"))) { name = fileNameArry[fileNameArry.IndexOf(f) + 1]; name = name.Substring(0, name.Length - 2); break; } pendingCollection.Insert(new Pending() { FileName = name, Name = m.YtsMovieTitle, Show = false, Movie = true }); //Move the torrent file from temp into downloads MoveFile(ConfigurationManager.AppSettings["temp_torrent_download_path"] + @"\" + m.YtsMovieTitle + ".torrent", ConfigurationManager.AppSettings["torrent_download_path"] + @"\" + m.YtsMovieTitle + ".torrent"); break; } } catch (Exception e) { Log.AppendToLog("Error : FATAL download movie. " + e, ConfigurationManager.AppSettings["log_file"]); } }