aboutsummaryrefslogtreecommitdiff
path: root/cmd/x
diff options
context:
space:
mode:
authorXe Iaso <me@xeiaso.net>2023-08-13 11:53:55 -0400
committerXe Iaso <me@xeiaso.net>2023-08-13 11:53:58 -0400
commit7c61f7211f498f119e9848177748326da20b811a (patch)
tree46c4166a1799d7e01a647916bed077ed22ed1e8f /cmd/x
parent07cd5a82210a34ed71ca40057d4bf68cd2d70459 (diff)
downloadx-7c61f7211f498f119e9848177748326da20b811a.tar.xz
x-7c61f7211f498f119e9848177748326da20b811a.zip
cmd/sanguisuga: opportunistically external seeding
Signed-off-by: Xe Iaso <me@xeiaso.net>
Diffstat (limited to 'cmd/x')
-rw-r--r--cmd/x/main.go1
-rw-r--r--cmd/x/sanguisuga.go48
2 files changed, 46 insertions, 3 deletions
diff --git a/cmd/x/main.go b/cmd/x/main.go
index 706cd9c..c6e05a8 100644
--- a/cmd/x/main.go
+++ b/cmd/x/main.go
@@ -14,6 +14,7 @@ func main() {
subcommands.Register(subcommands.CommandsCommand(), "")
subcommands.Register(&sanguisugaAnimeList{}, "sanguisuga")
+ subcommands.Register(&sanguisugaAnimeTrack{}, "sanguisuga")
internal.HandleStartup()
ctx := context.Background()
diff --git a/cmd/x/sanguisuga.go b/cmd/x/sanguisuga.go
index 667412c..7429355 100644
--- a/cmd/x/sanguisuga.go
+++ b/cmd/x/sanguisuga.go
@@ -1,6 +1,7 @@
package main
import (
+ "bytes"
"context"
"encoding/json"
"flag"
@@ -10,6 +11,7 @@ import (
"github.com/google/subcommands"
"github.com/rodaine/table"
+ "within.website/x/web"
)
var (
@@ -22,9 +24,7 @@ type Show struct {
Quality string `json:"quality"`
}
-type sanguisugaAnimeList struct {
- URL string
-}
+type sanguisugaAnimeList struct{}
func (*sanguisugaAnimeList) Name() string { return "anime-list" }
func (*sanguisugaAnimeList) Synopsis() string { return "Print list of anime tracked by sanguisuga." }
@@ -58,3 +58,45 @@ func (sal *sanguisugaAnimeList) Execute(ctx context.Context, f *flag.FlagSet, _
return subcommands.ExitSuccess
}
+
+type sanguisugaAnimeTrack struct{}
+
+func (*sanguisugaAnimeTrack) Name() string { return "anime-track" }
+func (*sanguisugaAnimeTrack) Synopsis() string {
+ return "Add a new anime to the list of anime to track."
+}
+func (*sanguisugaAnimeTrack) Usage() string {
+ return `anime-track <title> <dataDir>:
+ Add a new anime to the tracklist for XDCC.`
+}
+
+func (sal *sanguisugaAnimeTrack) SetFlags(f *flag.FlagSet) {}
+
+func (sal *sanguisugaAnimeTrack) Execute(ctx context.Context, f *flag.FlagSet, _ ...interface{}) subcommands.ExitStatus {
+ if f.NArg() != 2 {
+ fmt.Println(sal.Usage())
+ return subcommands.ExitFailure
+ }
+
+ show := Show{
+ Title: f.Arg(0),
+ DiskPath: f.Arg(1),
+ Quality: "1080p",
+ }
+
+ data, err := json.Marshal(show)
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ resp, err := http.Post(fmt.Sprintf("%s/api/anime/track", *sanguisugaURL), "application/json", bytes.NewBuffer(data))
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ if resp.StatusCode != http.StatusOK {
+ log.Fatal(web.NewError(http.StatusOK, resp))
+ }
+
+ return subcommands.ExitSuccess
+}