Please disable Adblockers and enable JavaScript for domain CEWebS.cs.univie.ac.at! We have NO ADS, but they may interfere with some of our course material.
Name: examples/flickr/Exif/exif.ru
1: | require 'rack' |
2: | require '../../../lib/ruby/riddl/server' |
3: | require '../Helpers/gps.rb' |
4: | require 'pp' |
5: | |
6: | EXIF = '/usr/bin/exiftool' |
7: | |
8: | class Exif < Riddl::Implementation |
9: | def response |
10: | photo = author = title = description = tags = longitude = latitude = nil |
11: | photo = @p.detect { |e| e.name == 'photo' } |
12: | author = @p.detect { |e| e.name == 'author' } |
13: | title = @p.detect { |e| e.name == 'title' } |
14: | description = @p.detect { |e| e.name == 'description' } |
15: | tags = @p.detect { |e| e.name == 'tags' } |
16: | longitude = @p.detect { |e| e.name == 'longitude' } |
17: | latitude = @p.detect { |e| e.name == 'latitude' } |
18: | pname = photo.value.path |
19: | `#{EXIF} -exif:Artist=\"#{author.value}\" #{pname}` |
20: | `#{EXIF} -exif:XPAuthor=\"#{author.value}\" #{pname}` |
21: | `#{EXIF} -exif:XPTitle=\"#{title.value}\" #{pname}` |
22: | `#{EXIF} -exif:XPSubject=\"#{title.value}\" #{pname}` |
23: | `#{EXIF} -exif:XPComment=\"#{description.value}\" #{pname}` |
24: | `#{EXIF} -exif:XPKeywords=\"#{tags.value}\" #{pname}` |
25: | |
26: | lat = latitude.value.to_f |
27: | lng = longitude.value.to_f |
28: | `#{EXIF} -exif:GPSLatitudeRef=\"#{GPS::pos_or_neg(lat,'N','S')}\" #{pname}` |
29: | `#{EXIF} -exif:GPSLatitude=\"#{lat}\" #{pname}` |
30: | `#{EXIF} -exif:GPSLongitudeRef="#{GPS::pos_or_neg(lng,'E','W')}\" #{pname}` |
31: | `#{EXIF} -exif:GPSLongitude=\"#{lng}\" #{pname}` |
32: | |
33: | photo.reopen |
34: | |
35: | @p.delete_if do |e| |
36: | e.name == 'author' || e.name == 'longitude' || e.name == 'latitude' |
37: | end |
38: | @p |
39: | end |
40: | end |
41: | |
42: | run Riddl::Server.new("exif.xml") { |
43: | process_out true |
44: | on resource do |
45: | run Exif if post 'jpegdata' |
46: | end |
47: | } |