找回密码
 加入我们
搜索
      
查看: 13360|回复: 150

[显卡] 法国NVIDIA官网购入5090 FE

  [复制链接]
发表于 2025-6-19 22:33 | 显示全部楼层
yuyuyu 发表于 2025-6-19 22:32
人多用国内visa卡后面可能被砍单。。。我在荷兰抢了五六张,后面被网站识别到国内信用卡后面的单都被砍了。 ...


渠道只有人少的时候才有价值,大家都知道后,渠道直接被创飞。。。
发表于 2025-6-22 18:11 | 显示全部楼层
法国监视库存api:https://api.store.nvidia.com/par ... 90&locale=fr-fr
德国监视库存api:https://api.store.nvidia.com/par ... 90&locale=de-de

看is_active为true代表有货了。
发表于 2025-6-23 12:45 | 显示全部楼层
分享一段ai写的自动监控和使用pushdeer给手机发信息提醒的代码。
需要事先按照https://www.pushdeer.com/official.html的指示申请key和安装pushdeer的app。
祝愿人人都有5090fe。


  1. import requests
  2. import time
  3. import random
  4. import json

  5. # --- PushDeer 配置 ---
  6. PUSHDEER_KEY = "按照https://www.pushdeer.com/official.html申请key和安装app" # 你的 PushDeer Key
  7. PUSHDEER_API_URL = "https://api2.pushdeer.com/message/push" # PushDeer 公共服务器地址

  8. def send_pushdeer_notification(product_info):
  9.     """
  10.     通过 PushDeer 发送消息通知
  11.     :param product_info: 包含产品信息的字典,现在会包含更多的上下文信息
  12.     """
  13.     # 提取更具体的产品信息用于消息
  14.     sku = product_info.get('fe_sku', product_info.get('monitored_sku', 'N/A'))
  15.     locale = product_info.get('locale', product_info.get('monitored_locale', 'N/A'))
  16.     price = product_info.get('price', 'N/A')
  17.     product_url = product_info.get('product_url', 'N/A')
  18.     product_name = product_info.get('monitored_name', 'N/A')

  19.     message_title = f"NVIDIA 产品库存更新:{sku} ({locale}) 已可用!"
  20.     message_text = (
  21.         f"产品 {product_name} ({locale}) 已变为可用!\n"
  22.         f"价格: {price}\n"
  23.         f"产品URL: {product_url}"
  24.     )

  25.     payload = {
  26.         "pushkey": PUSHDEER_KEY,
  27.         "text": message_title,
  28.         "desp": message_text,
  29.         "type": "markdown"
  30.     }

  31.     try:
  32.         response = requests.post(PUSHDEER_API_URL, data=payload, timeout=5)
  33.         response.raise_for_status()

  34.         pushdeer_response = response.json()
  35.         if pushdeer_response.get("code") == 0:
  36.             print(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] PushDeer 消息发送成功!")
  37.         else:
  38.             print(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] PushDeer 消息发送失败: {pushdeer_response.get('message', '未知错误')}")
  39.             print(f"PushDeer 原始响应: {json.dumps(pushdeer_response, ensure_ascii=False)}")
  40.     except requests.exceptions.RequestException as e:
  41.         print(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] 发送 PushDeer 消息时网络错误: {e}")
  42.     except json.JSONDecodeError:
  43.         print(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] PushDeer 响应不是有效 JSON。")
  44.         if 'response' in locals() and response.text: # 确保response对象和text存在
  45.              print(f"响应内容: {response.text[:200]}...")
  46.     except Exception as e:
  47.         print(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] 发送 PushDeer 消息时发生未知错误: {e}")

  48. # --- 要监控的产品列表 ---
  49. # 每个字典代表一个需要监控的产品配置
  50. PRODUCTS_TO_MONITOR = [
  51.     {
  52.         "base_url": "https://api.store.nvidia.com/partner/v1/feinventory",
  53.         "skus": "LCFEGF50LD90",
  54.         "locale": "fr-fr",
  55.         "name": "RTX 5090 Founders Edition (法国)" # 可以添加一个友好的名称以便识别
  56.     },
  57.     {
  58.         "base_url": "https://api.store.nvidia.com/partner/v1/feinventory",
  59.         "skus": "PROFESHOP5090", # 新增的SKU
  60.         "locale": "de-de",       # 新增的区域
  61.         "name": "RTX 5090 Founders Edition (德国)" # 可以添加一个友好的名称以便识别
  62.     }
  63. ]

  64. # --- HTTP 请求的通用 Headers ---
  65. headers = {
  66.     "Accept": "*/*",
  67.     "Accept-Encoding": "gzip, deflate, br, zstd",
  68.     "Accept-Language": "zh-CN,zh-TW;q=0.9,zh;q=0.8,en;q=0.7",
  69.     "Origin": "https://marketplace.nvidia.com",
  70.     "Referer": "https://marketplace.nvidia.com/",
  71.     "Sec-Fetch-Dest": "empty",
  72.     "Sec-Fetch-Mode": "cors",
  73.     "Sec-Fetch-Site": "same-site",
  74.     "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36"
  75. }

  76. print("开始持续监控 NVIDIA 产品库存...")
  77. response = requests.post(PUSHDEER_API_URL, data={"pushkey": PUSHDEER_KEY, "text": "监控开始"}, timeout=5)
  78. response.raise_for_status()

  79. while True:
  80.     for product_config in PRODUCTS_TO_MONITOR:
  81.         monitor_url = product_config["base_url"]
  82.         monitor_skus = product_config["skus"]
  83.         monitor_locale = product_config["locale"]
  84.         product_name = product_config.get("name", f"{monitor_skus} ({monitor_locale})") # 获取友好的产品名称

  85.         params = {
  86.             "status": "1",
  87.             "skus": monitor_skus,
  88.             "locale": monitor_locale
  89.         }

  90.         print(f"\n[{time.strftime('%Y-%m-%d %H:%M:%S')}] 正在检查产品: {product_name}...")

  91.         try:
  92.             response = requests.get(monitor_url, params=params, headers=headers, timeout=10)

  93.             if response.status_code == 200:
  94.                 try:
  95.                     data = response.json()

  96.                     if data and data.get("success") and "listMap" in data and len(data["listMap"]) > 0:
  97.                         product_data_from_api = data["listMap"][0]
  98.                         is_active = product_data_from_api.get("is_active")

  99.                         print(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] {product_name} - is_active: {is_active}")

  100.                         if is_active == "true":
  101.                             print(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] {product_name} - is_active 为 true,发送 PushDeer 消息!")
  102.                             # 组合产品信息,以便通知中包含 SKU 和区域
  103.                             notification_data = {
  104.                                 **product_data_from_api, # API返回的信息
  105.                                 "monitored_sku": monitor_skus, # 额外加上我们监控的SKU和区域,以防API返回的FE_SKU不同
  106.                                 "monitored_locale": monitor_locale,
  107.                                 "monitored_name": product_name
  108.                             }
  109.                             send_pushdeer_notification(notification_data)
  110.                             # 如果您希望每个产品只通知一次后就停止监控,可以在这里添加逻辑
  111.                             # 例如,从 PRODUCTS_TO_MONITOR 列表中移除这个产品,或者设置一个已通知的标志。
  112.                             # 为了演示持续监控,这里不添加 break 或退出。
  113.                         else:
  114.                             print(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] {product_name} - is_active 为 false。")
  115.                     else:
  116.                         print(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] {product_name} - JSON 响应格式不符合预期或 listMap 为空。")
  117.                         if data:
  118.                             print(f"原始响应数据: {json.dumps(data, ensure_ascii=False)}")

  119.                 except json.JSONDecodeError:
  120.                     print(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] {product_name} - 响应不是有效的 JSON 格式。")
  121.                     print(f"响应内容: {response.text[:200]}...")
  122.                 except KeyError as ke:
  123.                     print(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] {product_name} - JSON 数据缺少预期的键: {ke}")
  124.                     if data:
  125.                         print(f"原始响应数据: {json.dumps(data, ensure_ascii=False)}")

  126.             else:
  127.                 print(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] {product_name} - 请求失败,状态码: {response.status_code}")
  128.                 print(f"响应内容: {response.text[:200]}...")

  129.         except requests.exceptions.RequestException as e:
  130.             print(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] {product_name} - 网络请求发生错误: {e}")
  131.         except Exception as e:
  132.             print(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] {product_name} - 发生未知错误: {e}")

  133.     # 随机延迟 30 到 60 秒
  134.     sleep_time = random.uniform(30, 60)
  135.     print(f"\n[{time.strftime('%Y-%m-%d %H:%M:%S')}] 完成一轮所有产品的检查。等待 {sleep_time:.2f} 秒后进行下一次检查...")
  136.     time.sleep(sleep_time)
复制代码


pushdeer.jpg
发表于 2025-6-26 17:03 | 显示全部楼层
发表于 2025-6-27 20:34 | 显示全部楼层
本帖最后由 我輩樹である 于 2025-6-27 20:37 编辑

都拦截了。渠道被撸爆了,大家一起沉船了。
发表于 2025-6-28 20:29 | 显示全部楼层
E50265DE25B6634A1813A1DA9199F434.png
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

Archiver|手机版|小黑屋|Chiphell ( 沪ICP备12027953号-5 )沪公网备310112100042806 上海市互联网违法与不良信息举报中心

GMT+8, 2025-6-29 22:51 , Processed in 0.009449 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2007-2024 Chiphell.com All rights reserved.

快速回复 返回顶部 返回列表