2017-04-20 5 views
2

Der Versuch, alle (zuerst: Element) aus der CRML-Medienressource abzurufen. Verwendung von RETS Repo. Hier ist meine Ruby-Beispieldatei:Abrufen von binären Bilddaten aus der 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 

aber ich bekomme nur ein Bild anstelle der 26 erwartet. Nicht sicher auch, ob dies die beste Methode sein wird, alle Bilder für alle Auflistungen abzurufen, nachdem ich die erste funktionierte. Hier gibt es mehr Informationen zu diesem Thema https://github.com/estately/rets/issues/210

Antwort

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

Sie können versuchen, die Auflistung IDs geben Komma getrennt, um alle Bilder von mehreren Angeboten zu einem Zeitpunkt zu erhalten, in der Abfrage Teil.

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