buff_enterprise_items_api.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. """
  2. BUFF饰品平台 API - 饰品价格查询接口
  3. API文档: /api/market/enterprise/items
  4. 功能: 查询饰品在售最低价格与求购最高价格
  5. 请求方式: GET
  6. 可用服务: 仅企业API
  7. 查询范围: 全站饰品
  8. 更新频率: include_sticker为0时,5分钟/次;include_sticker为1时,10分钟/次
  9. 请求限制: 100000次/月
  10. """
  11. import requests
  12. import json
  13. def get_market_items(
  14. token: str,
  15. game: str = "cs2",
  16. goods_id: str = None,
  17. include_sticker: int = 1
  18. ) -> dict:
  19. """
  20. 获取饰品在售最低价格与求购最高价格
  21. Args:
  22. token: 企业API访问令牌
  23. game: 游戏名称,默认 cs2
  24. goods_id: 饰品ID,不指定则返回全站饰品(约2万个)
  25. include_sticker: 是否包含印花饰品,默认 1
  26. Returns:
  27. API返回的JSON数据
  28. """
  29. base_url = "https://buff.163.com/api/market/enterprise/items"
  30. headers = {
  31. "Authorization": f"Bearer {token}",
  32. "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
  33. "Accept": "application/json"
  34. }
  35. params = {
  36. "game": game,
  37. "include_sticker": include_sticker
  38. }
  39. if goods_id:
  40. params["goods_id"] = goods_id
  41. try:
  42. print(f"请求URL: {base_url}")
  43. print(f"请求参数: {params}")
  44. response = requests.get(
  45. url=base_url,
  46. headers=headers,
  47. params=params,
  48. timeout=30
  49. )
  50. print(f"响应状态码: {response.status_code}")
  51. return response.json()
  52. except requests.exceptions.RequestException as e:
  53. print(f"请求错误: {e}")
  54. return {"error": str(e)}
  55. def main():
  56. """主函数"""
  57. # 企业API Token
  58. TOKEN = "2ce4f8fd95194fe090d53b785056de0b"
  59. print("=" * 60)
  60. print("BUFF饰品价格查询 (企业API)")
  61. print("=" * 60)
  62. # 示例1: 查询单个饰品价格
  63. print("\n【示例1: 查询单个饰品】")
  64. result1 = get_market_items(
  65. token=TOKEN,
  66. game="cs2",
  67. goods_id="33881", # AK-47 | 表面淬火
  68. include_sticker=1
  69. )
  70. print("\n返回数据:")
  71. print(json.dumps(result1, ensure_ascii=False, indent=2)[:3000])
  72. # 示例2: 查询全站饰品价格(注意:数据量很大,约2万个饰品)
  73. print("\n" + "=" * 60)
  74. print("【示例2: 查询全站饰品】")
  75. print("注意: 全站数据量约2万个饰品,这里只显示前1000字符")
  76. print("=" * 60)
  77. result2 = get_market_items(
  78. token=TOKEN,
  79. game="cs2",
  80. include_sticker=1
  81. )
  82. if isinstance(result2, dict) and "items" in result2:
  83. items_count = len(result2["items"])
  84. print(f"\n获取到 {items_count} 个饰品价格信息")
  85. # 显示前5个饰品
  86. print("\n前5个饰品:")
  87. for i, item in enumerate(result2["items"][:5], 1):
  88. print(f" {i}. {item.get('name', 'N/A')}")
  89. print(f" ID: {item.get('goods_id')}")
  90. print(f" 在售最低价: ¥{item.get('sell_min_price', 'N/A')}")
  91. print(f" 求购最高价: ¥{item.get('buy_max_price', 'N/A')}")
  92. print()
  93. else:
  94. print("\n返回数据:")
  95. print(json.dumps(result2, ensure_ascii=False, indent=2)[:2000])
  96. if __name__ == "__main__":
  97. main()