view · edit · sidebar · attach · print · history

20121128-update-text-info-updater

<< | Index | >>


Summary

  • Update text_info plugin

Index


Update text_info updater

de and fr

[Fi]

[pi]

There are not pi updates list (yet ?) in compendium.ch.
There are not any feed.

And, It seems that these pages check cookie and session-id (oder user info).
It redirect direct access by agent to start page(default.asx).

text_info

main flow for text_info at import_daily.

 1. jobs/import_daily
 2. Updater#run
 3. TextInfoPlugin#import_news
 4. TextInfoPlugin#textinfo_news (ODDB.config.text_info_newssource)
 5. TextInfoPlugin#import_name
 6. TextInfoPlugin#search_product
 7. TextInfoPlugin#search
 8. TextInfoPlugin#import_products
 9. TextInfoPlugin#import_product
10. TextInfoPlugin#download_info (de, fr, before this method, check only DE page)
11. TextInfoPlugin#update_product
12. TextInfoPlugin#update_fachinfo
13. TextInfoPlugin#update_patinfo
14. TextInfoPlugin#replace

Ref.

updated text_info_news

oddb.yml
text_info_newssource: 'http://compendium.ch/update/subject/security/1/de'
src/plugin/text_info.rb
def textinfo_news agent=init_agent
      url = ODDB.config.text_info_newssource \
        or raise 'please configure ODDB.config.text_info_newssource to proceed'
      # as entry point
      agent.get('http://compendium.ch/default.aspx'). \
        link_with(:href => /prof\/de/).click
      page = agent.get(url)
      list = Hash.new{|h,k| h[k] = {}} 
      page.search(
        '//span[starts-with(@id, "ctl00_MainContent_UcSecurityNews_dlNews_")]'
      ).map do |span|
        case span['id']
        when /_ctl(\d{2})_Label1/
          index = $1.to_s
          if span.child.text =~ /\d{2}\.\d{2}\.\d{2}/
            begin
              list[:date][index] = Date.strptime(span.child.text, '%d.%m.%y')
            rescue ArgumentError
            end 
          end 
        when /_ctl(\d{2})_Label4/
          unless span.child.text.empty?
            list[:text][$1.to_s] = span.child.text
          end 
        end 
      end 
      names = []
      unless list.empty?
        list[:date].each_pair do |index, date|
          if date == Date.today and 
             list[:text][index]
            names << list[:text][index]
          end 
        end 
      end 
      names
    end
# bin/admin
ch.oddb> TextInfoPlugin.new(self).textinfo_news
-> 

# debug-output
[1] 1.9.3-p194(#<ODDB::TextInfoPlugin>)> names.length
=> 2
[2] 1.9.3-p194(#<ODDB::TextInfoPlugin>)> names
=> ["Cetuximab", "Adalimumab"]
view · edit · sidebar · attach · print · history
Page last modified on November 28, 2012, at 08:54 AM