1

私はゲームに関連する IRC ボットを持っています (具体的には Team Fortress 2)。Steam API と通信するいくつかの機能を実装したいと考えています。steam-condenser gemを使用しています。IRB がどのように機能するかを理解しようと、IRB をいじっています。私が理解できないことの 1 つは、Steam コミュニティからいくつかのプロファイルを取得できる理由です。一部のプロファイルでは「XML を解析できませんでした」というエラーが発生しますが、その理由はわかりません。

Steam コミュニティを知らない/未経験の方向けの情報です。

  • プロファイルは「非公開」に設定できます。友達だけがプロファイルを表示できることを意味しますが、一部の公開プロファイルを取得でき、一部の公開プロファイルは取得できません
  • 蒸気プロファイルは、主に 3 つの異なる ID で識別できます。
    • SteamID: STEAM_0:0:16866618のように見えます
    • SteamID64: 76561197993998964 のように見えます
    • CustomURL: 好きな "CustomURL" を設定できます。たとえば、これは私のゲームのニックネームであるため、booyakahに設定しました。これにより、http://steamcommunity.com/profiles/76561197993998964 ではなく、Steam コミュニティ プロフィール http://steamcommunity.com/id/booyakah/ の 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 に答える