Minor change to oclc lookup heuristic.
[quanlib.git] / classify / queryoclc.rb
1 require 'classset'
2 require 'lookup'
3
4 #if ARGV.length != 2
5 #  puts 'Usage:  ruby classify.rb author title'
6 #  exit 1
7 #end
8 #
9 #author_grouping = ARGV[0]
10 #title = ARGV[1]
11
12 classset = ClassSet.new()
13 lookup = Lookup.new()
14
15 CSV.open('unclassified.csv', 'r:UTF-8') do |csv|
16   query_count = 0
17   first = true
18   csv.to_a.each do |row|
19     if first
20       first = false
21     elsif row.length >= 2
22       author_grouping = row[0]
23       pathname = row[1]
24
25       info = classset.get(author_grouping, pathname)
26       if nil == info
27         query_count += 1
28         info = lookup.lookup(author_grouping, pathname)
29
30         puts info.inspect()
31
32         puts 'Saving state...'
33         classset.save_state()
34         lookup.save_state()
35
36         sleep_time = 10 + rand(10)
37         puts 'Pausing for ' + sleep_time.to_s + ' seconds...'
38         sleep(sleep_time)  # Pause between lookup requests, to be polite to the server
39       end
40
41       if nil != info
42         classset.ensure_contains!(info)
43       else
44         puts 'WARNING:  lookup of ' + author_grouping + ', "' + pathname + '" failed.'
45         File.open('failed.log', 'a:UTF-8') do |fd|
46           fd.puts(author_grouping.to_s + ',' + pathname.to_s)
47         end
48       end
49
50 #      if query_count > 5
51 #        break
52 #      end
53     end
54   end
55 end
56
57 classset.save_state()
58 lookup.save_state()