Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для URL, имени файла, имени объекта в каком-то софте и тд. Требования совместимости простые: в тексте должны быть только допустимые символы. Обычно это a-z, 0-9 и "_" или "-". То есть, только прописные буквы латинского алфавита и цифры (как пример).
Допустим, нам нужно название статьи в блоге преобразовать в slug для добавления его в URL этой статьи. Как это лучше всего сделать?
В Django по умолчанию есть готовая функция slugify для таких случаев.
Но я её никогда не использую. Почему? Потому что её недостаточно!
Приведём пример
>>> from django.utils.text import slugify
>>> slugify('This is a Title')
'this-is-a-title'
Пока всё отлично
>>> slugify('This is a "Title!"')
'this-is-a-title'
Спец символы удалились, всё хорошо.
>>> slugify('Это заголовок статьи')
''
Вот и приехали 😢. Если текст не английский то буквы просто игнорируются. Можно это поправить
>>> slugify('Это заголовок статьи', allow_unicode=True)
'это-заголовок-статьи'
Но тогда мы не вписываемся в условие. У нас появилась кириллица в тексте.
Так как я часто пишу сайты для русскоязычных пользователей эта проблема весьма актуальна. Я не использую стандартную функцию и всегда пишу свою.
Оригинал я не беру в расчёт и пишу полностью свою функцию. И так, по порядку:
🔸1. Исходный текст:
>>> text = 'Мой заголовок №10 😁!'
Взял специально посложней со специальными символами.
🔸2. Транслит
Необходимо сделать транслит всех символов в латиницу. Здесь очень выручает библиотека unidecode. Помимо простого транслита кириллицы в латиницу она умеет преобразовывать спец символы и иероглифы в текстовые аналоги.
from unidecode import unidecode
>>> unidecode("Ñ Σ ® µ ¶ ¼ 月 山")
'N S (r) u P 1/4 Yue Shan'
Очень крутая библиотека, советую👍
В нашем случае получаем такое преобразование:
>>> text = unidecode(text)
>>> print(text)
'Moi zagolovok No. 10 !'
Отличный транслит. Смайл просто удалился, хотя я ждал что-то вроде :). Ну и ладно, всë равно невалидные символы.
А еще наш код уже поддерживает любой язык, будь то хинди или корейский.
🔸4. Фильтр символов
Unidecode не занимается фильтрацией по недопустимым символам. Это мы делаем в следующем шаге через regex. Просто заменим все символы на "_" если они вне указанного диапазона.
>>> text = re.sub(r'[^a-zA-Z0-9]+', '_', text)
>>> print(text)
'Moi_zagolovok_No_10_'
Символ "+" в паттерне выручает когда несколько недопустимых символов идут рядом. Все они заменяются на один символ "_".
🔸5. Slugify
Осталось удалить лишние символы по краям и сделать нижний регистр
>>> text = text.strip('_').lower()
>>> print(text)
'moi_zagolovok_no_10'
Получаем отличный slug! 😎
🌎 Полный код в виде функции.
______________
PS. Проверку что в строке остался хоть один допустимый символ я бы вынес в отдельную функцию.
#libs#tricks#django
📌 Создаем интересные градиенты за 20 секунд
Автор: ginyboi
🔹 Зайдите в свой софт и нарисуйте любую случайную форму.
🔹 Выберите цвет, который вам нравится.
🔹Продублируйте форму и сделайте копию чуть светлее. Потом скопируйте ещё раз — и сделайте её намного светлее. Расположите их от светлого к тёмному.
🔹А затем добавьте ооочень много размытия ко всем формам — и вот он, ваш идеальный премиальный градиент.
Если хочется больше стиля, добавьте ключевые кадры к формам и сделайте градиенты анимированными.
#motiondesign
☀️Про важность изучения анимации
Автор: ginyboi
Когда начинаешь изучать моушн-дизайн, часто говорят: «Моушн — это 80% дизайна и 20% движения». В школе мне говорили то же самое. И сейчас я уверен: это полнейшая чушь. Даже если кадр идеально выстроен, но движение жёсткое, рваное или неестественное — зритель уйдёт мгновенно. Это скучно. Это выглядит непрофессионально. Поэтому изучайте анимацию так же серьёзно, как и графический дизайн. Вот несколько советов, которые действительно работают:
1️⃣Никогда не оставляйте кадр статичным
Элементы должны постоянно слегка двигаться — без явных пауз.
2️⃣Добавляйте акценты
Внезапные «прыжки» движения оживляют текст и добавляют энергии ролику.
3️⃣Добавляйте blur во время переходов
Размытие — лучший способ перейти к следующей сцене плавно и приятно для глаза.
#motiondesign
🖥️Какой у ИИ аналог той самой «улыбающейся» иконки первого Macintosh?
Для Gemini ответ — в мягкости. Когда технология новая и по-настоящему меняет правила игры, дизайн должен вызывать доверие и быть понятным с первого взгляда.
Градиенты, округлые формы и продуманное движение помогают создать тёплое, объёмное ощущение — именно таким Google видят визуальный язык AI-ассистента.
Читайте статью и смотрите, как дизайнеры из Google развивают свою визуальную систему.
🔗https://design.google/library/gemini-ai-visual-design
#полезное#motiondesign
🍏Как делать рекламу в стиле Apple
Подсказки от ginyboi
Apple — мастера минимализма и ритма. Вот ключевые принципы, которые делают их ролики такими цепляющими:
1️⃣ Сильный хук с первых секунд
Хороший хук мгновенно захватывает внимание и заставляет досмотреть ролик до конца. Если начало не цепляет — зритель уходит. Всё просто.
2️⃣ Анимация текста в ритм музыке
Apple почти всегда режет монтаж и переходы точно в бит. Текст, движение и музыка работают как единое целое — за счёт этого каждый месседж выглядит мощно и стильно.
3️⃣ Максимальная простота
Один главный объект + жирный, читаемый текст — этого достаточно. Не перегружайте сцену свечениями, модными эффектами и «прыгающей» анимацией — они отвлекают от главного: сообщения.
Важно помнить: Apple-style motion — демонстрирует ясность, ритм и продукт, а не то, насколько вы круто владеете эффектами.
#полезное#motiondesign
Как выстроить пайплайн в моушн дизайне и CG так, чтобы сэкономить время, деньги и нервы?
Ролик полезен и новичкам, и опытным дизайнерам, которые хотят оптимизировать процесс и избегать хаоса.
😉YouTube
😄VK
🥰RuTube
Приятного просмотра! 😉
#уроки#motiondesign
Как выстроить пайплайн в моушн дизайне и CG так, чтобы сэкономить время, деньги и нервы?
Ролик полезен и новичкам, и опытным дизайнерам, которые хотят оптимизировать процесс и избегать хаоса.
😉YouTube
😄VK
🥰RuTube
Приятного просмотра! 😉
#уроки#motiondesign
Как выстроить пайплайн в моушн дизайне и CG так, чтобы сэкономить время, деньги и нервы?
Ролик полезен и новичкам, и опытным дизайнерам, которые хотят оптимизировать процесс и избегать хаоса.
😉YouTube
😄VK
🥰RuTube
Приятного просмотра! 😉
#уроки#motiondesign
Как выстроить пайплайн в моушн дизайне и CG так, чтобы сэкономить время, деньги и нервы?
Ролик полезен и новичкам, и опытным дизайнерам, которые хотят оптимизировать процесс и избегать хаоса.
😉YouTube
😄VK
🥰RuTube
Приятного просмотра! 😉
#уроки#motiondesign