79 lines
2.8 KiB
C#
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");
|
|
}
|
|
}
|
|
}
|