Хранение данных о медиаконтенте (видео, соцсети) в базе данных CS CRM
Этот пост был дополнен механизмом для автоматической вставки видео из CS CRM на мой сайт Cs-Cs.Net и немного переписан заново, так как функции системы были сильно расширены. Исходная версия поста написана в Октябре 2023 года.
Некоторое время назад я начал задумываться о том, как так получается: я храню все исходники документов по щитам, исходники сигналов ввода-вывода и карт регистров ПЛК, исходники актов, договоров, файлов, проектов, веду учёт устройств и оборудования, материалов и других объектов в своей CS CRM-системе (все посты про тэгу), а вот данные о видео для постов на моём блоге теряются и нигде не хранятся…
Нет! Это не про исходники видео (они-то как раз хранятся), а про метаданные этих видео: название, описание, тэги и прочие их параметры. Я расскажу вам про то, как я создал удобный инструмент для хранения данных о видео и для удобной автоматической вставки их на сайты, созданные на WordPress, включая мой собственный сайт — Cs-Cs.Net. Теперь достаточно внести информацию в базу CS CRM, загрузить видео на хостинг, вставить на сайте короткий ID — и видео из базы вставится на сайт автоматически со всеми его параметрами и даже ссылками!
Для справки дам все ссылки на мои текущие каналы:
- YouTube Laboratory (Техника);
- RuTube Laboratory (Техника);
- YouTube Studio (Световые пульты, Шоу и Барабаны);
- RuTube Studio (Световые пульты, Шоу и Барабаны).
Подписывайтесь на все!
Содержание
1. Возможности системы. Предпосылки создания.
Когда я начинал создавать канал на YouTube (хаха, про это и реакцию на него людей с пузырьками в голове есть этот пост), то я заполнял описания видео как попало. Иногда, когда я готовил видео к будущим публикациям, я создавал текстовый файл, где хранил нужные метаданные до того, как видео будет опубликовано, а потом удалял этот файл как ненужный, вставив все данные на YouTube. Особенно как попало я заполнял тэги для видео (и это стало мне потом мешать).
Но что будет, если я (или другие) захотят сделать репост этих видео или других материалов на другие соцсети (Дзен, РуТуб или ещё кого-то)? Ну, можно открыть ЮТуб и скопировать всё оттуда. А если ЮТуб вообще закроют (этим нас постоянно пугают), и все эти метаданные потеряются? Хранить всё в текстовом файле или Экселе? Ну, можно.
А если надо будет сортировать всё по группам? Или что-то удалить из основного списка, но всё равно оставить данные? Или найти все видео, для которых нет репостов, но которые уже вставлены в посты на сайте? А если надо будет быстро добавить во все посты на сайте новый репост (зеркало) видео с другого хостинга?
Думал-думал я, а потом взял и написал в своей CRM функционал для хранения и этой информации. Всё-таки когда-нибудь я заведу себе СоцСети для того, чтобы делать там новости-посты вида «Написал новый пост, идите читайте», и эту информацию я тоже хотел бы хранить для репостов в другие СоцСети.
Ещё я хотел разделить каналы на ЮТубе. Когда-то я создал опрос, и многие сказали, что разделять каналы не надо.
Опрос о разделении канала YouTube на два и его результаты (плохие)
Но всё же, когда я доделаю домашнюю студию, я склоняюсь к тому, чтобы каналы разделить: я считаю, что сценический свет и щиты с автоматикой — это разные целевые аудитории. Я хочу развивать свои световые шоу (пусть и в домашнем формате), и мне не нужно, чтобы в видео с ними мне писали что-то типа «Шаман, хотел спросить у тебя про ОВЕН, как с тобой связаться», «Чувак, если бы я был твоим соседом — дверь бы заварил» или «Что это за видос в трусах, давай про щиты».
Если я буду разделять каналы, то мне нужно будет решить вот какую задачу: перезалить видео на второй канал с такими же данными (название, описание), а потом найти все места, где использовалось прежнее видео и заменить код вставки видео на новый. Без автоматизации это была бы ужасно сложная работа!
Через полтора года после выхода первой версии системы хранения медиаконтента, когда я загрузил свои видео на RuTube, я задумался о том, как автоматизировать управление видео в постах на моём сайте Cs-Cs.Net так, чтобы можно было автоматически добавлять копии-зеркала к уже вставленным видео, скрывать ненужные видео или изменять их ссылки, если я перезалью их на другие хостинги.
Я не представляю, как устроено хранение таких данных в организациях и их отделах, отвечающих за СоцСети и публикацию контента (если кто-то использует информационные системы для хранения такой информации — поделитесь со мной пожалуйста). Если бы я консультировал такие организации — то предложил бы им свои разработки: ведь это так кажется, что для загрузки видео достаточно вписать что попало.
Вот задумки и возможности моей системы и то, какие задачи она решает:
- Хранение всех данных в единой CRM/ERP-системе моего предприятия без применения дополнительных или сторонних программ. Это позволяет заполнять и резервировать информацию в единой базе данных, не размениваясь на разные дополнительные файлы, папки и не думать, что ты забыл сделать резервную копию каких-то из них, а работа с данными выполняется в едином привычном интерфейсе;
- Выполняется правило «Сначала проектируем, потом делаем»: все исходные данные перед публикацией можно заполнить в базе, а потом скопировать их в СоцСеть или Видеохостинг, а не наоборот. Более того — можно создавать план публикации контента, создав в базе сразу несколько объектов заранее, а потом загружать их на хостинги. Я стал делать именно так, и это сильно структурировало мою работу с контентом;
- Группировка контента по папкам: например, по СоцСетям или Каналам на Видеохостингах. В папке можно указывать параметры по умолчанию, которые будут подставляться автоматически в каждый новый объект, созданный в такой папке;
- Хранение информации о локальном видео: исходный путь, размер файла, папка файла, длина видео. Есть кнопки для быстрого открытия папки с видео (чтобы его оттуда можно было перетащить в браузер для загрузки на Видеохостинг) или самого видео для просмотра;
- Хранение информации о данных, которые указываются в СоцСети или Видеохостинг: название, ссылка, описание, ключевые слова, тэги, категория, плейлист, дата загрузки, текст поста (контент);
- Хранение информации о местах использования объекта (например, статьях или интернет-ресурсах, куда вставлено видео) для быстрого доступа к ним;
- Хранение информации о Связях (зеркалах, репостах) основного объекта. Для каждой связи можно указать приоритет (порядок в списке), отдельные характеристики (название, раздел, плейлист, ссылка, дата загрузки и другие) и места использования;
- Автоматическая подстановка ссылок URL на зеркала в основную ссылку на объект (для быстрого копирования);
- Хранение свойств (пары «Имя = Значение») объекта для быстрого доступа к его характеристикам или информации;
- Хранение вложений к объекту. Например, можно сохранить созданную картинку-превью для видео или какой-либо скриншот, документ и другое;
- Выгрузка данных для текущего видео или всей группы по заданным шаблонам. Например быстро сформировать текст для копирования в поля видеохостинга при загрузке видео. Или сформировать код для встраивания видео;
- Автоматическое встраивание видео в посты на WordPress. Достаточно указать ID объекта из CS CRM, и в пост встроится само видео и все его зеркала в нужном порядке. Это происходит автоматически!
Например, если мы добавили новое зеркало — то оно появится во всех местах, где используется объект из CS CRM с заданным ID без ручного редактирования постов. Или если скрыть какое-то зеркало, сняв галочку «Активен», то оно само исчезнет из всех постов на сайте!
Вот ради последней функции я и обновил весь пост про свою систему хранения медиаконтента.
Постепенно я занёс в свою CS CRM данные обо всём контенте, который лежал у меня на YouTube, а потом начал переносить его на RuTube. Первая копипаста заняла три дня!
Все данные о текущих видео на канале внесены в базу CS CRM
Хочу сказать, что созданная мной система развязала мне руки:
- Мне проще сначала заполнять все данные (название, описание) в базе, а потом копировать их на Видеохостинги;
- За счёт механизма зеркал я могу легко загружать видео на другие хостинги и видеть то, какие видео загружены, а какие — нет;
- За счёт механизма автоматической вставки видео и его зеркал на мой сайт я могу не злиться на то, что после загрузки видео на новый хостинг (например, в Dzen или VK Video) мне нужно будет руками редактировать около 710 постов, выискивая и вставляя туда новые видео!
В общем, теперь я могу плодить контент: он будет под строгим учётом!
2. YouTube и RuTube.
Я писал свой функционал на основе ЮТуба, так как мои основные каналы находятся именно на YouTube, но заложил возможность расширения до других соцсетей.
Мне очень хотелось создать свою систему так, чтобы в ней хранилось максимум доступной мне информации.
Список видео на канале YouTube
В ЮТубе базовыми параметрами являются Название и Описание (в описание я вставляю ссылки на пост, к которому относится это видео). Ещё можно сохранить имя исходного файла видео, его длину и ссылку на само видео: тогда можно, не заходя на канал, быстро найти нужное видео прям в моей CS CRM и послать кому-то ссылку на него.
Общая информация о видео на YouTube: название, описание, ссылка, длина
Дополнительно я сохраняю инфу о плейлисте, тэгах и категории видео. Тэги являются ключевыми словами, по которым можно найти видео или какие-то понятия, которые в нём объясняются.
Дополнительная информация о видео на YouTube: плейлист, тэги, категория
А вот в RuTube на Апрель 2025 года всё очень бедно. Информации там мало.
Процесс загрузки видео на хостинг RuTube
Здесь можно указать только название, описание, плейлист и категорию видео, а так же установить параметры доступа: для всех или по ссылке. Не хватает поля с тэгами (для улучшения поиска по словам) и имени исходного файла, которое показывается в YouTube.
А ещё в RuTube ручная модерация видео. Это выглядит крайне забавно: когда видео стоит в статусе «На модерации», у него 0 просмотров. А после прохождения модерации — 1-2 просмотра.
Список видео на RuTube
3. Данные медиаконтента. Хранимая информация.
Технически моя система построена так же, как и учёт оборудования/устройств — на базе справочника 1С.
Справочник для хранения данных о контенте в CS CRM
3.1. Группы (Папки) объектов.
При помощи групп (папок) можно сортировать контент по разным соцсетям или разделам: Видеохостингам, Каналам или другим критериям. Поддерживаются вложенные группы, поэтому можно сделать сортировку вида Канал\Плейлист\Видео.
Настройки группы контента в CS CRM (вместе с настройками по умолчанию для новых объектов)
Для группы можно указать:
- Название в базе, которое будет названием профиля СоцСети или Канала на Видеохостинге;
- Ссылку на Канал или профиль в СоцСети и его дату создания;
- Свободный комментарий;
- Контент (описание Канала или профиля СоцСети);
- Значения по умолчанию для всех объектов, которые будут созданы в этой папке.
3.2. Основные свойства объектов.
Общие настройки объекта контента (видео, пост)
Для каждого объекта сохраняются такие данные:
- Название для нас внутри базы;
- Внутренний ID в базе (уникальный);
- Признак «Выгружается». Если галочка снята — то объект скрывается с моего сайта Cs-Cs.Net целиком со всеми Связями;
- Признак «Активен». Если галочка снята — то с сайта Cs-Cs.Net скрывается основной объект, а его Связи, если есть, остаются опубликованными;
- Публичное название опубликованного материала;
- Тип объекта (пост, видео, опрос) и ресурс, на котором он опубликован;
- Группа объекта (плейлист, например);
- Категория объекта (из стандартных для ЮТуба или других сетей);
- Ссылка на публикацию (по нажатию кнопки справа она открывается в браузере);
- Дата публикации;
- Различные флаги и признаки: Shorts, Скрытый, Архив, Закрытые комменты, Демо, Трансляция и так далее;
- Путь и имя исходного файла (кнопки справа открывают файл или его папку);
- Размер исходного файла и его длина по времени;
При создании нового объекта часть его данных заполняются из заданных по умолчанию для группы, в которой он создаётся. Например, я всегда пишу в начале описания видео «Пост тут: ***» — вот пусть это сразу и подставляется в новое видео.
Большинство параметров выбираются из раскрывающихся списков, которые содержат стандартные значения и все значения, которые были введены сюда ранее для всех объектов.
Это удобно: пара кликов мышкой, и нужное значение уже выбрано (и мы не ошибёмся при его ручном вводе):
Выбор введённых значений из раскрывающихся списков
Для Описания и Тэгов есть два больших поля неограниченной (в рамках 1Ски) длины.
Описательные настройки объекта контента (видео, пост)
Так как из ЮТуба тэги копируются без пробелов после запятой (например «Автомат,Сборка щита,ПЛК»), то у меня появились кнопки обработки этих тэгов. Тэги можно разделить пробелами, отсортировать по алфавиту и выбрать из списка всех когда-либо введённых тэгов.
Когда я посмотрел на этот список, то немного ахнул и долго матерился: много тэгов записано разным способом, а часть — повторяется по смыслу.
Например, где-то написано «КиШ», а где-то «Король и Шут», где-то «Маркировка», а где-то «Маркировка кабелей». Я думаю, что когда-нибудь я приведу тэги в порядок и загружу их на ЮТуб обратно, а потом буду вести тэги более аккуратно.
Окно выбора тэгов из уже введённых ранее (видно, что некоторые дублируются)
В будущем при создании новых видео эта кнопка позволит выбирать те тэги, которые уже были введены с сохранением их написания. А если надо будет создать новый тэг — то его можно ввести в текстовое поле напрямую.
Следующая вкладка позволяет сохранить текстовый контент (если это будет пост в соцсети) и записать ссылки на места или материалы, где этот контент был использован (посты на блоге, в инете, ссылки на форумах). Пока это всё будет заполняться вручную (одна строка = одна ссылка), а дальше я посмотрю, что можно выдумать.
Дополнительные настройки объекта контента (видео, пост)
Этой информации мне полностью хватает для того, чтобы вести учёт всему моему контенту.
3.3. Свойства, Вложения и Картинки.
Ещё у каждого объекта есть возможность указывать свойства с заранее заданными именами:
Свойства объекта контента
При первой публикации объекта автоматически заполняется свойство «Дата первой публикации». Можно указать и другие свойства, например «Место съёмки» или прочие подобные им. Механизм свойств позволяет легко добавлять произвольные поля к объектам, не трогая структуру данных всей базы.
Сами свойства выбираются в стандартном окне, которое я описывал в посте про учёт оборудования и устройств:
Система свойств объектов CS CRM: Окно добавления свойства
Свойства там сортируются по группам (если заданы) и по алфавиту. Можно выбирать их из списка, печатая первые буквы их названия. Для каждого свойства хранится история всех его введённых значений.
Также в редактировании самого свойства можно задать стандартные значения, чтобы можно было выбирать из них, а не выдумывать значения вручную:
Система свойств объектов CS CRM: Редактирование Свойства (в том числе и значений по умолчанию)
Конечно же, для объектов медиа есть возможность прицепить вложения — как в электронной почте:
Вложения объекта контента
При помощи вложений можно сохранить какие-то скриншоты, уведомления или самое банальное: картинку-превьюшку для видео, которая часто создаётся отдельно, и которую надо не потерять. Конечно же можно хранить здесь фотографии для короткого поста в СоцСетях.
Все вложения тоже хранятся в моей базе и открываются из неё (вложение можно внести в базу или выгрузить из неё, сохранив как обычный файл на диске).
Специально заострю внимание на этом ещё раз: база копируется единой процедурой и НЕ имеет внешних файлов, раскиданных по диску: всё находится в единой папке, что сильно упрощает бэкапы (для бэкапов я пользуюсь старой программой KLS Backup, про которую писал тут).
Если вложение имеет тип «Картинка», то все такие вложения показываются на отдельной вкладке в списке:
Вложенные картинки объекта контента
Например, здесь я сохранил скриншот уведомления о том, что видео «Linkin Park — Faint» заблокировано в РФ из-за санкций.
4. Связи объектов (зеркала, репосты).
Как мы видим, ситуация в мире меняется. И я не только про санкции! Бывает и так, что какие-то проекты или хостинги закрываются, а вместо них открываются новые, и поэтому нужно думать о том, куда загружать контент, создавая его копии или репосты.
Моя база позволяет хранить информацию и о таких случаях. Для этого в ней сделан механизм Связей:
Список связей элемента контента (зеркала)
К каждому объекту контента можно добавить неограниченное число Связей. Информацию можно хранить при этом двумя способами:
- В объекте храним данные для основной СоцСети или Видеохостинга (например, YouTube), а в Связях — дополнительные данные для зеркал;
- В объекте храним общие данные для всех Связей, а в Связях — конкретные ссылки на СоцСети или Видеохостинги.
Каждая Связь редактируется в отдельном окне:
Редактирование связи элемента контента (основные свойства)
Вот что тут можно хранить:
- Название Связи в конкретной СоцСети или Видеохостинге (можно скопировать с основного объекта);
- Вид связи: Зеркало, Кросс-Пост, Связь с другим объектом контента (указывается объект для связи);
- Признак «Активен». Если галочка снята — Связь снимается с публикации на сайте Cs-Cs.Net;
- Приоритет от 0 до 99. Связи публикуются на сайте Cs-Cs.Net по убыванию приоритета. Основной объект имеет приоритет 50, и поэтому можно расставить Связи так, чтобы они публиковались раньше или позже основного объекта;
- Тип Связи (пост, видео, опрос) и ресурс, где она опубликована;
- Группа (плейлист, например). Можно скопировать или указать основную или свою;
- Категория (из стандартных для ЮТуба или других). Можно скопировать или указать основную или свою;
- Ссылка на публикацию (по нажатию кнопки справа она открывается в браузере);
- Дата публикации;
- Различные флаги и признаки: Shorts, Скрытый, Архив, Закрытые комменты, Демо, Трансляция и так далее.
На вкладке «Контент» можно указать текст, уникальный для этой Связи (например, если в какой-то СоцСети есть ограничение длины поста, и для неё надо сократить основной текст) и ссылки мест использования.
Редактирование связи элемента контента (контент и ссылки мест)
Для текста и ссылок есть кнопки быстрого копирования информации из основного объекта.
5. Выгрузка данных по шаблонам.
Чтобы можно было быстро выгрузить данные из базы в виде текста, я создал механизм шаблонов, подобный тому, который был описан в проектировании сигналов ввода-вывода и регистров ПЛК.
Шаблон представляет собой текстовый файл, в котором в нужном порядке указываются поля из базы данных.
Все такие шаблоны подгружаются в меню и доступны для выбора:
Меню шаблонов для выгрузки информации о контенте
Если шаблон применяется к одному объекту — то данные выгрузятся только для него. А если ко всей группе (папке) — то данные будут выгружены по всем объектам в ней.
Первое, для чего мне удобен шаблон — это вывод данных для копирования при загрузке видео на хостинг:
Пример шаблона для загрузки видео на хостинги
Вместо того, чтобы открывать объект и таскаться по его полям, я получаю удобную и нужную мне сводку данных в одном месте.
Второе — формирование кода для вставки видео на сайт Cs-Cs.Net. Про это будет следующий раздел моего поста.
6. Вставка и управление видео на сайтах WordPress.
А теперь — главная и самая убийственная возможность моей системы, ради которой я сделал доработки в 2025 году!
АВТОМАТИЧЕСКАЯ ВСТАВКА ВИДЕО В ПОСТЫ НА МОЁМ САЙТЕ Cs-Cs.Net!!!
Вот что это даёт:
- Всё, что нам надо — указать ID видео из CS CRM в тексте поста. Дальше всё произойдёт автоматически;
- Вставляются видео из основного объекта и все его Ссылки, отсортированные по их Приоритету;
- Больше не надо копировать код для встраивания видео (заходить на YouTube/RuTube, открывать видео, копировать код). Весь код встраивания генерируется автоматически без участия человека;
- Если какие-то объекты или Ссылки скрыты галочками «Выгружается» или «Активен», то они автоматически снимаются с публикации с сайта.
К примеру, если какой-нибудь Видеохостинг закроется, или его запретят в нашей стране — мне достаточно поснимать галки «Активен» с его видео, и они сразу же удалятся с моего сайта. Без ручного редактирования постов; - Если к какому-то опубликованному видео добавили Связь (зеркало), то оно автоматически подгрузится во все посты на сайте, где используется опубликованное видео. Ничего редактировать не надо;
- В момент редактирования поста на сайте видео НЕ подгружаются, так как вместо полноценного кода встраивания (как было раньше) стоит лишь ссылка на ID видео из CS CRM. Это очень убыстряет работу редактора постов в админке и не жрёт память браузера бесполезной нагрузкой.
В общем, как говорил Дядя Скрудж в одной из серий Утиных Историй: «Работай головой, а не руками»!
Технически объект медиаконтента и его Ссылки определяются по ID, который генерируется в базе данных CS CRM. Этот ID уникален в пределах всей базы и не повторяется в ней (при генерации происходит проверка на повторение).
Этот ID указывается при редактировании объекта:
Индетификатор видео для выгрузки на сайты
Далее вся информация о об объектах и их Ссылках выгружается на мой сайт (ниже приведён отладочный журнал):
Процесс обновления данных о выгрузке видео (отладка)
Сама технология выгрузки — такая же, как и для Статусов Заказов, и она была описана в этом посте.
Раньше для вставки видео нужно было зайти на YouTube, загрузить там видео, нажать на него правой кнопкой мыши и выбрать «Скопировать код для встраивания».
Потом нужно было перейти из визуального в текстовый режим редактирования поста и вставить туда этот код. Причём важно было соблюдать нужное число переводов строк, так как в текстовом режиме две строки или HTML-код <p> трактуются как новый абзац.
Выглядел этот код примерно так:
Вставка видео на сайт: старый код от хостинга видео
После этого нужно было снова переключиться в визуальный режим редактирования поста, подождать, пока вставленное видео загрузится, и продолжить редактирование.
Сейчас же ВСЁ ОЧЕНЬ-ОЧЕНЬ ПРОСТО!!! Больше не надо заходить на условный YouTube и копировать оттуда код встраивания! Не надо переключать редактор в текстовый режим и вставлять этот код!
Прямо в обычном визуальном режиме редактирования мы вставляем конструкцию такого вида:
[CSMedia ID = "NNN"]
И в «NNN» указываем тот самый ID видео из CS CRM! ВСЁ!!!
Вот так это выглядит в реальном посте про DKC Avanti:
Вставка видео на сайт: новый шорткод автоматизированной вставки
Я даже сделал себе шаблон выгрузки таких кодов в CS CRM:
Шаблон для генерации шорткода вставки видео на сайт
А дальше происходит магия! В пост автоматически вставляются основное видео с YouTube и его зеркало на RuTube:
Результаты автоматизированной вставки на сайт видео и его зеркала
Дополнительно под каждым видео указывается прямая ссылка на него, чтобы её можно было скопировать и передать кому-нибудь.
Божечки! Я бы УБИЛСЯ, если бы всё это надо было бы делать руками! Нет уж! Я склонен работать головой и из меня вырастает технолог-оптимизатор, и я хочу применять и внедрять такие решения в чужой бизнес, получая за это деньги другого масштаба!
Руками мне пришлось плотно поработать два раза. Первый — это когда я копировал информацию про все загруженные на YouTube видео в базу (3 дня), а второй — когда вручную выколупывал из всех постов стандартные коды встраивания видео и менял их на свои из CS CRM (1,5 дня). Зато после этого старые посты с видео мне больше не надо трогать!
И, конечно же, видео в этом посте тоже опубликовано с использованием новой технологии!
(https://youtu.be/4qMXfO6Wb6A)
(https://rutube.ru/video/703156c0803daa67bb4a6f505f409e22/)
Проекту исполнилось 16 лет! Поддержать проект материально, проспонсировать проекты Автора или сделать ему подарок можно на этой странице: "Донаты и Спонсорство, Список Желаний".
0 Отзыв на “CS CRM: Хранение данных медиаконтента для СоцСетей (обновлено ‘2025)”