package main import ( "fmt" "time" "git.milar.in/milarin/adverr" ) func checkTorrents() { fmt.Println("checking torrents") start := time.Now() torrents, err := GetTorrents() if err != nil { fmt.Println(adverr.Wrap("retrieving torrents failed", err)) return } animeList, err := GetAnimeListByAnimeID() if err != nil { fmt.Println(adverr.Wrap("retrieving anime list failed", err)) return } // parse torrents parsedTorrentsByAnimeEp := ParseTorrentsByAnimeEp(torrents) // filter not on anime list animeListTorrents := FilterTorrentsByAnimeList(parsedTorrentsByAnimeEp, animeList) // filter essential properties essentialTorrents := FilterEssentialTorrents(animeListTorrents) // filter preferred properties preferredTorrents := GetTorrentsWithMaxPrioByAnimeEp(essentialTorrents) for animeEp, torrentPrio := range preferredTorrents { if IsCurrentlyDownloading(animeEp) { continue } if props, inCollection := GetAnimeEpProps(animeEp); inCollection && props.Priority > torrentPrio.Priority { continue } if err := DownloadTorrent(animeEp, torrentPrio.ParsedTorrent); err != nil { panic(err) // TODO error handling } } duration := time.Since(start) fmt.Printf("\ncheck took %s. sleeping for %s\n", duration.Truncate(time.Millisecond), (PollRate - duration).Truncate(time.Millisecond)) }