This repository has been archived on 2026-02-24. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
market/scrape/product/extractors/stickers.py
giles 6271a715a1
Some checks failed
Build and Deploy / build-and-deploy (push) Has been cancelled
feat: initialize market app with browsing, product, and scraping code
Split from coop monolith. Includes:
- Market/browse/product blueprints
- Product sync API
- Suma scraping pipeline
- Templates for market, browse, and product views
- Dockerfile and CI workflow for independent deployment
2026-02-09 23:16:34 +00:00

31 lines
876 B
Python

from __future__ import annotations
from typing import Dict, List
from bs4 import BeautifulSoup
from ..registry import extractor
@extractor
def ex_stickers(soup: BeautifulSoup, url: str) -> Dict:
"""
<div class="stickers">
<span class="sticker xxx"></span>
...
</div>
"""
root = soup.select_one("div.stickers")
if not root:
return {"stickers": []}
stickers: List[str] = []
seen = set()
for sp in root.select("span.sticker"):
classes = sp.get("class") or []
extras = [c.strip() for c in classes if c and c.lower() != "sticker"]
data_name = (sp.get("data-sticker") or "").strip()
if data_name:
extras.append(data_name)
for x in extras:
if x and x not in seen:
seen.add(x)
stickers.append(x)
return {"stickers": stickers}