RubyGem «паровой конденсатор» — почему я могу получить только некоторые профили?

У меня есть IRC-бот, связанный с играми (точнее, с Team Fortress 2). Я хотел бы реализовать в нем некоторые функции, которые взаимодействуют с API Steam. Я использую паровой конденсатор. Я возился с IRB, пытаясь понять, как это работает. Одна вещь, которую я не могу понять, это то, почему я могу получить некоторые профили из сообщества Steam. Хотя некоторые профили приводят к ошибке «XML не может быть проанализирован», и я понятия не имею, почему.

Небольшая информация для тех, кто не знает/не имеет опыта работы в сообществе Steam.

  • Профиль может быть установлен как «частный». Это означает, что только друзья могут видеть профиль, однако я могу получить некоторые общедоступные профили, некоторые общедоступные я не могу получить
  • A steam profile can be identified with mainly 3 different ID's
    • SteamID: Looks something like STEAM_0:0:16866618
    • SteamID64: выглядит примерно так: 76561197993998964
    • CustomURL: я могу установить «CustomURL» по своему выбору. Например, я установил booyakah, так как это мой игровой псевдоним. Это даст мне этот URL-адрес моего профиля сообщества Steam http://steamcommunity.com/id/booyakah/ вместо http://steamcommunity.com/profiles/76561197993998964. .

Как уже говорилось, некоторые профили прекрасно работают при получении своего профиля с помощью любого решения (поиск 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> 

Я не могу понять, почему некоторые профили можно получить, а некоторые нет. Из того, что я вижу, не имеет значения, является ли профиль общедоступным или нет. Частные профили вообще не могут быть получены по понятным причинам. Однако можно получить только некоторые общедоступные профили.

Я в недоумении здесь, любая помощь или идеи очень ценятся


person maetthew    schedule 17.12.2012    source источник


Ответы (1)


Это известная проблема, и она уже решена в этой фиксации в master ветвь рубинового самоцвета Steam Condenser.

У меня еще не было времени выпустить новую версию драгоценного камня. Так что не стесняйтесь использовать код от master.

person Koraktor    schedule 17.12.2012