wfolio_client — это локальный Python-пакет для программного управления сайтом на платформе wfolio.ru. Он предоставляет типобезопасный API для автоматизации рутинных задач: обновление контента страниц, загрузка медиафайлов, управление магазином, настройка SEO, мониторинг статистики и многое другое.

Пакет полностью переписан на типизированных dataclasses (v0.1.0), поддерживает контекстный менеджер для автоматического закрытия HTTP-сессии и автоматическое извлечение CSRF-токена из HTML редактора.

Управление страницами и секциями

  • get_page_options() — список всех страниц сайта с id, заголовком, путём и уровнем вложенности.
  • get_page(page_id) — полная загрузка страницы со всеми секциями (контейнеры, текст, HTML, изображения).
  • save_page(page) — сохранение изменений с автоматическим повтором при конфликте ревизий (HTTP 409).
  • create_page(parent_id, title) — создание новой страницы-статьи внутри родительского раздела.
  • delete_page(page_id) — удаление страницы.
  • update_page_meta(page_id, ...) — изменение метаданных (заголовок, URL-путь, SEO, обложка, дата, видимость, теги).
  • replace_sections(page_id, section_ids) — переупорядочивание секций на странице.
  • clone_section(page_id, section_id) — дублирование существующей секции.
  • get_section_templates(page_id) — получение доступных шаблонов секций.
  • get_blog_articles(blog_id) — список статей в блог-секции.
  • set_item_visible(item_id, visible) — переключение видимости любого элемента.
  • get_page_edit(page_id) — AJAX-запрос формы редактирования.
  • get_preview(slug, device) — предпросмотр страницы в режиме desktop или mobile.

Объект Page предоставляет коллекцию секций через page.sections с методами поиска: find_by_id(), find(), find_all(), find_all_text(), find_all_html(), find_all_images().

Загрузка медиа и файлов

  • upload_media(file) — загрузка изображения или видео. Принимает путь (str/Path) или raw bytes. Возвращает UploadedMedia с URL и id.
  • upload_asset(file) — двухэтапная загрузка через asset pipeline (проверка существования → загрузка на uploader.wfolio.ru). Возвращает UploadedAsset.

Поддерживаемые форматы: JPEG (до 100 МБ), PNG (до 20 МБ), MP4/MOV (до 500 МБ). Автоматическая проверка размера и типа файла.

Магазин (Shop)

  • get_products() / get_product(id) — список и детали товаров.
  • create_product(name, price, description) — создание нового товара.
  • update_product(id, ...) — обновление данных товара.
  • delete_product(id) — удаление товара.
  • get_orders() / get_order(id) — список и детали заказов.
  • update_order(id, status) — обновление статуса заказа.

Дизайн и тема

  • get_theme() / set_theme(theme_id) — получение и смена темы сайта.
  • get_color_scheme() / set_color_scheme(scheme) — управление цветовой схемой.
  • set_dark_mode(enabled) — включение/выключение тёмной темы.
  • upload_logo(file) / delete_logo() — загрузка и удаление логотипа.
  • get_social_links() / update_social_links(links) — управление ссылками на соцсети.
  • set_announcement_bar(text, enabled, link_url) — настройка баннера-уведомления.

Настройки сайта

  • get_site_settings() / update_site_settings(site_name, locale, development_mode) — общие настройки.
  • get_redirections() / update_redirections(redirections) — правила перенаправления URL.
  • get_footer() / update_footer(text, links) — конфигурация подвала сайта.

SEO-оптимизация

  • get_page_seo(page_id) — получение SEO-настроек страницы (meta title, description, noindex, nofollow, canonical URL).
  • update_page_seo(page_id, meta_title, meta_description, path, noindex, nofollow, canonical_url) — обновление SEO-полей.
  • get_alt_texts(page_id) — получение alt-текстов для изображений на странице.
  • update_alt_texts(page_id, alt_texts) — массовое обновление alt-текстов (словарь {image_id: alt_text}).

Галереи и диск

  • get_projects() / get_project(id) — список и детали галерей-проектов.
  • create_project(name, visible) — создание нового проекта-галереи.
  • update_project(id, name, visible) / delete_project(id) — изменение и удаление проекта.
  • upload_to_project(project_id, file_data, filename, content_type) — загрузка файла в проект.
  • get_folders(project_id) / create_folder(project_id, name) — управление папками проекта.
  • update_protection(project_id, protected, password) — установка парольной защиты галереи.

Подборки и профиль

  • get_selections(project_id) — получение подборок/избранного для проекта.
  • export_selection_csv(selection_id) — экспорт данных подборки в CSV.
  • enable_download(selection_id, enabled, download_format) — управление скачиванием подборки.

Профиль / визитка:

  • get_profile() — получение профиля пользователя (имя, компания, контакты).
  • update_profile(display_name, first_name, last_name, company, position, email, phone, website, address, avatar_id) — обновление данных визитки.

Домены, чат и правовые настройки

Домены:

  • get_domains() — список зарегистрированных доменов.
  • register_domain(domain_name, period_years, privacy_protection) — регистрация нового домена.
  • connect_domain(domain_name) — подключение существующего домена.
  • enable_ssl(domain_id, auto_provision) — включение SSL-сертификата.
  • set_subdomain(subdomain) — настройка поддомена.

Чат-виджет:

  • init_chat(cw_conversation_cookie) — инициализация менеджера чата (требует отдельный cookie).
  • Управление контактами, диалогами, сообщениями, агентами и кампаниями через client.chat.

Правовые настройки:

  • get_privacy_policy() / update_privacy_policy(content, enabled, required) — политика конфиденциальности.
  • get_cookie_consent() / update_cookie_consent(enabled, text, ...) — настройка согласия на cookies.
  • get_age_warning() / update_age_warning(enabled, message, require_confirmation) — предупреждение 18+.

Статистика

  • get_stats_current_visitors() — количество посетителей онлайн прямо сейчас.
  • get_stats_top_stats(period, date) — обзор ключевых метрик за период (7d, 30d, и др.).
  • get_stats_main_graph(period, date) — данные основного графика посещений.
  • get_stats_sources(period, date) — разбивка трафика по источникам.
  • get_stats_top_pages(period, date) — самые посещаемые страницы.
  • get_stats_countries(period, date) — география посетителей.
  • get_stats_browsers(period, date) — распределение по браузерам.
  • get_stats_operating_systems(period, date) — распределение по ОС.
  • get_stats_entry_pages(period, date) / get_stats_exit_pages(period, date) — точки входа и выхода.

Обработка ошибок

Все исключения наследуются от базового WfolioError:

  • SessionExpiredError — сессия истекла или недействительна (HTTP 401/403).
  • CSRFTokenError — не удалось извлечь или применить CSRF-токен.
  • RevisionConflictError — конфликт ревизий при сохранении (HTTP 409).
  • SectionNotFoundError — запрашиваемая секция не найдена на странице.
  • SaveError — ошибка при сохранении страницы или других сущностей.
  • UploadError — ошибка при загрузке медиа/файлов.
  • ProductError / OrderError — ошибки операций магазина.
  • SettingsError / DesignError / DiskError / SelectionError — ошибки соответствующих модулей.
  • ProfileError / SEOError / ChatError / DomainError / LegalError — специализированные ошибки.

Исходный код и примеры находятся в папке wfolio_client/ проекта.

Статьи

Автообновление. Портретный фотограф в Самаре Семенов Сергей

Сравнение цен на популярные LLM-агрегаторы в России

Российским разработчикам нужен удобный LLM API. Из-за ограничений по оплате и доступу многие ищут аналог OpenRouter...
Автообновление. Портретный фотограф в Самаре Семенов Сергей

Модель GLM-5 в Polza.ai

GLM-5 появился в сервисе Polza.ai — новый уровень ИИ в проектах. Сервис Polza.ai расширил каталог доступных моделей —...
Автообновление. Портретный фотограф в Самаре Семенов Сергей

Сравнение цен Polza.ai и Openrouter

Подробное сравнение цен агрегаторов Openrouter и Polza.ai. Первый можно оплатить только иностранной картой,...
Автообновление. Портретный фотограф в Самаре Семенов Сергей

iFlow.cn — бесплатный агрегатор LLM: обзор моделей

iFlow.cn — сильный агрегатор LLM с бесплатным доступом к ряду топовых моделей (Qwen3, DeepSeek, GLM, Kimi)
Автообновление. Портретный фотограф в Самаре Семенов Сергей

Цены на модели через polza.ai

Сравнение стоимости запросов к моделям через llm-агрегатора polza.ai. Сделал таблицу, т. к. на официальном сайте эта...
Автообновление. Портретный фотограф в Самаре Семенов Сергей

Фото и видео с помощью нейросети со своим лицом бесплатно

Инструкция как сделать историю из фото и видео со своим лицом совершенно бесплатно, и даже без пробной подписки. Тут...
Автообновление. Портретный фотограф в Самаре Семенов Сергей

Полное сравнение агрегаторов LLM для разработчиков из России

Полное сравнение LLM-агрегаторов для разработчиков из России: OpenRouter, Polza.ai, BotHub и RouterAI. Цены, способы...
Автообновление. Портретный фотограф в Самаре Семенов Сергей

Почему Wfolio?

Когда я стал развивать свои услуги как фотограф, передо мной встал выбор: оформить портфолио на обычном недорогом...
Автообновление. Портретный фотограф в Самаре Семенов Сергей

Как подключить LLM и оплатить из России

Как я решал проблему доступа к языковым моделям из России — и нашел BotHub. Очень необычная статья на сайте...
Автообновление. Портретный фотограф в Самаре Семенов Сергей

TFP в Самаре

Приглашаю на атмосферную TFP-фотосессию в историческом центре Самары ранним утро. Лёгкий макияж, нежный свет,...
Автообновление. Портретный фотограф в Самаре Семенов Сергей

Панорамы

Автообновление. Портретный фотограф в Самаре Семенов Сергей

Самара. Открытые фотостудии

На этой странице вы найдёте актуальные интерьеры фотостудий в Самаре. Эта информация регулярно обновляется...
Автообновление. Портретный фотограф в Самаре Семенов Сергей

Тольятти. Открытые фотостудии

На этой странице вы найдёте актуальные интерьеры фотостудий в Тольятти. Эта информация регулярно обновляется...
Автообновление. Портретный фотограф в Самаре Семенов Сергей

Санкт-Петербург. Открытые фотостудии

На этой странице вы найдёте актуальные фотографии интерьеров фотостудий в Санкт-Петербурге (часто ищут как фотостудии...
Автообновление. Портретный фотограф в Самаре Семенов Сергей

Казань. Открытые фотостудии

На этой странице вы найдёте актуальные интерьеры фотостудий в Казани. Эта информация регулярно обновляется...
На сайте используются файлы cookie. Продолжая просмотр сайта, вы разрешаете их использование. Политика конфиденциальности