brand2csv 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,7 @@
1
+ === 0.1.5 23.05.2013
2
+
3
+ * Run under Ruby 1.8.7
4
+
1
5
  === 0.1.4 22.05.2013
2
6
 
3
7
  * Better handling of adresslines like '90 route de Frontenex', 'Via San Salvatore, 2'
@@ -1,11 +1,12 @@
1
1
  #!/usr/bin/env ruby
2
2
  # encoding: utf-8
3
-
3
+ require 'rubygems' if /^1\.8/.match(RUBY_VERSION)
4
4
  require "brand2csv/version"
5
5
  require 'mechanize'
6
6
  require 'prettyprint'
7
7
  require 'optparse'
8
8
  require 'csv'
9
+ require 'logger'
9
10
 
10
11
  module Brand2csv
11
12
 
@@ -17,12 +18,12 @@ module Brand2csv
17
18
  # Weitere gesehene Fehler
18
19
  BekannteFehler =
19
20
  ['Das Datum ist ung', # ültig'
20
- 'Erweiterte Suche',
21
21
  'Vereinfachte Trefferliste anzeigen',
22
22
  'Es wurden keine Daten gefunden.',
23
23
  'Die Suchkriterien sind teilweise unzul', # ässig',
24
24
  'Geben Sie mindestens ein Suchkriterium ein',
25
25
  'Die Suche wurde abgebrochen, da die maximale Suchzeit von 60 Sekunden',
26
+ 'Erweiterte Suche',
26
27
  ]
27
28
  Base_uri = 'https://www.swissreg.ch'
28
29
  Start_uri = "#{Base_uri}/srclient/faces/jsp/start.jsp"
@@ -41,42 +42,80 @@ module Brand2csv
41
42
  # "tm_lbl_licensee"], # Lizenznehmer/in
42
43
  "tm_lbl_app_date", # Hinterlegungsdatum
43
44
  ]
45
+ # Alle Felder mit sprechenden Namen
46
+ # ["id_swissreg:mainContent:id_txf_tm_no", nummer],# Marken Nr
47
+ # ["id_swissreg:mainContent:id_txf_app_no", ""], # Gesuch Nr.
48
+ # ["id_swissreg:mainContent:id_txf_tm_text", marke],
49
+ # ["id_swissreg:mainContent:id_txf_applicant", ""], # Inhaber/in
50
+ # ["id_swissreg:mainContent:id_cbxCountry", "_ALL"], # Auswahl Länder _ALL
51
+ # ["id_swissreg:mainContent:id_txf_agent", ""], # Vertreter/in
52
+ # ["id_swissreg:mainContent:id_txf_licensee", ""], # Lizenznehmer
53
+ # ["id_swissreg:mainContent:id_txf_nizza_class", ""], # Nizza Klassifikation Nr.
54
+ # # ["id_swissreg:mainContent:id_txf_appDate", timespan], # Hinterlegungsdatum
55
+ # ["id_swissreg:mainContent:id_txf_appDate", "%s" % timespan] ,
56
+ # ["id_swissreg:mainContent:id_txf_expiryDate", ""], # Ablauf Schutzfrist
57
+ # Markenart: Individualmarke 1 Kollektivmarke 2 Garantiemarke 3
58
+ # ["id_swissreg:mainContent:id_cbxTMTypeGrp", "_ALL"], # Markenart
59
+ # ["id_swissreg:mainContent:id_cbxTMForm", "_ALL"], # Markentyp
60
+ # ["id_swissreg:mainContent:id_cbxTMColorClaim", "_ALL"], # Farbanspruch
61
+ # ["id_swissreg:mainContent:id_txf_pub_date", ""], # Publikationsdatum
44
62
 
63
+ # info zu Publikationsgrund id_swissreg:mainContent:id_ckbTMPubReason
64
+ # ["id_swissreg:mainContent:id_ckbTMPubReason", "1"], #Neueintragungen
65
+ # ["id_swissreg:mainContent:id_ckbTMPubReason", "2"], #Berichtigungen
66
+ # ["id_swissreg:mainContent:id_ckbTMPubReason", "3"], #Verlängerungen
67
+ # ["id_swissreg:mainContent:id_ckbTMPubReason", "4"], #Löschungen
68
+ # ["id_swissreg:mainContent:id_ckbTMPubReason", "5"], #Inhaberänderungen
69
+ # ["id_swissreg:mainContent:id_ckbTMPubReason", "6"], #Vertreteränderungen
70
+ # ["id_swissreg:mainContent:id_ckbTMPubReason", "7"], #Lizenzänderungen
71
+ # ["id_swissreg:mainContent:id_ckbTMPubReason", "8"], #Weitere Registeränderungen
72
+ # ["id_swissreg:mainContent:id_ckbTMEmptyHits", "0"], # Leere Trefferliste anzeigen
73
+ # ["id_swissreg:mainContent:id_ckbTMState", "1"], # "Hängige Gesuche 1
74
+ # # ["id_swissreg:mainContent:id_ckbTMState", "2"], # "Gelöschte Gesuche 2
75
+ # ["id_swissreg:mainContent:id_ckbTMState", "3"], # aktive Marken 3
76
+ # # ["id_swissreg:mainContent:id_ckbTMState", "4"], # gelöschte Marken 4
77
+
78
+
45
79
  MaxZeilen = 5
46
80
 
47
81
  attr_accessor :marke
48
82
 
49
83
  def initialize(timespan)
50
84
  @timespan = timespan
85
+ @marke = nil
86
+ @number = nil
87
+ @hitsPerPage = 100
88
+
51
89
  @agent = Mechanize.new { |agent|
52
- # agent.user_agent_alias = 'Mac Safari'
53
90
  agent.user_agent = 'Mozilla/5.0 (X11; Linux x86_64; rv:16.0) Gecko/20100101 Firefox/16.0'
54
- # agent.redirection_limit = 5
55
91
  agent.verify_mode = OpenSSL::SSL::VERIFY_NONE
92
+ FileUtils.makedirs 'mechanize' if $VERBOSE
93
+ agent.log = Logger.new("mechanize/mechanize.log") if $VERBOSE
56
94
  }
57
95
  @results = []
58
96
  @errors = Hash.new
59
- @lastResponse = nil
60
97
  @lastDetail =nil
61
98
  @counterDetails = 0
62
- @marke = 'zzzyyzzzzyzzyz*' # => Fehlermeldung: Es wurden keine Daten gefunden
63
- # asp* => 138 records werden geholt
64
- # a* => Es wurden 25,490 Treffer gefunden. Davon werden 10000 zufällig ausgewählte Schutztitel angezeigt. Bitte schränken Sie Ihre Suche weiter ein.
65
- # Ab 501 Treffer wird eine vereinfachte Trefferliste angezeigt.
66
- # asp* => 138 records werden geholt
99
+ if false # force some values
100
+ # asp* => 138 records werden geholt
101
+ # a* => Es wurden 25,490 Treffer gefunden. Davon werden 10000 zufällig ausgewählte Schutztitel angezeigt. Bitte schränken Sie Ihre Suche weiter ein.
102
+ # Ab 501 Treffer wird eine vereinfachte Trefferliste angezeigt.
103
+ # asp* => 138 records werden geholt
67
104
 
68
- @marke = nil # => Fehlermeldung: Geben Sie mindestens ein Suchkriterium ein
69
- @marke = 'asp*'
70
- @number = '500000'
71
- @number = nil
72
- # @marke = "*WEIH*"
73
- @hitsPerPage = 100
105
+ @marke = 'zzzyyzzzzyzzyz*' # => Fehlermeldung: Es wurden keine Daten gefunden
106
+ @marke = 'aspira'
107
+ # @number = '500000' # für Weihnachten
108
+ @number = ' 601416' # für aspira
109
+ # @marke = "*WEIH*"
110
+ @timespan = nil
111
+ end
112
+ @marke = 'asp*'
74
113
  end
75
114
 
76
- def writeResponse(filename, body)
77
- if defined?(RSpec)
115
+ def writeResponse(filename)
116
+ if defined?(RSpec) or $VERBOSE
78
117
  ausgabe = File.open(filename, 'w+')
79
- ausgabe.puts body
118
+ ausgabe.puts @agent.page.body
80
119
  ausgabe.close
81
120
  else
82
121
  puts "Skipping writing #{filename}" if $VERBOSE
@@ -84,11 +123,12 @@ module Brand2csv
84
123
  end
85
124
 
86
125
  def view_state(response)
87
- if match = /javax.faces.ViewState.*?value="([^"]+)"/u.match(response.force_encoding('utf-8'))
88
- match[1]
126
+ if /^1\.8/.match(RUBY_VERSION)
127
+ match = /javax.faces.ViewState.*?value="([^"]+)"/u.match(response)
89
128
  else
90
- ""
129
+ match = /javax.faces.ViewState.*?value="([^"]+)"/u.match(response.force_encoding('utf-8'))
91
130
  end
131
+ match ? match[1] : ""
92
132
  end
93
133
 
94
134
  def checkErrors(body)
@@ -104,10 +144,14 @@ module Brand2csv
104
144
  def parse_swissreg(timespan = @timespan, # sollte 377 Treffer ergeben, für 01.06.2007-10.06.2007, 559271 wurde in diesem Zeitraum registriert
105
145
  marke = @marke,
106
146
  nummer =@number) # nummer = "559271" ergibt genau einen treffer
147
+
148
+ # discard this first response
149
+ # swissreg.ch could not handle cookie by redirect.
150
+ # HTTP status code is also strange at redirection.
107
151
  @agent.get Start_uri # get a cookie for the session
108
152
  content = @agent.get_file Start_uri
109
- FileUtils.makedirs 'mechanize'
110
- writeResponse('mechanize/main.html', content)
153
+ writeResponse('mechanize/start.jsp')
154
+ # get only view state
111
155
  @state = view_state(content)
112
156
  data = [
113
157
  ["autoScroll", "0,0"],
@@ -116,10 +160,12 @@ module Brand2csv
116
160
  ["id_swissreg:_idcl", "id_swissreg_sub_nav_ipiNavigation_item0"],
117
161
  ["javax.faces.ViewState", @state],
118
162
  ]
119
-
163
+
120
164
  content = @agent.post(Start_uri, data)
121
- writeResponse('mechanize/einfache_suche.html', content.body)
122
-
165
+ writeResponse('mechanize/start2.jsp')
166
+ # Navigation with mechanize like this fails and returns to the home page
167
+ # @agent.page.link_with(:id => "id_swissreg_sub_nav_ipiNavigation_item0").click
168
+
123
169
  data = [
124
170
  ["autoScroll", "0,0"],
125
171
  ["id_swissreg:_link_hidden_", ""],
@@ -130,64 +176,52 @@ module Brand2csv
130
176
  # sr1 ist die einfache suche, sr3 die erweiterte Suche
131
177
  @path = "/srclient/faces/jsp/trademark/sr3.jsp"
132
178
  response = @agent.post(Base_uri + @path, data)
133
- writeResponse('mechanize/erweiterte_suche.html', response.body)
134
- # Bis hier alles okay
135
- @criteria = [
136
- ["autoScroll", "0,829"],
137
- ["id_swissreg:_link_hidden_", ""],
138
- ["id_swissreg:mainContent:id_ckbTMState", "1"], # "Hängige Gesuche 1
139
- # ["id_swissreg:mainContent:id_ckbTMState", "2"], # "Gelöschte Gesuche 2
140
- ["id_swissreg:mainContent:id_ckbTMState", "3"], # aktive Marken 3
141
- # ["id_swissreg:mainContent:id_ckbTMState", "4"], # gelöschte Marken 4
142
- ["id_swissreg:mainContent:id_cbxCountry", "_ALL"], # Auswahl Länder _ALL
143
- # ["id_swissreg:mainContent:id_txf_tm_no", ""], # Marken Nr
144
- ["id_swissreg:mainContent:id_txf_tm_no", nummer],# Marken Nr
145
- ["id_swissreg:mainContent:id_txf_app_no", ""], # Gesuch Nr.
146
- ["id_swissreg:mainContent:id_txf_tm_text", marke],
147
- ["id_swissreg:mainContent:id_txf_applicant", ""], # Inhaber/in
148
- ["id_swissreg:mainContent:id_txf_agent", ""], # Vertreter/in
149
- ["id_swissreg:mainContent:id_txf_licensee", ""], # Lizenznehmer
150
- ["id_swissreg:mainContent:id_txf_nizza_class", ""], # Nizza Klassifikation Nr.
151
- # ["id_swissreg:mainContent:id_txf_appDate", timespan], # Hinterlegungsdatum
152
- ["id_swissreg:mainContent:id_txf_appDate", timespan] ,
153
- ["id_swissreg:mainContent:id_txf_expiryDate", ""], # Ablauf Schutzfrist
154
- # Markenart: Individualmarke 1 Kollektivmarke 2 Garantiemarke 3
155
- ["id_swissreg:mainContent:id_cbxTMTypeGrp", "_ALL"], # Markenart
156
- ["id_swissreg:mainContent:id_cbxTMForm", "_ALL"], # Markentyp
157
- ["id_swissreg:mainContent:id_cbxTMColorClaim", "_ALL"], # Farbanspruch
158
- ["id_swissreg:mainContent:id_txf_pub_date", ""], # Publikationsdatum
159
-
160
- # info zu Publikationsgrund id_swissreg:mainContent:id_ckbTMPubReason
161
- ["id_swissreg:mainContent:id_ckbTMPubReason", "1"], #Neueintragungen
162
- ["id_swissreg:mainContent:id_ckbTMPubReason", "2"], #Berichtigungen
163
- ["id_swissreg:mainContent:id_ckbTMPubReason", "3"], #Verlängerungen
164
- ["id_swissreg:mainContent:id_ckbTMPubReason", "4"], #Löschungen
165
- ["id_swissreg:mainContent:id_ckbTMPubReason", "5"], #Inhaberänderungen
166
- ["id_swissreg:mainContent:id_ckbTMPubReason", "6"], #Vertreteränderungen
167
- ["id_swissreg:mainContent:id_ckbTMPubReason", "7"], #Lizenzänderungen
168
- ["id_swissreg:mainContent:id_ckbTMPubReason", "8"], #Weitere Registeränderungen
169
- # ["id_swissreg:mainContent:id_ckbTMEmptyHits", "0"], # Leere Trefferliste anzeigen
170
-
171
- # "id_swissreg:mainContent:id_cbxFormatChoice" 2 = Publikationsansicht 1 = Registeransicht
172
- ["id_swissreg:mainContent:id_cbxFormatChoice", "1"],
173
- ["id_swissreg:mainContent:id_cbxHitsPerPage", @hitsPerPage], # Treffer pro Seite
174
- ]
175
- TMChoiceFields.each{ | field2display| @criteria << ["id_swissreg:mainContent:id_ckbTMChoice", field2display] }
176
- # id_swissreg:mainContent:id_ckbTMChoice tm_lbl_tm_text
177
- puts "Marke ist #{marke}" if marke # Wortlaut der Marke
178
- puts "Hinterlegungsdatum ist #{timespan}" if $VERBOSE and timespan
179
- puts "nummer ist #{timespan}" if nummer
180
- @criteria << ["id_swissreg:mainContent:sub_fieldset:id_submit", "suchen"]
181
- @criteria << ["id_swissreg_SUBMIT", "1"]
182
- @criteria << ["id_swissreg:_idcl", ""]
183
- @criteria << ["id_swissreg:_link_hidden_", ""]
184
- @criteria << ["javax.faces.ViewState", @state]
185
-
186
- @path = "/srclient/faces/jsp/trademark/sr3.jsp"
187
- response = @agent.post(Base_uri + @path, @criteria)
188
- writeResponse('mechanize/resultate_1.html', response.body)
189
- checkErrors(response.body)
190
- @lastResponse = response
179
+ writeResponse('mechanize/sr3.jsp')
180
+
181
+ # Fill out form values
182
+ @agent.page.form('id_swissreg').checkboxes.each{ |box|
183
+ TMChoiceFields.index(box.value) ? box.check : box.uncheck
184
+ box.check if $VERBOSE
185
+ # select all publication reasons
186
+ box.check if /id_ckbTMPubReason/.match(box.name)
187
+ # select all publication states
188
+ box.check if /id_ckbTMState/.match(box.name)
189
+ }
190
+ if $VERBOSE # and false # fill all details for marke 567120
191
+ # Felder, welche nie bei der Antwort auftauchen
192
+ @agent.page.form('id_swissreg').field(:name => 'id_swissreg:mainContent:id_txf_licensee') { |x| x.value = 'BBB Inc*' }
193
+ @agent.page.form('id_swissreg').field(:name => 'id_swissreg:mainContent:id_txf_expiryDate') { |x| x.value = timespan }
194
+ @agent.page.form('id_swissreg').field(:name => 'id_swissreg:mainContent:id_txf_pub_date') { |x| x.value = timespan }
195
+ @agent.page.form('id_swissreg').field(:name => 'id_swissreg:mainContent:id_txf_nizza_class') { |x| x.value = '9' }
196
+ @agent.page.form('id_swissreg').field(:name => 'id_swissreg:mainContent:id_txf_agent') { |x| x.value = 'Marc Stucki*' }
197
+ @agent.page.form('id_swissreg').field(:name => 'id_swissreg:mainContent:id_cbxCountry') { |x| x.value = 'CH' } # 'CH' or '_ALL'
198
+
199
+ # Felder, welche im Resultat angezeigt werden
200
+ @agent.page.form('id_swissreg').field(:name => 'id_swissreg:mainContent:id_txf_applicant') { |x| x.value = 'ASP ATON*' } #inhaber
201
+ @agent.page.form('id_swissreg').field(:name => 'id_swissreg:mainContent:id_txf_tm_no') { |x| x.value = "567120" }
202
+ @agent.page.form('id_swissreg').field(:name => 'id_swissreg:mainContent:id_txf_app_no') { |x| x.value = '50329/2008' }
203
+ end
204
+
205
+ # Feld, welches im Resultat angezeigt wird
206
+ @agent.page.form('id_swissreg').field(:name => 'id_swissreg:mainContent:id_txf_tm_text') { |x| x.value = "asp*" }
207
+
208
+ # Felder, welches nie bei der Antwort auftaucht. Ein Versuch .gsub('.', '%2E') schlug ebenfalls fehl!
209
+ @agent.page.form('id_swissreg').field(:name => 'id_swissreg:mainContent:id_txf_appDate') { |x| x.value = timespan}
210
+
211
+ # Feld, welches ebenfalls berücksichtigt wird
212
+ @agent.page.form('id_swissreg').field(:name => 'id_swissreg:mainContent:id_cbxHitsPerPage') { |x| x.value = @hitsPerPage }
213
+ @agent.page.form('id_swissreg').field(:name => 'autoScroll') { |x| x.value = '0,0' }
214
+
215
+ if $VERBOSE
216
+ puts "State of searchForm is:"
217
+ @agent.page.form('id_swissreg').fields.each{ |f| puts "field: #{f.name}: #{f.value}"}
218
+ @agent.page.form('id_swissreg').checkboxes.each{ |box| puts "#{box.name} checked? #{box.checked}"}
219
+ end
220
+
221
+ @agent.page.form('id_swissreg').click_button(@agent.page.form('id_swissreg').button_with(:value => "suchen"))
222
+ # Hier sollten eigentlich alle Felder auftauchen, wie
223
+ # Marke=asp*; Land (Inhaber/in)=Schweiz; Markenart=Alle; Markentyp=Alle; Farbanspruch=Alle; Publikationsgrund= Neueintragungen, Berichtigungen, Verlängerungen, Löschungen, Inhaberänderungen, Vertreteränderungen, Lizenzänderungen, Weitere Registeränderungen; Status= hängige Gesuche, aktive Marken
224
+ writeResponse('mechanize/result.jsp')
191
225
  end
192
226
 
193
227
  def parseAddress(nummer, zeilen)
@@ -197,15 +231,15 @@ module Brand2csv
197
231
  # Search for plz/address
198
232
  1.upto(zeilen.length-1).each {
199
233
  |cnt|
200
- if m = AddressRegexp.match(zeilen[cnt])
201
- zeilen[cnt+1] = nil
202
- plz = m[1]; ort = m[2]
203
- cnt.upto(MaxZeilen-1).each{ |cnt2| zeilen[cnt2] = nil }
204
- break
205
- end
234
+ if m = AddressRegexp.match(zeilen[cnt])
235
+ zeilen[cnt+1] = nil
236
+ plz = m[1]; ort = m[2]
237
+ cnt.upto(MaxZeilen-1).each{ |cnt2| zeilen[cnt2] = nil }
238
+ break
239
+ end
206
240
  }
207
241
  unless plz
208
- puts "Achtung! Konnte Marke #{nummer} mit Inhaber #{zeilen.inpsect} nicht parsen" if $VERBOSE
242
+ puts "Achtung! Konnte Marke #{nummer} mit Inhaber #{zeilen.inspect} nicht parsen" if $VERBOSE
209
243
  return nil, nil, nil, nil, nil, nil, nil, nil
210
244
  end
211
245
  # search for lines with only digits
@@ -239,7 +273,7 @@ module Brand2csv
239
273
  url = "https://www.swissreg.ch/srclient/faces/jsp/trademark/sr300.jsp?language=de&section=tm&id=#{nummer}"
240
274
  pp "Opening #{url}" if $VERBOSE
241
275
  content = @agent.get_file url
242
- writeResponse("mechanize/detail_#{nummer}.html", content)
276
+ writeResponse("mechanize/detail_#{nummer}.html")
243
277
  doc = Nokogiri::Slop(content)
244
278
  end
245
279
  puts "Bitte um Geduld. Holte Adressdetails für Marke #{nummer}. (#{@counterDetails} von #{@errors.size})"
@@ -271,7 +305,9 @@ module Brand2csv
271
305
  if filename
272
306
  doc = Nokogiri::Slop(File.open(filename))
273
307
  else
274
- doc = Nokogiri::Slop(@lastResponse.body)
308
+ body = @agent.page.body
309
+ body.force_encoding('utf-8')
310
+ doc = Nokogiri::Slop(body)
275
311
  end
276
312
  nrFailures = 0
277
313
  counter += 1
@@ -322,9 +358,8 @@ module Brand2csv
322
358
  ]
323
359
  TMChoiceFields.each{ | field2display| data << ["id_swissreg:mainContent:id_sub_options_result:id_ckbTMChoice", field2display] }
324
360
  response = @agent.post(Base_uri + @path, data)
325
- writeResponse("mechanize/resultate_#{counter}.html", response.body)
361
+ writeResponse("mechanize/resultate_#{counter}.html")
326
362
  checkErrors(response.body)
327
- @lastResponse = response
328
363
  fetchresult(nil, counter)
329
364
  else
330
365
  puts "Es gab #{nrFailures} Fehler beim Lesen von #{filename}" if $VERBOSE
@@ -334,15 +369,36 @@ module Brand2csv
334
369
 
335
370
  def emitCsv(filename='ausgabe.csv')
336
371
  return if @results.size == 0
337
- CSV.open(filename, 'w', {:headers=>@results[0].members,
338
- :write_headers => true,
339
- :col_sep => ';',
340
- }) do |csv|
341
- @results.each{ |x| csv << x }
372
+ if /^1\.8/.match(RUBY_VERSION)
373
+ ausgabe = File.open(filename, 'w+')
374
+ # Write header
375
+ s=''
376
+ @results[0].members.each { |member| s += member + ';' }
377
+ ausgabe.puts s.chop
378
+ # write all line
379
+ @results.each{
380
+ |result|
381
+ s = ''
382
+ result.members.each{ |member|
383
+ unless eval("result.#{member}")
384
+ s += ';'
385
+ else
386
+ value = eval("result.#{member.to_s}")
387
+ value = "\"#{value}\"" if value.index(';')
388
+ s += value + ';'
389
+ end
390
+ }
391
+ ausgabe.puts s.chop
392
+ }
393
+ else
394
+ CSV.open(filename, 'w', :headers=>@results[0].members,
395
+ :write_headers => true,
396
+ :col_sep => ';'
397
+ ) do |csv| @results.each{ |x| csv << x }
398
+ end
342
399
  end
343
- puts "Speicherte #{@results.size} gefunden Datensätze für die Zeitspanne '#{@timespan}' in #{filename}"
344
400
  end
345
-
401
+
346
402
  def fetchMissingDetails
347
403
  @errors.each{
348
404
  |markennummer, info|
@@ -1,3 +1,3 @@
1
1
  module Brand2csv
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
@@ -1,3 +1,43 @@
1
+ * Work on 2013.05.22
2
+
3
+ ** Use timespan als filename
4
+ ** corrected missing bin/brand2csv for gem
5
+ ** Better handling of adresslines like '90 route de Frontenex', 'Via San Salvatore, 2
6
+
7
+ Trimmed script for more logging in VERBOSE mode. Therefore to debug I always call the following stuff
8
+ @rm -rf mechanize/; time ruby -v bin/brand2csv 05.09.2001@
9
+
10
+ * Verified the following things
11
+ ** Get/Post request via HttpFox (see logs/protocol_swissreg.log)
12
+ ** Content of POST-Data via mechanize and HttpFox (identical except)
13
+ ** Tagged this commit as "POST_verified"
14
+
15
+ *"Cheetsheet":http://www.e-tobi.net/blog/files/ruby-mechanize-cheat-sheet.pdf
16
+
17
+ Found, that the following fields are handled correctly
18
+ # id_txf_applicant' #inhaber
19
+ # id_txf_tm_no # Markn-Nummber
20
+ # id_txf_app_no # Gesuch-nummer
21
+ # id_txf_tm_text # text of trademark
22
+ # id_cbxHitsPerPage
23
+
24
+ Fields, which are not handled and don't influence the response
25
+ # id_txf_appDate # Hinterlegungsdatum
26
+ # id_txf_licensee
27
+ # id_txf_expiryDate
28
+ # id_txf_pub_date
29
+ # id_txf_nizza_class
30
+ # id_txf_agent # Vertreter
31
+ # id_cbxCountry # Land 'CH' or '_ALL'
32
+
33
+ * Reworked the brand2csv.rb to match more closely the interactive
34
+ Checked differences in received fields from mechanize and interactive uses (in subdirectory logs)
35
+ * start.jsp: Match okay
36
+ * start2.jsp: Match okay
37
+ * sr3.jsp: are quite different
38
+
39
+ * Work on 2013.05.21
40
+
1
41
  * Added spike_mechanize_swissreg.rb
2
42
 
3
43
  Also this attempt works if I specify a trademark name or number. But it does not work, when specifying a timespan for the "Hinterlegungsdatum".
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brand2csv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-22 00:00:00.000000000 Z
12
+ date: 2013-05-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mechanize