Как создаются Леновости: часть техническая
Буду краток, Леновостям год. Обойдёмся без статистики, гордиться всё равно особо нечем, лучше покажу закулисье: процессы технические и творческие. В интересах читателя, первые сильно утрировал, так что прошу зануд отойти от поля ввода комментария ;-)
Китайский трактор
Утро начинается с запуска комбайна. Это не шутка, а технический термин. «Комбайнами», по-английски «Harvester [харвестер]», называют программы, которые собирают данные с сайтов, в моём случае — новости. Комбайн состоит из трёх частей:
1. Обходчики — маленькие самостоятельные программы, каждая из которых умеет собирать новости с одного сайта. Например, обходчик «ТАСС» отвечает только за этот сайт, а «Интерфакс» за другой, и т.д.
2. База данных — обходчики сохраняют в неё заголовки новостей, ссылки, даты и, если возможно, аннотации.
3. Сайт — показывает новости из базы данных.
«Комбайн» работает на китайском планшете с Алиэкспресса, название которого не возьмусь выговорить. За свою функцию прозван «Китайский трактор»:
«Трактор» стоит на тумбочке рядом со столом и ждёт нажатия кнопки «Старт / Launch», после чего двадцать обходчиков начинают заполнять базу данных новостями. Результат выглядит так:
Откроем сайт «Комбайна» на настольном компьютере и посмотрим на результат в человеческом виде:
В левом верхнем углу крупный счётчик непрочитанных новостей, чуть поменьше для всех и время последнего сбора урожая. Ниже категории «Home, Foreign, ntab / Наши СМИ, Импортные, Энтаб» и переключатель «Viewed / Скрывать прочитанные».
В центре — заголовки новостей, которые пролистываю как мышью, так и клавиатурой, при помощи стрелок или кнопок «W» и «D». Последнее очень удобно во время завтрака: если в правой руке кружка чая, то использую «W/D», если левая занята бутербродом — то стрелки. Кнопки «Ввод» и «Пробел» открывают новость в новой вкладке:
На прочтение ста заголовков уходит три минуты. В день их набирается около 900 из наших СМИ, 600 из импортных и 300 для Энтаба. По понедельникам — 2700 всего.
Гончая
Все заголовки просмотрены, а браузер трещит от количества открытых вкладок с новостями. В дело вступает «Гончая» — программа, которая добавляет на любой сайт поле для ввода текста и сохраняет его в базе данных. Выглядит она так:
А управляется так:
Новости в выпуске разбиты на категории:
Leader / Лидер — Главные новости в начале выпуска.
Body — Все остальные.
HQ — Штаб докладывает.
NT / Заметки — Они для меня и в выпуск не попадают. Например, если добавить в заметки новость «Лавров во вторник приедет в Эфиопию», то программа напомнит мне во вторник написать об этом.
В заголовке выпуска указано количество: «50 Леновостей за 5 минут». Но на самом деле это количество событий, а не ссылок. Например, такие новости как «Статус Ук-трубы, Запасы газа, Песков и т.п.» не считаются. Все новости из «Штаб докладывает» считаются за одну. Не учитываются связанные с одним событием новости, например «Санкции США: не давать Китаю компьютерные чипы» и «Китай осуждает санкции США» вместе увеличивают счётчик на единицу, хоть и занимают две строчки. Переключатель «Count / Счётчик» говорит программе: «добавь новость, но не считай её».
Гончая здорово экономит время. Она сама выбирает выпуск, категорию, заполняет время и дату. Конечно, всё это можно поправить, если ошибётся. Мне остаётся написать краткую версию и нажать «Отправить». Хотя и это не обязательно — она умеет писать некоторые новости, такие как «Запасы газа в ЕС, Запасы нефти в США, Рейтинг Путина, Наш международный кошелёк и т.д.» Достаточно открыть такую и Гончая посчитает цифры и заполнит текстовое поле:
Но самое крутое в Гончей — это сочетания клавиш, благодаря которым не нужно убирать руки с клавиатуры:
Ctrl + H — Показать/спрятать Гончую
Ctrl + F — Фокус в поле ввода
Ctrl + T — Задать время
Ctrl + D — Задать дату
Ctrl + С — Включить/выключить счётчик
Ctrl + → и Ctrl + ← — Сменить категорию
Ctrl + 1 и Ctrl + 2…0 — Сменить выпуск
Ctrl + Enter — Отправить
Выделить текст на странице, потом Ctrl + F — Скопировать его в поле ввода
В среднем требуется 1,7 секунды, чтобы перевести руку с клавиатуры на мышь, навести курсор на кнопку и нажать её. Поверьте на слово, я десять лет занимаюсь эргономикой программ. Казалось бы, пара секунд — экая мелочь, но умножьте на количество новостей и получите 8 минут в день, которые лучше потратить на прочтение 250 заголовков. Все эти «мелочи» удвоили выпуски: год назад едва-едва успевал написать 50 леновостей с двух сайтов, а сейчас пишу 120 с шести. Выглядит это так:
Комбайн собрал новости, а Гончая сохранила краткие версии в базе данных. Осталось подготовить выпуск к публикации.
Кроткий редактор
Редактор — это сайт, который загружает из базы данных краткие версии новостей. Для простоты демонстрации записал несколько случайных, не стоит вчитываться в текст:
В левом верхнем углу крупный счётчик событий и два маленьких: время чтения и количество новостей. Чуть ниже индикаторы заполнения категорий и переход к публикации.
Для редактирования нужно нажать на текст новости и откроется форма:
Управление схоже с Гончей, разве что тут можно поправить ссылку или скрыть новость, нажав на синий прямоугольник слева от неё: например, 15:45 в выпуск не попадёт.
Редактор умеет генерировать посты для Телеграма, Дзена, Бусти и Пикабу:
Осталось выделить текст, скопировать в соцсеть и нажать «опубликовать».
Планы на будущее
Накопилось более сотни задач и идей по улучшению программ. И это не считая десятка багов… В качестве заключения, расскажу об интересных:
Поиск дубликатов для Комбайна
Обходчики умеют игнорировать дубликаты новостей на одном сайте. Например, если у ТАСС в разделах «Экономика» и «Политика» попадутся одинаковые заголовки, то в базу данных отправится только один. Но это не работает между сайтами: если ТАСС и Интерфакс напишут об одном событии, то и обходчики сохранят два заголовка. Планирую научить их сравнивать тексты новостей разных сайтов и выявлять дубликаты.
Нейросеть для Гончей
Все нейросети, которые видел, пишут топорно и чрезвычайно медленно для моего темпа. Собираюсь сделать свою и обучить на выпусках Леновостей, чтобы Гончая могла писать не только примитивные новости. Конечно, совсем от работы она не избавит, но скорость повысит. Назову её «Песков 1.0» :-)
Алиса для Редактора
Редактор легко научить делать аудиоверсии Леновостей, например, озвученные Алисой Яндексовной. Но бюджета на эту барышню нет. Тут хотел поворчать «как же чертовски сложно продвигать канал о политике», но передумал. День рождения проекта всё-таки. Пойду отмечать ;-)
Часть творческая, о том какие новости попадают в выпуски, выйдет на выходных.