diff options
| author | unwox <me@unwox.com> | 2025-05-25 21:20:28 +0600 |
|---|---|---|
| committer | unwox <me@unwox.com> | 2025-05-25 21:20:36 +0600 |
| commit | 3a1b9d39ff109d9b7c92c0283e262e625a00a39a (patch) | |
| tree | ef14e2c8e7f857a930febef60cba88488aaa0722 /parser | |
| parent | 3109fdd4ec670eed45068b2b16f12f286d788482 (diff) | |
add batatcha parser
Diffstat (limited to 'parser')
| -rw-r--r-- | parser/batatcha.fnl | 56 | ||||
| -rw-r--r-- | parser/ozchai.fnl | 5 |
2 files changed, 57 insertions, 4 deletions
diff --git a/parser/batatcha.fnl b/parser/batatcha.fnl new file mode 100644 index 0000000..0d88ee0 --- /dev/null +++ b/parser/batatcha.fnl @@ -0,0 +1,56 @@ +(import-macros {: map} :lib.macro) + +(local parser (require :parser.parser)) +(local array (require :lib.array)) +(local http (require :lib.http)) +(local number (require :lib.number)) +(local fetcher (require :fetcher)) +(local json (require :vendor.json)) + +(fn format-url [path page] + (.. "https://store.tildaapi.com/api/getproductslist/" + "?storepartuid=" path + "&slice=" page + "&recid=995758736" + "&c=1748185006948" + "&getparts=true" + "&getoptions=true" + "&size=36")) + +(fn destruct-response [response] + {:items (. (json.decode response) :products)}) + +(fn normalize [product] + (local gallery (json.decode product.gallery)) + (local weight (or (parser.guess-weight (. product.editions 1 :Вес) ["г"]) + (number.string->number (. product.editions 1 :Вес)))) + (local price (number.string->number (. product.editions 1 :price))) + (var volume (parser.guess-volume product.title)) + + {:site "batatcha" + :url product.url + :title product.title + :description product.descr + :image (if (< 0 (# gallery)) (. gallery 1 :img) "") + :weight weight + :volume volume + :price price + :price-per (if (and price weight (< 0 weight)) + (/ (math.ceil (* (/ price weight) 10)) 10) + nil) + :characteristics product.characteristics}) + +(fn products [] + (fetcher.from-json + [{:path "252209460212" :tags ["Посуда"]} + {:path "547479831241" :tags ["Шу пуэр"]} + {:path "826048744931" :tags ["Улун"]} + {:path "979435309971" :tags ["Красный чай"]} + {:path "770446922881" :tags ["Зеленый чай"]} + {:path "770679255051" :tags ["Белый чай"]} + {:path "596866221302" :tags ["Тизан"]}] + format-url + destruct-response + normalize)) + +{:products products :title "батат абрикос земля мята" :url "https://batatcha.com"} diff --git a/parser/ozchai.fnl b/parser/ozchai.fnl index e59ddf0..40ead94 100644 --- a/parser/ozchai.fnl +++ b/parser/ozchai.fnl @@ -34,10 +34,7 @@ :url product.url :title product.title :description product.descr - ;; FIXME: parse all editions into different products - :image (if (< 0 (# gallery)) - (. gallery 1 :img) - "") + :image (if (< 0 (# gallery)) (. gallery 1 :img) "") :weight weight :volume volume :price price |
