Продолжаю рассказ про дебилов из ozon.ru
Леонид КагановМаркетплейс сегодня — самое прибыльное дело. Человечество в 21 веке недалеко ушло от концепции «Басурман-Паша центральным рынком завладел». Достаточно сказать, что владелец главной в мире барахолки Amazon — уже много лет самый богатый человек на планете и лишь изредка уступает это звание Илону Маску. Тому самому Маску, который (в отличие от директора рынка по перепродаже чужих лампочек, книжек и лифчиков) сегодня главный инноватор, двигатель технологий, космоса и прогресса. При этом, в отличие от проектов Маска, практически все барахолки сделаны криво, неудобно, с дизайном прошлого века и постоянными глюками.
По образу и подобию Амазона был сделан когда-то и российский Озон — даже название немножко спиздили. Весьма унылая на мой покупательский взгляд площадка, поскольку любую позицию из ассортимента Озона мне всегда удавалось в пару кликов найти в каком-нибудь другом месте по цене на 10-20% ниже. Но дело не в этом.
У Озона есть API для продавцов — система, которая позволяет зарегистрированному продавцу выставлять свои товары по специальному протоколу. Мелкая продавщица домашнего мыла API не использует — она заполняет карточку товара руками через кривую форму на сайте. Но большой склад не может ежедневно заводить тысячи карточек вручную, поэтому я помогаю другу с программированием системы, работающей через API. Судя по всему (в том числе по общению с техподдержкой) я единственный программист, который с их API работает. Потому что там лютый пиздец.
Я уже рассказывал вам поржать, как криворукие быдлокодеры Озона перешли на API v.2, где карточка для продажи сраного коробка спичек (условно говоря) состоит из многих десятков «параметров», имена и значения которых следует заполнять не словами, а специальными кодами. Вместо того, чтобы вписать «материал изделия»:«сосна» следует писать что-то вроде «9876543210»:«12345». А для выяснения этих нечеловеческих кодов предлагается по каждому параметру заранее выкачать себе так называемый словарь для позиции «материал изделия», и из него на своей стороне узнать, что «сосна» это «12345». Причем, этот словарь еще на серверах Озона периодически меняется. В API нельзя сделать короткий запрос, каков код материала «сосна». Нет, ты должен в тысячу приемов выкачать гигантский словарь всех мыслимых материалов, которые тебе никогда не понадобятся. Но и это еще не всё. Некоторые «словари» короткие, другие гигантские. Например, загадочная, но почему-то обязательная для любых товаров графа «Серии» имеет словарь на 305816 позиций, который начинается так: «Тестовая серия имени Мымрика», «Феникс», «Параметры судьбы», «Вершины», «История цивилизации», «Живи с умом», «Мастерим бумажный город», «Столицы туризма», «Уроки колдовства», «Это вы можете», «Славяне»... Нахуя это спичкам или видеокарте?! Словарь «Бренд» содержит 44270 позиций — от «Intel» до «Благовещенская Икона», хотя к сраным спичкам не относится даже она. В словаре «Коммерческий тип» 10206 наименований вида «Носки для рыбалки», «Бижу кольцо на 3 фаланги мужское», «Бижу кольцо на 3 пальца мужское», «Кассетный плеер»... Время от времени в словарях тупо встречаются дубли. Уникальные индексы базы? Нет, не слышали.
Но и это еще не всё! Для получения словаря по каждой графе в описании сраных спичек ты должен указать номер категории (спички) и номер атрибута (материал изделия). И в ответ на эти два числа тебе приедет словарь. Может, он будет содержать всего две позиции («да», «нет»). Может, миллион. Может, для «материал изделия» по спичкам приедет точно такой же словарь, как был «материал изделия» по стульям. А может — совершенно другой, хотя номер dictionary_id будет совпадать. Нет никакой возможности понять, следует ли порциями по 500 штук несколько часов выкачивать 305816 позиций словаря «Серии», либо он в итоге — полный дубль уже выкачанного для другой категории. Можно только строить на своей стороне эвристики.
Но даже это еще не всё! Потому что параметры на Озоне придумывают вручную полные дебилы. Зацените, сегодняшняя вишенка. Заводили категорию «Видеокамера». Ну казалось бы, ну видеокамера, хули там? Запросили список характеристик карточки. Там среди «Тип матрицы», «Тип крепления», «Формат записи видео» почему-то есть характеристика «Персонаж»... со словарем, размером — внимание! — миллион записей. 1063978 персонажей! От Эльдара Рязанова до Франца Кафки. А также мусор, в котором их имена перемешаны с посторонними словами. Например, Кафка как персонаж представлен такими позициями:
543259: Кафка Франц
11325450: Кафка Ф.
349207: Франц Кафка. Собрание сочинений
734798: Франц Кафка. Собрание сочинений в 4 томах
970739354: Франц Кафка. Собрание сочинений в 5-ти томах
126794522: Франц Кафка. Собрание сочинений («Пальмира»)
Да что Кафка! В словаре персонажей для видеокамеры есть «Путин», «Путин В.В.», «Путин Владимир Владимирович», «Путин + 7», а также зловещий «Проект Путин» номер 10041457 и еще два таких же в кавычках «Проект "Путин"» с номерами 184709005, 595678. И конечно заманчивый персонаж «После Путина» номер 10815017. Кстати о птичках. Там есть даже экстремисты братья Навальные с фото:
1086890: Навальный Алексей Анатольевич
970714723: Навальный Алексей
11376102: Навальный Олег
Там есть даже я пару раз! Тоже с фотографией!
Вот нахуя эти криворукие школьники (говорят, штат программистов Озон насчитывает 2000 человек) присобачили товарам категории «Видеокамера» характеристику «Персонаж»?! Что это блять было?!! Чернила для пятого класса, глобус Грузии и видеокамера для съемок Каганова?
Что любопытно, поле description для опции «Персонаж» гласит: «Выберите из списка героя/персонажа, которые изображены на изделии». Для мониторов или, скажем, ковриков для мыши это поле не предусмотрено. Только для товаров «Видеокамера» и «Веб-камера». Видимо, надо указать товарищу майору, кого именно предполагается снимать этой камерой. Эдварда Радзинского будем, блять, ею снимать. Что также интересно: стоит атрибут is_collection=1, означающий, что в этой графе следует указывать не одно из значений, а перечислить номера всех нужных. Выберите из миллиона персонажей только тех, кого можно снимать вебкамерой.
В общем, пацаны и девчонки, если вы вдруг продаете на Озоне видеокамеры и заполняете торговую карточку товара, прошу в графе «Персонаж» указывать меня — номер 10863082. Вам без разницы, а мне приятно.
PS: Саш, ты извини, но я вписал в наш код: if($attribute_name=='Персонаж') $value='Навальный Алексей Анатольевич'; Вдруг ФСИН на Госзакупках объявит тендер на закупку камер наблюдения, станут выбирать, опа — даже персонаж сходится.