From 7b17bd8ef7ee8b3391fea3bf7a9e1866be92e81b Mon Sep 17 00:00:00 2001 From: Jake Mannens Date: Wed, 13 May 2026 00:46:00 +1000 Subject: v0.16a --- GetMedia.cs | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ PowerShell.csproj | 2 +- 2 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 GetMedia.cs diff --git a/GetMedia.cs b/GetMedia.cs new file mode 100644 index 0000000..b01f38e --- /dev/null +++ b/GetMedia.cs @@ -0,0 +1,72 @@ +using HyperBooru.ApiClient; +using HyperBooru.ApiModels; +using System.Management.Automation; + +namespace HyperBooru.PowerShell; + +[Alias("ghbm")] +[Cmdlet(VerbsCommon.Get, "HyperBooruMedia")] +public class GetMediaCmdlet : PSCmdlet { + [Parameter(Mandatory = true)] + public HBSession Session { get; set; } + + [Parameter] + public SwitchParameter SelectIngest { get; set; } + [Parameter] + public SwitchParameter IncludeNsfw { get; set; } + [Parameter] + public Guid? ContinuationToken { get; set; } + [Parameter] + public int Count { get; set; } = 50; + [Parameter] + public ApiModels.SortOrder SortOrder { get; set; } + [Parameter(ParameterSetName = "All", Mandatory = true)] + public SwitchParameter All { get; set; } + [Parameter(ParameterSetName = "TagId", Mandatory = true)] + public Guid TagId { get; set; } + [Parameter(ParameterSetName = "Query", Mandatory = true)] + public string Query { get; set; } + + protected override void ProcessRecord() { + FeedRequest feedRequest; + + switch(ParameterSetName) { + case "TagId": + feedRequest = new FeedTagRequest { + SelectIngest = SelectIngest, + IncludeNsfw = IncludeNsfw, + ContinuationToken = ContinuationToken, + Count = Count, + SortOrder = SortOrder, + TagId = TagId + }; + break; + case "Query": + feedRequest = new FeedSearchRequest { + SelectIngest = SelectIngest, + IncludeNsfw = IncludeNsfw, + ContinuationToken = ContinuationToken, + Count = Count, + SortOrder = SortOrder, + Query = Query + }; + break; + default: + feedRequest = new FeedRequest { + SelectIngest = SelectIngest, + IncludeNsfw = IncludeNsfw, + ContinuationToken = ContinuationToken, + Count = Count, + SortOrder = SortOrder + }; + break; + } + + var mediaIds = Session.Feed.LoadChunkAsync(feedRequest) + .GetAwaiter() + .GetResult(); + + foreach(var m in mediaIds) + WriteObject(m); + } +} diff --git a/PowerShell.csproj b/PowerShell.csproj index 785c97e..6ea2479 100644 --- a/PowerShell.csproj +++ b/PowerShell.csproj @@ -9,7 +9,7 @@ $(AssemblyVersion) HyperBooru.PowerShell Jake Mannens - 0.15-alpha + 0.16-alpha -- cgit v1.3