diff --git a/PatreonDownloader.App/Models/CommandLineOptions.cs b/PatreonDownloader.App/Models/CommandLineOptions.cs index 4568575..6e0f086 100644 --- a/PatreonDownloader.App/Models/CommandLineOptions.cs +++ b/PatreonDownloader.App/Models/CommandLineOptions.cs @@ -8,6 +8,10 @@ class CommandLineOptions { [Option("url", Required = true, HelpText = "Url of the creator's page")] public string Url { get; set; } + + [Option("no-files", Required = false, HelpText = "Do not download files (images, attachments, media, etc.). Useful when only post metadata like descriptions is needed.", Default = false)] + public bool NoFiles { get; set; } + [Option("descriptions", Required = false, HelpText = "Save post descriptions", Default = false)] public bool SaveDescriptions { get; set; } [Option("embeds", Required = false, HelpText = "Save embedded content metadata", Default = false)] diff --git a/PatreonDownloader.App/Program.cs b/PatreonDownloader.App/Program.cs index f829a43..fb3cb86 100644 --- a/PatreonDownloader.App/Program.cs +++ b/PatreonDownloader.App/Program.cs @@ -153,6 +153,7 @@ private static async Task InitializeSettings(CommandL UrlBlackList = (_configuration["UrlBlackList"] ?? "").ToLowerInvariant().Split("|").ToList(), UserAgent = "Patreon/126.9.0.15 (Android; Android 14; Scale/2.10)", CookieContainer = null, + NoFiles = commandLineOptions.NoFiles, SaveAvatarAndCover = commandLineOptions.SaveAvatarAndCover, SaveDescriptions = commandLineOptions.SaveDescriptions, SaveEmbeds = commandLineOptions.SaveEmbeds, diff --git a/PatreonDownloader.Implementation/Models/PatreonDownloaderSettings.cs b/PatreonDownloader.Implementation/Models/PatreonDownloaderSettings.cs index 4a05085..b0254cd 100644 --- a/PatreonDownloader.Implementation/Models/PatreonDownloaderSettings.cs +++ b/PatreonDownloader.Implementation/Models/PatreonDownloaderSettings.cs @@ -19,6 +19,11 @@ public record PatreonDownloaderSettings : UniversalDownloaderPlatformSettings, I public bool SaveAvatarAndCover { get; init; } + /// + /// If true, do not download remote files (images, attachments, media, etc.) + /// + public bool NoFiles { get; init; } + /// /// Create a new directory for every post and store files of said post in that directory /// diff --git a/PatreonDownloader.Implementation/PatreonPageCrawler.cs b/PatreonDownloader.Implementation/PatreonPageCrawler.cs index 7348648..05c21f8 100644 --- a/PatreonDownloader.Implementation/PatreonPageCrawler.cs +++ b/PatreonDownloader.Implementation/PatreonPageCrawler.cs @@ -87,7 +87,7 @@ await File.WriteAllTextAsync(Path.Combine(_patreonDownloaderSettings.DownloadDir ParsingResult result = await ParsePage(json); - if(result.CrawledUrls.Count > 0) + if(!_patreonDownloaderSettings.NoFiles && result.CrawledUrls.Count > 0) crawledUrls.AddRange(result.CrawledUrls); nextPage = result.NextPage;