FeedMonad/FeedMonad-demo/app/Main.hs

41 lines
1.2 KiB
Haskell

{-# LANGUAGE OverloadedStrings #-}
module Main where
import FeedMonad
import Data.Category
import Data.URL (URL(..), _URL)
import Database (FeedId(..))
import Middleware
import qualified Data.Set as S
import Data.Entry
import Data.List.Lens (prefixed)
import Control.Lens
myFeeds :: [ Category FeedId ]
myFeeds =
[ Category "Code"
[Leaf (FeedId (URL "https://github.com/feediron/feediron-recipes/commits/master.atom"))]
, Category "News"
[ Category "Yle"
[ Leaf (FeedId (URL "https://feeds.yle.fi/uutiset/v1/majorHeadlines/YLE_UUTISET.rss"))
, Leaf (FeedId (URL "https://feeds.yle.fi/uutiset/v1/recent.rss?publisherIds=YLE_UUTISET&concepts=18-147345"))
]
]
, Category "Programming"
[ Leaf (FeedId (URL "https://reddit.com/r/haskell.rss"))
, Leaf (FeedId (URL "https://discourse.dhall-lang.org/latest.rss"))
, Leaf (FeedId (URL "https://www.haskellforall.com/feeds/posts/default"))
]
]
myFilters :: Middleware
myFilters =
modifyScore (has (tags . ix (Tag "github"))) (+10) .
modifyScore (has (tags . ix (Tag "haskell"))) (+20) .
modifyTags (has (url . _URL . prefixed "tag:github.com")) (S.insert (Tag "github"))
main :: IO ()
main = do
defaultMain defaultConfig{feeds = myFeeds, filters = myFilters }