working on pulling settings from file using viper, finished basic RSS feed and cron job
This commit is contained in:
48
engine/cronJobs.go
Normal file
48
engine/cronJobs.go
Normal file
@@ -0,0 +1,48 @@
|
||||
package engine
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/asdine/storm"
|
||||
Storage "github.com/deranjer/goTorrent/storage"
|
||||
"github.com/mmcdole/gofeed"
|
||||
"github.com/robfig/cron"
|
||||
)
|
||||
|
||||
//InitializeCronEngine initializes and starts the cron engine so we can add tasks as needed, returns pointer to the engine
|
||||
func InitializeCronEngine() *cron.Cron { //TODO add a cron to inspect cron jobs and log the outputs
|
||||
c := cron.New()
|
||||
c.Start()
|
||||
return c
|
||||
}
|
||||
|
||||
//RefreshRSSCron refreshes all of the RSS feeds on an hourly basis
|
||||
func RefreshRSSCron(c *cron.Cron, db *storm.DB) {
|
||||
c.AddFunc("@hourly", func() {
|
||||
RSSFeedStore := Storage.FetchRSSFeeds(db)
|
||||
singleRSSTorrent := Storage.SingleRSSTorrent{}
|
||||
newFeedStore := Storage.RSSFeedStore{ID: RSSFeedStore.ID} //creating a new feed store just using old one to parse for new torrents
|
||||
fp := gofeed.NewParser()
|
||||
for _, singleFeed := range RSSFeedStore.RSSFeeds {
|
||||
feed, err := fp.ParseURL(singleFeed.URL)
|
||||
if err != nil {
|
||||
fmt.Println("Unable to parse URL", singleFeed.URL, err)
|
||||
}
|
||||
for _, RSSTorrent := range feed.Items {
|
||||
singleRSSTorrent.Link = RSSTorrent.Link
|
||||
singleRSSTorrent.Title = RSSTorrent.Title
|
||||
singleRSSTorrent.PubDate = RSSTorrent.Published
|
||||
singleFeed.Torrents = append(singleFeed.Torrents, singleRSSTorrent)
|
||||
|
||||
}
|
||||
newFeedStore.RSSFeeds = append(newFeedStore.RSSFeeds, singleFeed)
|
||||
}
|
||||
Storage.UpdateRSSFeeds(db, newFeedStore) //Calling this to fully update storage will all rss feeds
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
//LogCronStatus prints out the status of the cron jobs to the log
|
||||
func LogCronStatus(c *cron.Cron) {
|
||||
|
||||
}
|
Reference in New Issue
Block a user