using AnimeAnnouncer.Torrents; using Microsoft.Extensions.Configuration; namespace MassTorrentAdd { internal class Program { static async Task Main(string[] args) { if(args.Length == 0) { Console.WriteLine("Please provide the nyaa URL to target for download."); return; } String url = args[0]; var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appSettings.json", optional: false, reloadOnChange: true); IConfigurationRoot configuration = builder.Build(); String transmissionHost = configuration.GetValue("transmissionURI")!; String? transmissionUsername = configuration.GetValue("transmissionUsername"); String? transmissionPassword = configuration.GetValue("transmissionPassword"); String destinationFolder = configuration.GetValue("destinationFolder")!; Console.WriteLine($"Using transmission server {transmissionHost}"); TransmissionService transmission; try { transmission = await TransmissionService.ConnectAsync(transmissionHost, transmissionUsername, transmissionPassword); } catch (Exception ex) { Console.WriteLine(ex.Message); return; } var nyaa = new NyaaRssReader(); List items; try { items = await nyaa.ReadAsync(url); } catch (Exception ex) { Console.WriteLine($"An error occurred while contacting Nyaa for a response: {ex.Message}"); return; } if (items.Count == 0) { Console.WriteLine("No items found in the feed"); return; } Console.WriteLine("Downloading .."); foreach ( var item in items ) { Console.WriteLine($"{item.Title}"); } String transmissionDirectoryName = TorrentDirectoryNamer.FromTitle(items.First().Title, destinationFolder); Console.WriteLine($"{items.Count} item(s) to {transmissionDirectoryName}"); Console.WriteLine("Continue?"); if(Console.ReadKey().KeyChar != 'y') { Console.WriteLine("Exiting"); return; } foreach (var item in items) { var torrentData = await nyaa.DownloadTorrentAsync(item); await transmission.AddNewTorrentFileToServerAsync(torrentData, transmissionDirectoryName); } Console.WriteLine("Completed"); } } }