1

我有一个与游戏相关的 IRC 机器人(具体来说是《军团要塞 2》)。我想实现一些与 Steam API 通信的功能。我正在使用蒸汽冷凝器 gem。我一直在 IRB 中摆弄,试图了解它是如何工作的。我不明白的一件事是为什么我可以从 Steam 社区获取一些个人资料。虽然某些配置文件会导致“无法解析 XML”错误,但我不知道为什么。

给那些不知道/没有 Steam 社区经验的人一些信息。

  • 配置文件可以设置为“私人”。这意味着只有朋友可以看到个人资料,但是我可以检索一些公开的个人资料,一些公开的我无法检索
  • 蒸汽配置文件可以主要用 3 个不同的 ID 来识别
    • SteamID:看起来像STEAM_0:0:16866618
    • SteamID64:看起来像76561197993998964
    • CustomURL:我可以设置我选择的“CustomURL”。例如,我将我的设置为booyakah,因为这是我的游戏昵称。这将为我提供我的 Steam 社区资料http://steamcommunity.com/id/booyakah/而不是http://steamcommunity.com/profiles/76561197993998964的 URL 。

如前所述,一些配置文件可以很好地使用任一解决方案(搜索 SteamID、SteamID64 或 CustomURL)检索他们的配置文件。某些配置文件返回“无法解析 XML”错误,无论我如何尝试检索它。

这就是我正在尝试做的事情,以及出现问题时 IRB 的输出

1.9.3p194 :002 > player = SteamId.new("booyakah")
SteamCondenserError: XML data could not be parsed.
from /Users/ma/.rvm/gems/ruby-1.9.3-p194/gems/steam-condenser-1.2.1/lib/steam/community/steam_id.rb:296:in `fetch'
from /Users/ma/.rvm/gems/ruby-1.9.3-p194/gems/steam-condenser-1.2.1/lib/steam/community/cacheable.rb:42:in `block in method_added'
from /Users/ma/.rvm/gems/ruby-1.9.3-p194/gems/steam-condenser-1.2.1/lib/steam/community/cacheable.rb:104:in `new'
from (irb):2
from /Users/ma/.rvm/rubies/ruby-1.9.3-p194/bin/irb:16:in `<main>'

1.9.3p194 :003 > player = SteamId.from_steam_id("STEAM_0:0:16866618")
SteamCondenserError: XML data could not be parsed.
from /Users/ma/.rvm/gems/ruby-1.9.3-p194/gems/steam-condenser-1.2.1/lib/steam/community/steam_id.rb:296:in `fetch'
from /Users/ma/.rvm/gems/ruby-1.9.3-p194/gems/steam-condenser-1.2.1/lib/steam/community/cacheable.rb:42:in `block in method_added'
from /Users/ma/.rvm/gems/ruby-1.9.3-p194/gems/steam-condenser-1.2.1/lib/steam/community/cacheable.rb:104:in `new'
from /Users/ma/.rvm/gems/ruby-1.9.3-p194/gems/steam-condenser-1.2.1/lib/steam/community/steam_id.rb:196:in `from_steam_id'
from (irb):3
from /Users/ma/.rvm/rubies/ruby-1.9.3-p194/bin/irb:16:in `<main>'

和相同的示例,但是当它成功检索配置文件时

1.9.3p194 :005 > player = SteamId.new("s3")
=> #<SteamId:0x007fa3f35c2b48 @custom_url="s3", @xml_data={"steamID64"=>"76561197974944013", "steamID"=>"s3cr3t ***********!", "onlineState"=>"offline", "stateMessage"=>nil, "privacyState"=>"friendsonly", "visibilityState"=>"1", "avatarIcon"=>"http://media.steampowered.com/steamcommunity/public/images/avatars/a9/a9407f9a99d1e74bb0cabb3c23273c9b4bded906.jpg", "avatarMedium"=>"http://media.steampowered.com/steamcommunity/public/images/avatars/a9/a9407f9a99d1e74bb0cabb3c23273c9b4bded906_medium.jpg", "avatarFull"=>"http://media.steampowered.com/steamcommunity/public/images/avatars/a9/a9407f9a99d1e74bb0cabb3c23273c9b4bded906_full.jpg", "vacBanned"=>"0", "tradeBanState"=>"None", "isLimitedAccount"=>"0"}, @nickname="s3cr3t ***********!", @steam_id64=76561197974944013, @limited=false, @trade_ban_state="None", @vac_banned=false, @image_url="http://media.steampowered.com/steamcommunity/public/images/avatars/a9/a9407f9a99d1e74bb0cabb3c23273c9b4bded906", @online_state="offline", @privacy_state="friendsonly", @state_message=nil, @visibility_state=1, @fetch_time=2012-12-17 15:13:17 +0100> 

我无法弄清楚为什么有些配置文件可以被检索,而有些则不能。据我所知,个人资料是否公开并不重要。由于显而易见的原因,根本无法检索私人配置文件。但是,只能检索一些公共配置文件。

我在这里不知所措,非常感谢任何帮助或想法

4

1 回答 1

2

这是一个已知问题,并且已在Steam Condenser 的 Ruby gem 分支中的此提交中解决。master

我还没有时间发布 gem 的新版本。因此,请随意使用master.

于 2012-12-17T21:32:49.267 回答