Class: Apress::YandexMarket::Readers::ModelByCategory
- 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
-
#category_reader ⇒ Object
readonly
Returns the value of attribute category_reader.
Attributes inherited from Base
Class Method Summary collapse
Instance Method Summary collapse
-
#each_row ⇒ Object
Public: читаем товары из API и фильтруем необходимые поля для использования далее в препроцессоре Кирби.
-
#initialize(options) ⇒ ModelByCategory
constructor
Public: инициализация ридера.
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() super @category_reader = Readers::Category.new() end |
Instance Attribute Details
#category_reader ⇒ Object (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_options ⇒ Object
64 65 66 |
# File 'lib/apress/yandex_market/readers/model_by_category.rb', line 64 def Readers::Category. end |
Instance Method Details
#each_row ⇒ Object
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 |