Saleor Store
우리 컬렉션을 쇼핑하세요
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기PriceTrail — трекер цін супермаркетів з історією цін
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Трекер цін супермаркетів з історією цін: пошук товарів, картки з цінами й акціями, графік зміни ціни, перевірка «завищених» акцій. Працює як сайт і встановлюється на телефон (PWA). Зараз підтримується АТБ-Маркет (неофіційно), згодом — інші магазини.
Сайт: https://fima02.github.io/pricetrail/
Планувальник Windows (щодня 05:30) → scripts/daily.ps1 → scraper/scrape.js → site/data/*.json → git push → GitHub Actions → GitHub Pages
Ціни збираються з домашнього комп'ютера: сайт АТБ (Cloudflare) блокує запити з серверів GitHub (HTTP 403). GitHub лише публікує сайт після кожного push.
scraper/scrape.js збирає каталог atbmarket.com окремо для кожного міста зі scraper/cities.js. Асортимент і ціни залежать від магазину, тому в кожному місті береться один магазин — з найбільшим асортиментом (вибір зберігається в scraper/stores.json, його можна змінити вручну або перевибрати: node scraper/scrape.js --repick). Одне місто — ~4 хв, два міста збираються паралельно.
node scraper/scrape.js --city Хмельницькийscraper/groups.js — розділи («надкатегорії») для товарів: беруться з меню atbmarket.com, плюс ручні відповідності для категорій, яких у меню немає. Товари без відповідності потрапляють у розділ «Інше» — тоді додайте категорію в EXTRA.scripts/daily.ps1 — pull → збір → коміт → push. Журнал пишеться в daily.log.scripts/install-task.ps1 — реєструє щоденне завдання «ATB Price» у Планувальнику завдань.site/data/cities.json — список міст з даними (з координатами центрів).site/data/ukraine.json — контури областей України для мапи «Ціна в інших містах»: спрощені межі з geoBoundaries (UKR ADM1, дані OpenStreetMap, ліцензія ODbL), уже в проєкції сайту. Статичний файл, щодня не змінюється.site/data/compare/NN.json — ціни кожного товару в усіх містах (для порівняння на сторінці товару), розбиті за id % 100. Будує scraper/compare.js під час публікації (GitHub Actions) і після збору локально; у git не зберігається.site/data/cities/<місто>/extra.json — спільний каталог: товари, яких у місті немає, з цінами найближчого (по прямій між центрами міст) міста, де вони є (поле from). Будує scraper/fallback.js так само, як і порівняння; у git не зберігається.site/data/cities/<місто>/products.json — поточний каталог міста (для пошуку і карток). Товари, яких сьогодні немає в каталозі магазину, лишаються тут ще 30 днів (службове поле out); їхню ціну парсер звіряє зі сторінки товару (до 60 на місто за збір). На сайті наявність не показується.site/data/cities/<місто>/changes.json — що змінилося в останньому зборі порівняно з попереднім днем (стрічка «Що змінилося»: подешевшало, подорожчало, нові акції, акція закінчилась, нові товари). Будує scraper/changes.js.site/data/cities/<місто>/history/NN.json — історія цін міста, розбита на 100 файлів за id % 100. Зберігаються лише зміни: [дата, ціна] або [дата, ціна, ціна_без_акції] — товар у наявності; [дата, ціна, ціна_без_акції | null, 1] — товару немає в наявності, ціну взято зі сторінки товару (парсер перевіряє до 60 таких сторінок на місто за збір); [дата, null] — немає в наявності, ціна невідома. П'яте поле — ціна при оплаті карткою АТБ: [дата, ціна, null, 0, ціна_з_карткою].site/ — статичний сайт на чистому JS без збірки. Графік намальовано вручну через SVG.localStorage), подешевшання видно на сторінці «Обране» і на значку ♥. Системні сповіщення надсилає service worker (site/sw.js) через Periodic Background Sync — це працює в Chrome/Edge, коли сайт встановлено як застосунок; браузер сам вирішує, як часто перевіряти (приблизно раз на день).npm install
npm run scrape # зібрати ціни (~5–10 хв)
npm run serve # відкрити сайт на http://localhost:3000
powershell -ExecutionPolicy Bypass -File scripts\install-task.ps1
Далі все працює саме: щодня комп'ютер збирає ціни й пушить їх, а GitHub оновлює сайт. Якщо комп'ютер о 05:30 вимкнений, збір запуститься, щойно його увімкнуть.
Видалити завдання: Unregister-ScheduledTask -TaskName 'ATB Price'.
parseCards() у парсері.