# publishers.py
import json, os, time
from pathlib import Path
from typing import List, Optional
from xml.sax.saxutils import escape as xml_escape
class JsonFeedPublisher:
"""Копит записи и сохраняет JSON-фид для Тильды."""
def __init__(self, out_dir: str = "public", filename: str = "articles.json", base_url: str = ""):
self.out_dir = Path(out_dir); self.out_dir.mkdir(parents=True, exist_ok=True)
self.filename = filename
self.base_url = base_url.rstrip("/")
self.items: List[dict] = []
def post(self, title: str, content_html: str, url: str, published: Optional[str], tags=None, categories=None) -> Optional[int]:
ts = published or time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime())
slug = slugify(title)[:80] or hashlib.sha1(title.encode()).hexdigest()[:10]
# Пермалинк для карточки (если нужно — на ваш сайт/блог)
permalink = f"{self.base_url}/posts/{slug}.html" if self.base_url else url
self.items.append({
"title": title,
"html": content_html,
"url": permalink,
"source_url": url,
"published": ts,
"tags": tags or [],
"categories": categories or [],
})
return 1
def flush(self):
path = self.out_dir / self.filename
with open(path, "w", encoding="utf-8") as f:
json.dump({"items": self.items}, f, ensure_ascii=False, indent=2)
class RssPublisher:
"""Генерирует простой RSS-фид."""
def __init__(self, out_dir: str = "public", filename: str = "feed.xml", site_title="News", site_link="#", site_desc=""):
self.out_dir = Path(out_dir); self.out_dir.mkdir(parents=True, exist_ok=True)
self.filename = filename
self.site_title, self.site_link, self.site_desc = site_title, site_link, site_desc
self.items: List[dict] = []
def post(self, title: str, content_html: str, url: str, published: Optional[str], tags=None, categories=None) -> Optional[int]:
self.items.append({"title": title, "html": content_html, "link": url, "pubDate": published})
return 1
def flush(self):
def item_xml(it):
return (
" \n"
f" {xml_escape(it['title'])}\n"
f" {xml_escape(it['link'])}\n"
f" {xml_escape(it.get('pubDate') or '')}\n"
f" \n"
" \n"
)
xml = (
'\n'
'\n\n'
f'{xml_escape(self.site_title)}\n'
f'{xml_escape(self.site_link)}\n'
f'{xml_escape(self.site_desc)}\n'
+ "".join(item_xml(it) for it in self.items) +
'\n\n'
)
path = self.out_dir / self.filename
with open(path, "w", encoding="utf-8") as f:
f.write(xml)
Оставить заявку
ВЫВЕДЕМ ВАШ БИЗНЕС В РЕЖИМ ONLINE
Разработка и продвижение сайтов: опыт, индивидуальный подход, гибкость и надежность!
ПОЛУЧИТЕ БЕСПЛАТНУЮ КОНСУЛЬТАЦИЮ ПО ПРОЕКТУ
С вами свяжутся в ближайшее время
хxхВерстка хxх Сайты под ключ ххx Реклама в яндекс хxх Ux/Ui дизайн
хxхВерстка хxх Сайты под ключ ххx Реклама в яндекс хxх Ux/Ui дизайн
хxхВерстка хxх Сайты под ключ ххx Реклама в яндекс хxх Ux/Ui дизайн
хxхВерстка хxх Сайты под ключ ххx Реклама в яндекс хxх Ux/Ui дизайн
НАСТРАИВАЕМ ПОЛНОЕ ПРОДВИЖЕНИЕ
Мы команда по разработке и продвижению сайтов. Знаем все что необходимо компаниям для выхода на онлайн рынок. Создаем целые экосистемы для увеличения Вашего присутствия в онлайне, создание позитивного мышления Вашей целевой аудитории.
Наша команда может взяться за Ваш проект как с нуля так и на стадии исправлений недочетов от предыдущих исполнителей, проведем тщательный анализ и выведем Ваш бизнес на должный уровень.
За это время собрали огромный опыт в сфере разработки и продвижении сайтов. Все проекты доводятся исключительно до высокого результата. Для нас результат - это дольный клиент, вышедший в ONLINE, который получает огромный поток клиентов с помощью нас.
MARKET-BRAND.RU
О НАШИХ ПРОЕКТАХ
C 2013 ГОДА В СФЕРЕ DIGITAL
Рады видеть вас на нашем сайте давайте знакомиться!
Более 10-х лет разрабатываем сайты под ключ
хxхhtml и css хxх webflow ххx figma хxх скрипты и модификации
хxхhtml и css хxх webflow ххx figma хxх скрипты и модификации
хxхhtml и css хxх webflow ххx figma хxх скрипты и модификации
хxхhtml и css хxх webflow ххx figma хxх скрипты и модификации
Заказать сайт
Заказать сайт
Заказать сайт
С ГАРАНТИЕЙ УСПЕХА, И ПОЭТАПНОЙ ОПЛАТОЙ
ВЫВЕДЕМ ВАШ БИЗНЕС В ONLINE
Поэтапное создание сайта: от аналитики до запуска.
Сайт под ключ
Разработка одностраничных сайтов (landing page)
Разработка корпоративных, многостраничных сайтов
Разработка интернет магазинов до 5 000 товаров.
Разработка сайтов для онлайн-школ с доступом в личный кабинет с уроками после оплаты.
от 25 000
UI/UX ДИЗАЙН
Дизайн лендингов.
Дизайн многостраничных, корпоративных сайтов.
Дизайн интернет-магазинов.
Адаптивного дизайн (планшетные и мобильные версии).
от 20 000
Дизайн интерфейсов (сервисы, личные кабинеты).
РЕКЛАМА ЯНДЕКС.ДИРЕКТ
Создание рекламных кампаний на поиске Яндекс.
Создание рекламных кампаний в РСЯ.
Создание товарных и динамических рекламных кампаний.
Аудит ваших текущих РК и их оптимизация или пересборка.
от 15 000
Партнерская программа
ВЕРСТКА И НАСТРОЙКА
Наша компания приветствует партнерские программ и готова щедро отблагодарить наших партнеров за приведенных новых клиентов
Верстка готовых дизайн-макетов из Figma.
Базовая и продвинутая анимация.
Графические дизайнеры: разработка логотипов и айдентики.
Работа с кодом и модификациями.
Подключение сервисов приема данных, платежных систем, сервисов доставки.
Веб-разработчики: Битрикс 1С, Webflow, WordPress.
от 20 000
ПРИВЕДИ КЛИЕНТА И ПОЛУЧИ 10% ОТ ЧЕКА!
ДОРАБОТКА СУЩЕСТВУЮЩИХ САЙТОВ
UX аудит и улучшение дизайна и пользовательского опыта.
Настройка личного кабинета для онлайн-школ.
Редизайн сайта.
Доработка функционала.
Поддержка сайта.
1 000 ЧАС
Подключение и настройка сервисов сквозной аналитики.
Программисты: Phyton и Java с опытом разработки скриптов.
Работа с каталогом.
Дизайнеры мобильных приложений.
Работа с личным кабинетом.
Настройка email-рассылок.
Разработчики мобильных приложений.
Обучение владельцев сайтов управлению Tilda (личная встреча, видеосозвон, видеоуроки).
Оставьте заявку или напишите нам напрямую в мессенджеры
хx х1 месяц гарантии хxх Seo-оптимизация ххx Редактируйте сами хxх настройка аналитики
хx х1 месяц гарантии хxх Seo-оптимизация ххx Редактируйте сами хxх настройка аналитики
хx х1 месяц гарантии хxх Seo-оптимизация ххx Редактируйте сами хxх настройка аналитики
В с т р е ч а
1
Мы планируем провести короткую видеоконференцию или личную встречу для обсуждения нашего проекта. После этого мы отправим вам наше коммерческое предложение с указанием тарифов и сроков выполнения работ.
Д О Г О В О Р
2
Обсуждаем требования к проекту и составляем техническое задание на основе этих требований. Подписываем договор между заказчиком и исполнителем, в котором указываем условия работы, сроки, стоимость и этапы оплаты. Вносим предоплату в размере 50% от общей стоимости работ.
А Н А Л И Т И К А
3
Анализ конкурентов - это ключевой инструмент для составления уникального торгового предложения (УТП), определения особенностей вашего бизнеса и избежания ошибок. Тщательная аналитика целевой аудитории (ЦА) помогает определить, какой дизайн лучше всего подходит для вашего клиента.
П Р О Т О Т И П
4
Создание карты сайта . Сбор и подготовка контента. Работа с текстом . Отрисовка вайрфреймов. Low и high детализации вайрфрейма.
Д И З А Й Н
5
Изучение референсов и создание мудборда для проекта. Подбор цветовой палитры и выбор подходящих шрифтов для дизайна. Продумывание анимационных эффектов и их внедрение в дизайн. Отрисовка трех основных блоков. Создание адаптивного дизайна. Презентация проекта заказчику с подробными объяснениями.
В Ё Р С Т К А
6
Перенос утвержденного дизайна макета на CMS. Адаптация под утверждённые разрешения. Работа с анимацией сайта, чтобы сделать его более привлекательным для пользователей. Подключение домена и форм. SEO-оптимизация, чтобы он был более удобным для пользователей и привлекал больше трафика. Заполнение каталога. Тестирование сайта, убедиться, что он работает корректно и не имеет ошибок.
З А П У С К
7
Совместно проверяем работу нового сайта, радуемся успехам, но не забываем о том, что его необходимо продвигать и привлекать новых пользователей.