Полезные скрипты

Все вопросы, связанные с работой форума
Ответить
Аватара пользователя
Fanat
Регент
Регент
Сообщения: 1292
Зарегистрирован: 15 апр 2010, 11:55
Благодарил (а): 87 раз
Поблагодарили: 91 раз

Полезные скрипты

Сообщение Fanat » 08 фев 2023, 20:06

За последние несколько лет я написал простенькие скрипты (программы) на языке программирования Python, чтобы упростить себе выполнение некоторых задач, связанных с форумом и сериалом. Настало время поделиться этими скриптами. Кстати, область их применения совершенно не ограничивается "Чародеем".

Скрипты (будут) доступны по адресу https://disk.yandex.ru/d/IfDRnm-c21vzbA. Я буду добавлять их туда время от времени, а не сразу все. Об обновлениях буду сообщать в этой теме.

Разумеется, для использования этих скриптов нужно хотя бы немного разбираться в Python. Если вы разбираетесь в нём, то у вас не будет никаких проблем с пониманием моего кода, т. к. он очень простой, прямо-таки примитивный. Если же вы не разбираетесь в Python, то предлагаю вам его освоить. :)

Если у вас будут какие-то вопросы по этим скриптам, то не стесняйтесь спрашивать меня в данной теме или личных сообщениях. Если, однако, у вас есть общие вопросы о Python, не связанные напрямую с этими скриптами, то вам лучше обратиться к специализированным ресурсам, а не ко мне.

Навигатор по теме:

Аватара пользователя
Fanat
Регент
Регент
Сообщения: 1292
Зарегистрирован: 15 апр 2010, 11:55
Благодарил (а): 87 раз
Поблагодарили: 91 раз

make_previews.py

Сообщение Fanat » 08 фев 2023, 23:27

make_previews.py
08.02.2023: версия 1.0

Иногда мне бывает необходимо создать для кадров из сериала и фотографий уменьшенные изображения, которые будут использоваться в качестве превью на форуме. Если картинок всего две-три, то это не так уж и сложно сделать, например, в GIMP. А если картинок несколько десятков, то это уже гораздо утомительнее.

Кроме того, я люблю вставлять на превью кадров текст с указанием сезона, серии, минут и секунд, чтобы в дальнейшем можно было легко найти этот кадр в видеофайле. Наложить такой текст можно, конечно, в том же GIMP, но как-то не хочется возиться с этим, особенно если кадров много. :)

Здесь нужно отметить следующее.

Во-первых, имена видеофайлов у меня начинаются с номера сезона и серии:

Изображение

Во-вторых, я сохраняю кадры из видеофайлов с помощью проигрывателя MPC-HC:

Изображение

Это удобно тем, что данный проигрыватель вписывает в имя сохранённого кадра указание на момент времени с точностью до тысячной доли секунды. Например, при захвате кадра в момент времени 11:14,030 из видеофайла
1x21. The Hunt for Ashka.mkv
изображение будет сохранено в jpg-файл с именем
1x21. The Hunt for Ashka.mkv_snapshot_11.14.030.jpg.

Таким образом, имя файла с сохранённым кадром содержит всю необходимую информацию (сезон, серия, минуты и секунды), которую я люблю помещать текстом на превью.

Соответственно, я написал несложный скрипт. Он проходит циклом по всем файлам .jpg/.jpeg в указанной папке и делает следующее:
  • если имя файла уже содержит слово _preview, то такой файл считается готовым превью и пропускается;
  • если имя файла не содержит _preview, то он уменьшается до заданной высоты с сохранением пропорций и записывается в новый файл (причём с тем же dpi), имя которого содержит _preview перед расширением;
  • если вдобавок имя файла содержит слово _snapshot_, то такой файл считается кадром из сериала (см. пример выше) и на его превью накладывается текст с указанием сезона, серии, минуты и секунды, которые берутся из имени файла.
Превью записываются в папку, которая может как совпадать с исходной, так и отличаться от неё (это нужно указать самостоятельно). При этом нужно быть внимательным, т. к. файлы автоматически перезаписываются при совпадении имён (т. е. более старый файл теряется). Наиболее безопасный вариант - указывать для сохранения превью отдельную пустую папку.

Размер всех превью задаётся их высотой (см. выше). Это сделано из тех соображений, чтобы на форуме можно было разместить два превью в одну строку (через пробел) и при этом у них была одна и та же высота для эстетики.

Более тонкие настройки см. в самом скрипте.

Рассмотрим пример. Пусть в папке имеются три кадра из сериала и две фотографии:

Изображение

После выполнения скрипта (буквально парой кликов мыши) в эту же папку записались превью для всех пяти изображений. Обратите внимание на имена файлов с превью:

Изображение

При этом на превью для кадров из сериала были вставлены сведения о сезоне, серии, минутах и секундах (дробную часть секунд скрипт отбрасывает):

Изображение

Вообще, скрипт прямо-таки моментально обрабатывает десятки или даже сотни кадров из сериала и фотографий. Щёлкать мышью при этом нужно всего пару раз, а не десятки и сотни. Когда имеется много изображений, для которых нужны превью, этот скрипт очень выручает.

Ответить