55 lines
1.3 KiB
Go
55 lines
1.3 KiB
Go
|
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))
|
||
|
}
|