Class: Apress::YandexMarket::Readers::ModelByCategory

Inherits:
Base
  • Object
show all
Defined in:
lib/apress/yandex_market/readers/model_by_category.rb

Overview

Ридер моделей Яндекс.Маркета по категориям

Examples

reader = Apress::YandexMarket::Readers::ModelByCategory.new(region_id: 225,
                                                            token: 'qwerty',
                                                            categories: 'Авто; Дом и дача')
# => #<Apress::YandexMarket::Readers::ModelByCategory ...>

reader.each_row |model|
  puts model
end
# => {
       :__line__=>1,
       :__column__=>1,
       :id=>217189255,
       :name=>"Caviale Крем для лица Витамин Е",
       :link=>"https://market.yandex.ru/product/217189255?hid=8476099&pp=929&clid=2326601&distr_type=7",
       :description=>"время нанесения: дневной/ночной, эффект: увлажнение",
       :photo=>{:url=>"https://avatars.mds.yandex.net/get-mpic/331398/img_id833813452766046986.jpeg/orig"},
       :photos=>[
         {:url=>"https://avatars.mds.yandex.net/get-mpic/331398/img_id833813452766046986.jpeg/orig"},
         {:url=>"https://avatars.mds.yandex.net/get-mpic/331398/img_id8176844263482482207.jpeg/orig"},
         {:url=>"https://avatars.mds.yandex.net/get-mpic/933699/img_id2264997491683174997.jpeg/orig"}
       ],
       :price=>{:min=>"68"},
       :vendor=>{:name=>"Caviale"},
       :specification=>[
         {
           :features=>[
             {:value=>"время нанесения: дневной/ночной"},
             {:value=>"эффект: увлажнение"}
           ]
         }
       ]
     }
     {
       :__line__=>2,
       :__column__=>1,
       :id=>217189256,
       ...
     }

Constant Summary collapse

FIELDS =
%w(
  MODEL_CATEGORY
  MODEL_PHOTO
  MODEL_PHOTOS
  MODEL_PRICE
  MODEL_SPECIFICATION
  MODEL_VENDOR
).join(',').freeze
PRICE_FILTER_ID =

ID фильтра по цене

'-1'.freeze
PRICE_FILTER =

фильтруем цену от 1 копейки, формат “min_value~max_value”

'0.01~'.freeze

Constants inherited from Base

Base::DEFAULT_REGION_ID, Base::PAGE_SIZE, Base::RETRY_ATTEMPTS, Base::RETRY_ATTEMPTS_SLEEP_TIME, Base::RETRY_CODES, Base::SLEEP_TIME

Instance Attribute Summary collapse

Attributes inherited from Base

#client

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ ModelByCategory

Public: инициализация ридера

options - Hash, параметры ридера

:region_id  - 

Returns an instance of Readers::ModelByCategory



79
80
81
82
# File 'lib/apress/yandex_market/readers/model_by_category.rb', line 79

def initialize(options)
  super
  @category_reader = Readers::Category.new(options)
end

Instance Attribute Details

#category_readerObject (readonly)

Returns the value of attribute category_reader.



69
70
71
# File 'lib/apress/yandex_market/readers/model_by_category.rb', line 69

def category_reader
  @category_reader
end

Class Method Details

.allowed_optionsObject



64
65
66
# File 'lib/apress/yandex_market/readers/model_by_category.rb', line 64

def allowed_options
  Readers::Category.allowed_options
end

Instance Method Details

#each_rowObject

Public: читаем товары из API и фильтруем необходимые поля для использования далее в препроцессоре Кирби

Returns nothing



87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/apress/yandex_market/readers/model_by_category.rb', line 87

def each_row
  presenter = Presenters::Model.new

  category_reader.each_row do |category|
    models = Set.new

    begin
      process_models(models, category.fetch(:id), 'DESC')
    rescue Api::PageError
      begin
        process_models(models, category.fetch(:id), 'ASC')
      rescue Api::PageError
      end
    end

    models.each { |model| yield presenter.expose(model) }
  end
end