From 946f72833f0413a38ffae5fa322d3841ded3d927 Mon Sep 17 00:00:00 2001 From: Piotr Kopycki Date: Thu, 8 Apr 2021 00:06:40 +0200 Subject: [PATCH] Robot file added --- app/biuletynbezpiecznachemia.hs | 43 +++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 app/biuletynbezpiecznachemia.hs diff --git a/app/biuletynbezpiecznachemia.hs b/app/biuletynbezpiecznachemia.hs new file mode 100644 index 0000000..1c37551 --- /dev/null +++ b/app/biuletynbezpiecznachemia.hs @@ -0,0 +1,43 @@ + +{-# LANGUAGE Arrows, NoMonomorphismRestriction #-} +import ShadowLibrary.Core + +import Text.XML.HXT.Core +import Text.XML.HXT.XPath +-- import Text.XML.HXT.Curl +import Data.List +import Data.List.Utils (replace) + +import Text.Regex.Posix +import Text.Printf + + +extractRecords = extractLinksWithText "//a[@class='plik']" -- pary adres-tytuł + >>> second (arr $ replace "\r\n " " ") -- czyścimy drugi element pary, czyli tytuł z niepotrzebnych białych znaków + -- ostatecznie wyjdą dwójki ((adres URL, tytuł artykułu) + +-- ... a tutaj te trójki przerabiamy do docelowej struktury ShadowItem +toShadowItem :: (String, String) -> ShadowItem +toShadowItem (url, articleTitle) = + (defaultShadowItem url title) { + originalDate = Just date, + itype = "periodical", + format = Just "pdf", + finalUrl = url + } + where title = articleTitle + date = getDate articleTitle + +getDate articleTitle = + case articleTitle =~~ "(19[0-9][0-9]|20[0-9][0-9])" :: Maybe [[String]] of + Just [[_, year]] -> year + otherwise -> error $ "unexpected articleTitle: " ++ articleTitle + + +main = do + let start = "https://www.pipc.org.pl/publikacje/biuletyn-bezpieczna-chemia" + let shadowLibrary = ShadowLibrary {logoUrl=Nothing, + lname="Biuletyn Bezpieczna Chemia - Publikacje - PIPC", + lLevel=0, + webpage=start} + extractItemsStartingFromUrl shadowLibrary start (extractRecords >>> arr toShadowItem)