(import-macros {: map} :lib.macro) (local number (require :lib.number)) (local str (require :lib.string)) (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=1117084816" "&c=1759202174912" "&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 edition (. product.editions 1)) (local weight (number.string->number edition.Вес)) (local price (number.string->number product.price)) (local title (if (string.match product.title "/") (str.trim (. (str.split product.title "/") 2)) product.title)) ;; removing products with weight > 100: these are for buying in bulk. (when (and (~= product.quantity "0") weight (< weight 100)) {:site "thailandtea" :url product.url :title title :description product.text ;; FIXME: parse all editions into different products :image (if (< 0 (# gallery)) (. gallery 1 :img) "") :weight weight :volume 0 :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 "598539851691" :tags ["Шен пуэр"]} {:path "336610050931" :tags ["Шу пуэр"]} {:path "336610050931" :tags ["Хэй ча"]} {:path "301615446601" :tags ["Улун"]} {:path "563074948861" :tags ["Улун" "Габа"]} {:path "232469549561" :tags ["Красный чай"]} {:path "189665932031" :tags ["Белый чай"]}] format-url destruct-response normalize)) {:products products :title "HUBAR TEA" :url "https://thailand-tea.ru"}