Skip to content
炉石传说微信卡牌查询器
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
README.md
config.php
config.yaml
duowan_cards_crawl.php
getcardapi.php
strings.php
wxhearthstone.php

README.md

Hearth-Stone-Cards-DB-for-Wechat

《炉石传说:魔兽英雄传》是暴雪娱乐开发的首款休闲卡牌游戏,在魔兽的世界观基础上吸纳借鉴了万智牌的玩法思路,并加入了卡牌商店、冶炼铸造、PVP对战、竞技场/天梯系统,并已于1月24日全球同步公测。时值春节期间,宅在家休养的小伙伴中发展出了好几枚炉石玩家,闲来对战,不亦乐乎。

作为十年前就跳入日本集换式卡牌《游戏王》这个无底大坑的IT死宅,此前我曾使用新浪的应用托管服务(Sina App Engine,SAE)+PHP 开发过微信上的游戏王卡牌查询器,其目前已自然积累了近 5000 粉丝,每日活跃查询数百次。在去年年底网易内测炉石传说期间,我第一时间搞到了内测码,并在小玩几把之后为其迷醉,遂通宵一晚在游戏王微信卡查的基础上,新开发了一套微信上的炉石传说卡牌查询器。

微信搜索账号:myhearthstone,或查找公众号“炉石传说卡牌游戏”即可关注体验。(顺便说一下,游戏王那个的微信账号是ourocg)

现本人将这套炉石传说微信卡牌查询器的源码托管至 Github 予诸君分享。项目地址: https://github.com/xdash/Hearth-Stone-Cards-DB-for-Wechat

在此简单对目录结构和使用到的 SAE 服务做番介绍。

1、目录结构:

  • config.yaml - SAE 的项目配置文件,除了必填的项目名称和版本号外,启用我使用了 SAE 的cron组件。
  • wxheartstone.php - 主程序,微信公众平台调用的接口文件,定义了收到消息并处理返回的机制。
  • getcardapi.php - 供主程序调用的功能模块,专门负责查询卡片信息。
  • config.php - 参数配置文件,独立出来。
  • strings.php - 静态文本配置文件,抽取出来。
  • duowan_cards_crawl.php - 网站爬虫,独立工作,通过 cron 组件每隔72小时去多玩的炉石传说卡牌数据库抓取最新卡牌数据,并存入 MySQL 数据库。

2、安装/配置方法:

  1. 在 SAE 创建应用(假设名为 myapp)。
  2. 修改 config.yaml 文件,将 name 值改为上述创建的应用名称(myapp)。
  3. 在 SAE 的应用目录下创建名为“1”(不包含引号)的文件夹;将所有文件提交至该文件夹下(Windows 用户可参照SAE官方文档使用 TortoiseSVN 提交,我使用的则是 Mac+svnX)。
  4. 注册微信公众平台账号,切换到开发者模式,在接口调用文件处填写 http://myapp.sinaapp.com/wxhearthstone.php(注意此处 myapp 替换成你的应用名称),Token 处填写 config.php 中设定的 Token 值(可随意自定)。
  5. 至此微信配置完成。再在浏览器里运行一下 http://myapp.sinaapp.com/duowan_cards_crawl.php 去首次抓取一下卡牌数据吧。
  6. 全部OK。在微信上给账号发个关键词,就会返回相应的卡片查询结果。

3、使用的 SAE 服务:

这里除了托管服务之外,使用了 SAE 的 cron 和 MySQL 两个服务。

1)Cron(分布式定时服务)

文档:http://sae.sina.com.cn/?m=devcenter&catId=195

简单说就是可以每隔一定时间(或等到指定时间触发),自动去执行一个HTTP的脚本任务。使用场景如计算每日排行榜、特定节假日发送祝福等。这里我使用 cron 是因为炉石传说尚在公测期间,存在卡牌 Bug 并不断有新鲜卡牌推出,人工维护这套系统的成本比较高,于是我找到了多玩的卡牌数据库(谢天谢地),让爬虫自己去抓了。

2)MySQL 数据库

文档:http://sae.sina.com.cn/?m=devcenter&catId=192

SAE 默认并未开启 MySQL 功能,如要使用,需在后台点击初始化从而开启。标准的 phpMyAdmin 后台能快速可视化地创建和查看表结构。5GB的配额也足以满足小型产品的需要(对于我这种更是绰绰有余)。

SAE 提供了基于 MySQL 的 SaeMysql 类,只要是托管到 SAE 的应用,连接数据库时可以不必指定数据库名/用户名/密码,直接使用预定义常量即可:

  • 用户名  : SAE_MYSQL_USER
  • 密  码 : SAE_MYSQL_PASS
  • 主库域名 : SAE_MYSQL_HOST_M
  • 从库域名 : SAE_MYSQL_HOST_S
  • 端  口 : SAE_MYSQL_PORT
  • 数据库名 : SAE_MYSQL_DB

4、为什么使用 SAE?

  • 轻量级的应用托管和配套常规服务,使用 SAE 只需五分钟即可快速创建,十分钟内完成 Hello World 级的部署,极其简易。
  • 支持PHP/Java/Python。
  • 免费用户的云豆是有限制的,随着应用的运行会逐渐消耗,云豆用完需要付费充值。但 SAE 提供了开发者认证这套机制,只需达到并不苛刻的条件就能升级到中级/高级甚至资深开发者。获得认证的开发者可享受云豆补助及其他优惠条件。例如我现在已经是高级开发者认证,每月可补助1.5万云豆,完全使用不完了哈哈。
You can’t perform that action at this time.