2017-04-20 13 views
2

CRMLメディアリソースからall:(最初の:item)を取得しようとしています。 Est RETSレポを使用しています。ここに私のルビーのサンプルファイルがあります:CRMLからバイナリデータを取得する

require 'rets' 

client = Rets::Client.new({ 
    login_url: 'url', 
    username: 'user', 
    password: 'password', 
    version: 'RETS/1.7.2' 
}) 

begin 
    client.login 
rescue => e 
    puts 'Error: ' + e.message 
    exit! 
end 

puts 'We connected! Lets get all the photos for a property...' 


photos = client.find (:first), { 
    search_type: 'Media', 
    class: 'Media', 
    query: '(MediaModificationTimestamp=2017-04-15+),(MediaType=Image)' 
} 


photo = open(photo = photos['MediaURL']) 
require 'base64' 
image = Base64.encode64(photo.read) 


File.open('property-1.gif', 'wb') do|f| 
    f.write(Base64.decode64(image)) 
end 

puts photos.length.to_s + ' photos saved.' 
client.logout 

しかし、私は26の代わりに1つのイメージを取得しています。私が最初の画像を取得した後で、これがすべての画像のすべての画像を取得する最良の方法であるかどうかは確かではありません。ここでは、あなたのクエリ部分で、一度に複数のリストのすべての画像を取得するためにカンマ区切りリストIDを与えて試すことができますこの問題https://github.com/estately/rets/issues/210

答えて

1
require 'rets' 

client = Rets::Client.new({ 
    login_url: 'url', 
    username: 'username', 
    password: 'password', 
    version: 'RETS/1.7.2' 
}) 

begin 
    client.login 
rescue => e 
    puts 'Error: ' + e.message 
    exit! 
end 

puts 'We connected! Lets get all the photos for a property...' 


photos = client.find (:all), { 
    search_type: 'Media', 
    class: 'Media', 
    query: '(ResourceRecordKeyNumeric=117562969),(MediaType=Image)' 
} 

photos.each_with_index do |data, index| 
    photo = open(photo = data['MediaURL']) 
    puts data['MediaURL'] 
    require 'base64' 
    image = Base64.encode64(photo.read) 
    File.open("property-#{index.to_s}.jpg", 'wb') do |f| 
    f.write(Base64.decode64(image)) 
    end 
end 


puts photos.length.to_s + ' photos saved.' 
client.logout 
0

に関するより多くの情報があります。

photos = client.find (:all), { 
search_type: 'Media', 
    class: 'Media', 
    query: '(ResourceRecordKeyNumeric=117562969,117562970,117562971),(MediaType=Image)' 
} 
関連する問題