diff options
| author | Jan Sucan <jan@jansucan.com> | 2025-09-14 17:10:23 +0200 |
|---|---|---|
| committer | Jan Sucan <jan@jansucan.com> | 2025-09-14 21:18:59 +0200 |
| commit | 9d89965b0661d1968151d9b646148b6a71209705 (patch) | |
| tree | 6da0620222dabbf8dd9c038af305a174d4c68868 /ch23/23_a_1/PodMain.hs | |
| parent | ad4cf7db4cd61d01f1e2191d1d69edd5916d6e88 (diff) | |
23_a_2: Add solution
Diffstat (limited to 'ch23/23_a_1/PodMain.hs')
| -rw-r--r-- | ch23/23_a_1/PodMain.hs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/ch23/23_a_1/PodMain.hs b/ch23/23_a_1/PodMain.hs new file mode 100644 index 0000000..5e58ec4 --- /dev/null +++ b/ch23/23_a_1/PodMain.hs @@ -0,0 +1,37 @@ +{-- snippet imports --}
+module PodMain where
+
+import PodDownload
+import PodDB
+import PodTypes
+import Database.HDBC
+
+{-- snippet workerFuncs --}
+addUrl dbh url =
+ do addPodcast dbh pc
+ commit dbh
+ where pc = Podcast {castId = 0, castURL = url}
+
+update :: IConnection conn => conn -> (String -> IO ()) -> IO ()
+update dbh logf =
+ do pclist <- getPodcasts dbh
+ mapM_ procPodcast pclist
+ logf "Update complete."
+ where procPodcast pc =
+ do logf $ "Updating from " ++ (castURL pc)
+ updatePodcastFromFeed dbh pc
+
+download dbh logf =
+ do pclist <- getPodcasts dbh
+ mapM_ procPodcast pclist
+ logf "Download complete."
+ where procPodcast pc =
+ do logf $ "Considering " ++ (castURL pc)
+ episodelist <- getPodcastEpisodes dbh pc
+ let dleps = filter (\ep -> epDone ep == False)
+ episodelist
+ mapM_ procEpisode dleps
+ procEpisode ep =
+ do logf $ "Downloading " ++ (epURL ep)
+ getEpisode dbh ep
+{-- /snippet workerFuncs --}
|
