diff options
| author | Xe Iaso <me@xeiaso.net> | 2023-08-13 11:53:55 -0400 |
|---|---|---|
| committer | Xe Iaso <me@xeiaso.net> | 2023-08-13 11:53:58 -0400 |
| commit | 7c61f7211f498f119e9848177748326da20b811a (patch) | |
| tree | 46c4166a1799d7e01a647916bed077ed22ed1e8f /cmd/x | |
| parent | 07cd5a82210a34ed71ca40057d4bf68cd2d70459 (diff) | |
| download | x-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.go | 1 | ||||
| -rw-r--r-- | cmd/x/sanguisuga.go | 48 |
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 +} |
