using Tranga; using Tranga.Connectors; namespace Tranga_CLI; public static class Tranga_Cli { public static void Main(string[] args) { Console.WriteLine("Output folder path (D:):"); string? folderPath = Console.ReadLine(); while(folderPath is null ) folderPath = Console.ReadLine(); if (folderPath.Length < 1) folderPath = "D:"; DownloadNow(folderPath); } private static void DownloadNow(string folderPath) { Connector connector = SelectConnector(folderPath); Console.WriteLine("Search query (leave empty for all):"); string? query = Console.ReadLine(); Publication[] publications = connector.GetPublications(query ?? ""); Publication selectedPub = SelectPublication(publications); Chapter[] allChapteres = connector.GetChapters(selectedPub, "en"); Chapter[] downloadChapters = SelectChapters(allChapteres); foreach (Chapter chapter in downloadChapters) { Console.WriteLine($"Downloading {selectedPub.sortName} V{chapter.volumeNumber}C{chapter.chapterNumber}"); connector.DownloadChapter(selectedPub, chapter); } } private static Connector SelectConnector(string folderPath) { Console.WriteLine("Select Connector:"); Console.WriteLine("0: MangaDex"); string? selectedConnector = Console.ReadLine(); while(selectedConnector is null || selectedConnector.Length < 1) selectedConnector = Console.ReadLine(); int selectedConnectorIndex = Convert.ToInt32(selectedConnector); Connector connector; switch (selectedConnectorIndex) { case 0: connector = new MangaDex(folderPath); break; default: connector = new MangaDex(folderPath); break; } return connector; } private static Publication SelectPublication(Publication[] publications) { int pIndex = 0; foreach(Publication publication in publications) Console.WriteLine($"{pIndex++}: {publication.sortName}"); Console.WriteLine($"Select publication to Download (0-{publications.Length - 1}):"); string? selected = Console.ReadLine(); while(selected is null || selected.Length < 1) selected = Console.ReadLine(); return publications[Convert.ToInt32(selected)]; } private static Chapter[] SelectChapters(Chapter[] chapters) { int cIndex = 0; foreach (Chapter ch in chapters) { string name = cIndex.ToString(); if (ch.name is not null && ch.name.Length > 0) name = ch.name; else if (ch.chapterNumber is not null && ch.chapterNumber.Length > 0) name = ch.chapterNumber; Console.WriteLine($"{cIndex++}: {name}"); } Console.WriteLine($"Select Chapters to download (0-{chapters.Length - 1}) [range x-y or 'a' for all]: "); string? selected = Console.ReadLine(); while(selected is null || selected.Length < 1) selected = Console.ReadLine(); int start = 0; int end = 0; if (selected == "a") end = chapters.Length - 1; else if (selected.Contains('-')) { string[] split = selected.Split('-'); start = Convert.ToInt32(split[0]); end = Convert.ToInt32(split[1]); } else { start = Convert.ToInt32(selected); end = Convert.ToInt32(selected); } return chapters.Skip(start).Take((end + 1)-start).ToArray(); } }