Session / Poller
MercariSession
from mercari import MercariSession, default_session_path
s = MercariSession()
s.save(default_session_path())
s2 = MercariSession.load(default_session_path())
has_auth()/is_expired()— Bearer の有効性client_headers()— groundup 必須ヘッダ(X-APP-VERSIONは versionCode)
Poller
フィールド名は interval(秒)。state_path / log_path は省略時も書き込み可能な既定パスになります。
from pathlib import Path
from mercari import MercariSearchPoller, PollerConfig
data = Path("./poller_data")
cfg = PollerConfig(
keyword="iPhone",
category_id=3833, # or [3833]
interval=5.0,
dry_run=True,
state_path=str(data / "state.json"),
log_path=str(data / "polls.jsonl"),
)
poller = MercariSearchPoller(cfg)
def on_new(items, meta):
print("new", len(items))
poller.on_new_items = on_new
poller.poll_once()
# poller.run_forever()
長時間 run_forever() する場合、各 poll_once の前に期限切れ Bearer を落として DPoP ゲストを再ピンします。
CLI:
python -m mercari.poller --once --dry-run -c 3833 --sort 新しい順
DealWatcher(任意の便利クラス)
よくある「相場見て安ければ通知」のレシピ。必須ではなく、本命は examples/18_compose_cheap_webhook.py の合成です。
python -m mercari.deal_watcher --once --dry-run -c 3833 -k iPhone