95 lines
2.1 KiB
Go
95 lines
2.1 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/akyoto/color"
|
|
"github.com/animenotifier/notify.moe/arn"
|
|
)
|
|
|
|
func main() {
|
|
color.Yellow("Refreshing episode information for each anime.")
|
|
|
|
defer color.Green("Finished.")
|
|
defer arn.Node.Close()
|
|
|
|
if InvokeShellArgs() {
|
|
return
|
|
}
|
|
|
|
highPriority := []*arn.Anime{}
|
|
mediumPriority := []*arn.Anime{}
|
|
lowPriority := []*arn.Anime{}
|
|
|
|
for anime := range arn.StreamAnime() {
|
|
if anime.GetMapping("shoboi/anime") == "" {
|
|
continue
|
|
}
|
|
|
|
// The rest gets sorted by airing status
|
|
switch anime.Status {
|
|
case "current":
|
|
highPriority = append(highPriority, anime)
|
|
case "upcoming":
|
|
mediumPriority = append(mediumPriority, anime)
|
|
default:
|
|
lowPriority = append(lowPriority, anime)
|
|
}
|
|
}
|
|
|
|
switch queue {
|
|
case "high":
|
|
color.Cyan("High priority queue (%d):", len(highPriority))
|
|
refreshQueue(highPriority)
|
|
|
|
case "medium":
|
|
color.Cyan("Medium priority queue (%d):", len(mediumPriority))
|
|
refreshQueue(mediumPriority)
|
|
|
|
case "low":
|
|
color.Cyan("Low priority queue (%d):", len(lowPriority))
|
|
refreshQueue(lowPriority)
|
|
|
|
default:
|
|
color.Cyan("High priority queue (%d):", len(highPriority))
|
|
refreshQueue(highPriority)
|
|
|
|
color.Cyan("Medium priority queue (%d):", len(mediumPriority))
|
|
refreshQueue(mediumPriority)
|
|
|
|
color.Cyan("Low priority queue (%d):", len(lowPriority))
|
|
refreshQueue(lowPriority)
|
|
}
|
|
}
|
|
|
|
func refreshQueue(queue []*arn.Anime) {
|
|
for _, anime := range queue {
|
|
refresh(anime)
|
|
}
|
|
}
|
|
|
|
func refresh(anime *arn.Anime) {
|
|
fmt.Println(anime.ID, "|", anime.Title.Canonical, "|", anime.GetMapping("shoboi/anime"))
|
|
|
|
episodeCount := len(anime.Episodes())
|
|
availableEpisodeCount := anime.Episodes().AvailableCount()
|
|
|
|
err := anime.RefreshEpisodes()
|
|
|
|
if err != nil {
|
|
if strings.Contains(err.Error(), "missing a Shoboi ID") {
|
|
return
|
|
}
|
|
|
|
color.Red(err.Error())
|
|
} else {
|
|
faint := color.New(color.Faint).SprintFunc()
|
|
episodes := anime.Episodes()
|
|
|
|
fmt.Println(faint(episodes.HumanReadable()))
|
|
fmt.Printf("+%d episodes | +%d available (%d total)\n", len(episodes)-episodeCount, episodes.AvailableCount()-availableEpisodeCount, len(episodes))
|
|
println()
|
|
}
|
|
}
|