Skip to content

About

Публикация кворков на kwork.ru из JSON: заполняет форму, грузит картинки и проверяет негласные правила площадки

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

kwork-poster

Публикация кворков на kwork.ru из JSON-файла: заголовок, рубрика, описание, цена, опции, картинки и частые вопросы — одним запуском. Плюс валидатор, который проверяет данные до того, как форма развернёт вас на очередном негласном правиле.

Собрано на живом опыте: девять кворков, выложенных вручную и потом переписанных в скрипт. Руками один кворк — это ~50 полей, спрятанных за chosen-селектами, contenteditable и Vue-виджетами, и минут сорок времени. Скриптом — пара минут.

Зачем, если можно руками

Форма kwork охотно молчит. Несколько правил, на которых легко потерять вечер:

Правило Как проявляется
Цена кворка — только 500, 1000, 1500… 700 ₽ просто нельзя выбрать
Цена опции — 100–500 шагом 100, дальше шагом 500 то же самое
В вопросах и ответах — не меньше 70% русского текста кнопка «Добавить вопрос» не появляется. Без ошибки. Вообще без реакции
В названии опции — не меньше 35% русского опция не сохраняется
«От покупателя» — минимум 100 символов ошибка появляется только при попытке опубликовать
В названии кворка нельзя скобки «не должно содержать символы кроме букв, цифр»
Картинка должна догрузиться на сервер пока в блоке data: вместо cdn-edge.kwork.ru, кнопка «Сохранить» молча ничего не делает

publish.py --check проверяет всё это офлайн, за секунду, не открывая браузер.

Ещё две вещи, которые стоили мне времени и теперь зашиты в код: кнопку «Сохранить» kwork слушает только при настоящем клике мышью (JS-click() по ней не срабатывает), а кнопка «Добавить ещё» для опций, наоборот, перекрыта липкой шапкой — её берёт только JS-клик. В FAQ вопрос сохраняется не по кнопке, а по blur: ушёл фокус — вопрос схлопнулся в карточку.

Установка

pip install playwright
playwright install chromium

Как пользоваться

python publish.py --login       # один раз: войти на kwork, сессия ляжет в .profile/
python publish.py --check       # проверить данные, браузер не открывается
python publish.py --all         # опубликовать все кворки из kworks.json
python publish.py excel         # опубликовать один — по полю "id"
python publish.py excel --dry-run   # заполнить форму и остановиться, не публикуя

Свои данные держите в kworks.json рядом со скриптом (или укажите --data path/to/file.json). Пути к картинкам — относительно файла с данными.

Формат данных

{
  "kworks": [
    {
      "id": "excel",                        // как обращаться к кворку в командной строке
      "category": {
        "parent": "Бизнес и жизнь",         // ищется по вхождению текста
        "sub": "Персональный помощник",
        "attrs": ["Работа в MS Office", "Excel"]   // «Тип», «Программы» и т.п.
      },
      "title": "Я обработаю и оформлю таблицу Excel: формулы, сводные, графики",
      "desc": "Абзац о сути услуги…",
      "includes": ["чистка данных", "формулы", "сводная таблица"],   // блок «Что входит»
      "from_buyer": ["ваш файл", "что нужно получить на выходе"],    // блок «От покупателя»
      "volume": "Обработка одной таблицы: чистка, формулы, сводная", // объём услуг в 1 кворке
      "volume_number": 3000,                // если в рубрике объём числовой (знаки, штуки)
      "price": 1000,                        // цена ПОКУПАТЕЛЯ
      "days": 1,
      "options": [{ "name": "Макрос / кнопка автоматизации", "price": 500 }],
      "faq": [{ "q": "Макрос или формулы?", "a": "Как удобнее — сделаю по кнопке." }],
      "images": {
        "cover": "images/cover.png",        // обложка, минимум 660×440
        "gallery": ["images/2.png", "images/3.png"]
      }
    }
  ]
}

Про цены. В JSON — цена, которую видит покупатель. В форме kwork это value селекта, а подпись рядом («800 ₽») — то, что достанется вам: площадка забирает 20%. Если на обложке нарисована цена, рисуйте ту же, что в JSON, иначе карточка обещает одно, а корзина показывает другое.

Оговорки

Скрипт работает с вашим собственным аккаунтом продавца и делает ровно то, что вы сделали бы руками: заполняет форму и жмёт «Опубликовать». Это не накрутка, не мультиаккаунтинг и не обход защиты — сессия живёт в обычном профиле Chromium, вход выполняете вы сами.

Kwork меняет вёрстку без предупреждения. Если что-то отвалилось — запустите с --dry-run и посмотрите, на каком поле форма встала: селекторы собраны в одном месте, чинится быстро.

Лицензия

MIT.

About

Публикация кворков на kwork.ru из JSON: заполняет форму, грузит картинки и проверяет негласные правила площадки

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages