From e8a8348c144fe79d99bb1e486e745456baea1d08 Mon Sep 17 00:00:00 2001 From: Vidhu Kant Sharma Date: Sun, 17 Jul 2022 20:25:53 +0530 Subject: added a seasonals command --- cmd/seasonals.go | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ mal/seasonals.go | 40 +++++++++++++++++++++++++++++++++++++ util/season.go | 50 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 150 insertions(+) create mode 100644 cmd/seasonals.go create mode 100644 mal/seasonals.go create mode 100644 util/season.go diff --git a/cmd/seasonals.go b/cmd/seasonals.go new file mode 100644 index 0000000..1e3eb20 --- /dev/null +++ b/cmd/seasonals.go @@ -0,0 +1,60 @@ +/* +macli - Unofficial CLI-Based MyAnimeList Client +Copyright © 2022 Vidhu Kant Sharma + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +package cmd + +import ( + // "os" + "fmt" + // "strings" + "github.com/MikunoNaka/macli/ui" + "github.com/MikunoNaka/macli/util" + "github.com/MikunoNaka/macli/mal" + + "github.com/spf13/cobra" +) + +// statusCmd represents the status command +var seasonalsCmd = &cobra.Command{ + Use: "seasonals", + Short: "Get seasonal animes", + Long: "" + + "" + + "", + + Run: func(cmd *cobra.Command, args []string) { + mal.Init() + currentSeason := util.GetCurrentSeason() + + res := mal.GetSeasonalAnime(currentSeason, "anime_score") + for _, i := range res { + fmt.Println(i.Title) + } + }, +} + + +func init() { + rootCmd.AddCommand(seasonalsCmd) + seasonalsCmd.Flags().IntVarP(&ui.PromptLength, "prompt-length", "l", 5, "Length of select prompt") + seasonalsCmd.Flags().BoolVarP(&queryOnlyMode, "query", "q", false, "Query only (don't update data)") + + seasonalsCmd.Flags().IntVarP(&mal.SearchLength, "results-length", "n", 10, "Amount of results to load") + seasonalsCmd.Flags().BoolVarP(&mal.SearchNSFW, "include-nsfw", "", false, "Include NSFW-rated items in results") + seasonalsCmd.Flags().IntVarP(&mal.SearchOffset, "results-offset", "o", 0, "Offset for the results") +} diff --git a/mal/seasonals.go b/mal/seasonals.go new file mode 100644 index 0000000..3d499fe --- /dev/null +++ b/mal/seasonals.go @@ -0,0 +1,40 @@ +/* +macli - Unofficial CLI-Based MyAnimeList Client +Copyright © 2022 Vidhu Kant Sharma + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +package mal + +import ( + "fmt" + "os" + "strconv" + a "github.com/MikunoNaka/MAL2Go/v4/anime" +) + +func GetSeasonalAnime(season a.Season, sort string) []a.Anime { + year := strconv.Itoa(season.Year) + fields := []string{"title", "id"} + fmt.Println(SearchLength, SearchOffset, SearchNSFW) + + res, err := animeClient.GetSeasonalAnime(year, season.Name, sort, SearchLength, SearchOffset, SearchNSFW, fields) + if err != nil { + fmt.Println("MyAnimeList reported error while getting seasonal animes:", err.Error()) + os.Exit(1) + } + + return res.Animes +} diff --git a/util/season.go b/util/season.go new file mode 100644 index 0000000..62645bf --- /dev/null +++ b/util/season.go @@ -0,0 +1,50 @@ +/* +macli - Unofficial CLI-Based MyAnimeList Client +Copyright © 2022 Vidhu Kant Sharma + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +package util + +import ( + "time" + "strconv" + a "github.com/MikunoNaka/MAL2Go/v4/anime" +) + + +func GetCurrentSeason() a.Season { + today := time.Now() + + month := today.Format("01") + year, _ := strconv.Atoi(today.Format("2006")) + + var season string + switch month { + case "01", "02", "03": + season = "winter" + case "04", "05", "06": + season = "spring" + case "07", "08", "09": + season = "summer" + case "10", "11", "12": + season = "fall" + } + + return a.Season { + Name: season, + Year: year, + } +} -- cgit v1.2.3