diff --git a/app/ZborBielawa.hs b/app/ZborBielawa.hs index d84c85c..34b26b6 100644 --- a/app/ZborBielawa.hs +++ b/app/ZborBielawa.hs @@ -27,12 +27,11 @@ extractNestedLinksWithText xpathCondition = proc url -> do returnA -< (uriFixed, text) -extractRecords = proc x -> do - (a, b) <- extractLinksWithText "//aside[@class='widget widget_maxmegamenu']//a[@class='mega-menu-link']" -< x -- pary adres-tytuł podstrony - (a', b') <- (extractLinksWithText "//aside[@class='widget widget_maxmegamenu']//a[@class='mega-menu-link']") -< a -- pobieramy podstronę i kolejne podstrony z menu - a'' <- (extractNestedLinksWithText "//big[a[contains(@href,'.pdf')][img]]") -< a' -- pobieramy stronę z adresu URL i wyciągamy linki z tej strony pasujące do wyrażenia XPathowego - returnA -< ((a'', b'), b) - -- ostatecznie wyjdą krotki (((adres URL, tytuł nr-u), tytuł podstrony 2), tytuł podstrony 1) +extractRecords = proc startUrl -> do + (catUrl, catText) <- extractLinksWithText "//aside[@class='widget widget_maxmegamenu']//a[@class='mega-menu-link']" -< startUrl -- pary adres-tytuł podstrony + (collUrl, collText) <- (extractLinksWithText "//aside[@class='widget widget_maxmegamenu']//a[@class='mega-menu-link']") -< catUrl -- pobieramy podstronę kategorii i kolejne podstrony z menu + (relUrl, relText) <- (extractNestedLinksWithText "//big[a[contains(@href,'.pdf')][img]]") -< collUrl -- pobieramy stronę z wydaniami z danej kolekcji i linki do PDFów + returnA -< (((relUrl, relText), collText), catText) -- ostatecznie wyjdą krotki (((adres URL PDFa wydania, tytuł wydania), tytuł zbioru), tytuł kategorii) -- ... a tutaj te krotki przerabiamy do docelowej struktury ShadowItem toShadowItem :: (((String, String), String), String) -> ShadowItem @@ -48,7 +47,7 @@ toShadowItem (((url, releaseTitle), collectionTitle), categoryTitle) = getDate yearlyTitle = - case yearlyTitle =~~ "/.+(19[0-9][0-9]|20[0-9][0-9])/" :: Maybe [[String]] of + case yearlyTitle =~~ "/(19[0-9][0-9]|20[0-9][0-9])/" :: Maybe [[String]] of Just [[_, year]] -> year -- otherwise -> error $ "unexpected yearlyTitle: " ++ yearlyTitle otherwise -> yearlyTitle