From 4d891e1735d737605fb3ea57cd7c10a03de4a09a Mon Sep 17 00:00:00 2001 From: Aleksy Wroblewski Date: Thu, 18 Mar 2021 19:54:12 +0100 Subject: [PATCH] Include file dates and sizes in the ShadowItems --- app/podkarpacki.hs | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/app/podkarpacki.hs b/app/podkarpacki.hs index 3e93c89..e8b102f 100644 --- a/app/podkarpacki.hs +++ b/app/podkarpacki.hs @@ -12,30 +12,34 @@ import Text.Regex.Posix import Text.Printf --- TODO : czyscic \n\t z tytulu extractRecords = extractLinksWithText "//a[contains(@href, '.pdf')]" -- pary adres-tytuł - -- >>> first (extractLinksWithText "//li/a[contains(@href,'.pdf')]") -- pobieramy stronę z adresu URL i wyciągamy linki z tej strony pasujące do wyrażenia XPathowego - >>> second (arr $ replace "\n\t\t\t\t\t\t\t\t\t\t\t" "") - >>> second (arr $ replace "\n\t\t\t\t\t\t\t\t\t\t" "") -- czyścimy drugi element pary, czyli tytuł z niepotrzebnych białych znaków - -- >>> first (arr ((++"tr") . init)) -- modyfikujemy pierwszy element pary, czyli adres URL - -- ostatecznie wyjdą trójki ((adres URL, tytuł artykułu), tytuł rocznika) + >>> second (arr $ replace "\n\t\t\t\t\t\t\t\t\t\t\t" "") -- czyścimy drugi element pary, czyli tytuł z niepotrzebnych białych znaków + >>> second (arr $ replace "\n\t\t\t\t\t\t\t\t\t\t" "") -- czyścimy drugi element pary, czyli tytuł z niepotrzebnych białych znaków -- ... a tutaj te trójki przerabiamy do docelowej struktury ShadowItem toShadowItem :: (String, String) -> ShadowItem toShadowItem (url, articleTitle) = (defaultShadowItem url title) { - originalDate = Nothing, + originalDate = extractMonthAndYear title, itype = "periodical", format = Just "pdf", - finalUrl = url + finalUrl = url, + description = extractFileSize title } where title = articleTitle -getDate url = - case url =~~ "/(19[0-9][0-9]|20[0-9][0-9])/" :: Maybe [[String]] of - Just [[_, year]] -> year - otherwise -> error $ "unexpected url: " ++ url +extractMonthAndYear :: String -> Maybe String +extractMonthAndYear n = + case n =~~ ("[a-z]* (1[6789]|20)[0-9][0-9]" :: String) of + Just year -> Just year + otherwise -> Nothing + +extractFileSize :: String -> Maybe String +extractFileSize n = + case n =~~ ("([0-9]*)\\.([0-9]*) (B|kB|MB)" :: String) of + Just fileSize -> Just fileSize + otherwise -> Nothing main = do let start = "http://podkarpacki.civitaschristiana.pl/formacja/zeszyty-formacyjne/" @@ -44,5 +48,5 @@ main = do lname="Podkarpacki", abbrev="podk", lLevel=0, - webpage="http://podkarpacki.civitaschristiana.pl"} + webpage=start} extractItemsStartingFromUrl shadowLibrary start (extractRecords >>> arr toShadowItem)