23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
# File 'lib/gared/primo.rb', line 23
def query_publications_by_person(person, ctx = nil)
ret = []
begin
url = @options[:url]+"?institution=#{@options[:institution]}&query=creator,contains,#{URI.escape(person)}&indx=1&bulkSize=50&query=facet_rtype,exact,books&json=true"
json = JSON.parse(RestClient.get(url))
total = json['SEGMENTS']['JAGROOT']['RESULT']['DOCSET']['@TOTALHITS'].to_i
start_at = 1
recs = json['SEGMENTS']['JAGROOT']['RESULT']['DOCSET']['DOC'] while recs.length < total
start_at += 50
url = @options[:url]+"?institution=#{@options[:institution]}&query=creator,contains,#{URI.escape(person)}&indx=#{start_at}&bulkSize=50&query=facet_rtype,exact,books&json=true"
json = JSON.parse(RestClient.get(url))
recs += json['SEGMENTS']['JAGROOT']['RESULT']['DOCSET']['DOC']
sleep 1 end
recs.each do |r|
begin
deets = r['PrimoNMBib']['record']['display']
p = Publication.new(ctx)
p.title = deets['title']
p.author_line = deets['creator']
p.language = deets['language']
p.notes = "#{deets['format']}\n#{deets['subject']}"
p.publisher_line = deets['publisher']
p.pub_year = deets['creationdate']
p.source_id = r['PrimoNMBib']['record']['control']['sourcerecordid']
additional_urls = []
deets.keys.each do |key|
additional_urls << deets[key] if deets[key] =~ /https?:[^\s]/
end
p.additional_urls = additional_urls if additional_urls.length > 0
h = Holding.new
h.source_id = p.source_id
h.source_name = 'Primo:'+@options[:institution]
h.location = r['LIBRARIES']['LIBRARY'][0].nil? ? r['LIBRARIES']['LIBRARY']['callNumber'] : r['LIBRARIES']['LIBRARY'][0]['callNumber'] p.add_holding(h)
ret << p
rescue Exception
puts $!
end
end
rescue Exception
puts $!
end
return ret
end
|