"""PayPay Flea Market search/detail helper (customer photos, non-enrollment).""" import json import re import sys import urllib.parse import _fetch def search(query, limit=30): """Return [(item_id, title, price)] from a PayPay flea-market search.""" h = _fetch.text("https://paypayfleamarket.yahoo.co.jp/search/" + urllib.parse.quote(query)) m = re.search(r'"items":\[(.*?)\]\}', h, re.S) if not m: return [] out = [] for blob in re.findall(r'\{"productID".*?\}', m.group(1)): try: d = json.loads(blob) except json.JSONDecodeError: continue out.append((d.get("productID"), d.get("productName"), d.get("price"))) if len(out) >= limit: break return out def item_images(item_id): """Return full-size image URLs for one PayPay flea-market item.""" h = _fetch.text("https://paypayfleamarket.yahoo.co.jp/item/" + item_id) urls = re.findall(r'https://auctions\.c\.yimg\.jp/images\.auctions\.yahoo\.co\.jp/image/[^"\\ ]+?\.jpg', h) seen = [] for u in urls: if u not in seen: seen.append(u) return seen if __name__ == "__main__": if sys.argv[1] == "search": for row in search(sys.argv[2]): print(row[0], "|", row[1], "|", row[2]) else: for u in item_images(sys.argv[2]): print(u)