2017-04-20 101 views
2

尝试从CRML媒体资源中提取:all(first:item)。使用遗产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预期。不知道这是否会成为检索所有列表中的所有图像的最佳方法,在我获得第一个图像后。下面是关于这个问题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

你可以尝试给逗号分隔的同时获得的多个列表的所有图像,在您的查询部分上市ID的更多信息。

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