summaryrefslogtreecommitdiff
path: root/GetMedia.cs
diff options
context:
space:
mode:
Diffstat (limited to 'GetMedia.cs')
-rw-r--r--GetMedia.cs72
1 files changed, 72 insertions, 0 deletions
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);
+ }
+}