Files
AnimeAnnouncer/MassTorrentAdd/Program.cs
T

79 lines
2.8 KiB
C#

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<String>("transmissionURI")!;
String? transmissionUsername = configuration.GetValue<String>("transmissionUsername");
String? transmissionPassword = configuration.GetValue<String>("transmissionPassword");
String destinationFolder = configuration.GetValue<String>("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<NyaaRssItem> 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");
}
}
}