Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
Сегодня мы анонсировали DaVinci Resolve 20.2.3, который добавляет поддержку до 4 раз более производительных функций Magic Mask, Depth Map и Super Scale на графических процессорах Intel для Windows с использованием DaVinci Resolve Studio. Благодаря повышенной скорости работы этих инструментов искусственного интеллекта вы теперь можете быстро изолировать объекты, улучшать фон или масштабировать видео в реальном времени для более плавного и отзывчивого монтажа и цветокоррекции.
Теперь вы можете назначить горячую клавишу для открытия и закрытия ключевых кадров временной шкалы и панели кривых при монтаже. Это ускоряет анимацию и тонкую настройку времени и движения клипов, позволяя легко настраивать положение, масштаб и громкость прямо на временной шкале.
Для тех, кто работает с файлами WEBM и MKV, в #DaVinciResolve 20.2.3 добавлена поддержка старого кодека VP8. Это означает, что вы можете импортировать и редактировать контент из старых видео YouTube, веб-источников и некоторых камер без предварительной конвертации файлов, экономя время и сохраняя исходное качество клипов. При создании видеоэффектов рендеринг EXR-файлов теперь сохраняет метаданные о положении вложенных последовательностей из исходных клипов. Это позволяет сохранить выравнивание и пространственные соотношения элементов, что упрощает управление вложенными последовательностями и упрощает их повторное редактирование.
Кроме того, это обновление включает улучшенную интеграцию декодирования и скриптинга для файлов MP4 и MKV, а также поддержку Blackmagic RAW 5.1.
Обновление DaVinci Resolve 20.2.3 доступно для бесплатной загрузки с сайта
https://www.blackmagicdesign.com/support/family/davinci-resolve-and-fusion
Сделал небольшой перевод, но интересна не сама новость что affinity стала бесплатной, а то как рассказали про #davinciresolve
https://news.fidller.com/2025/10/31/affinity-sleduyet-puti-davinci-resolve-eto-blestyashche-i-provereno-vremenem/https://news.fidller.com/2025/10/31/affinity-sleduyet-puti-davinci-resolve-eto-blestyashche-i-provereno-vremenem/
Компания Blackmagic Design выпустила обновление #DaVinciResolve 20.1.1 , которое обещает более быструю загрузку проектов Blackmagic Cloud с наложенными временными шкалами, улучшенное сохранение параметров копирования и вставки клипов, более чистую компоновку слоев и узлов для импорта PSD в Fusion.
Что нового в DaVinci Resolve 20.1.1
Были добавлены или обновлены следующие функции.
Исправлено время загрузки облачного проекта с включенными составными временными шкалами.
Исправлены диалоговые окна атрибутов для сохранения выбора пользователя до следующего копирования.
Исправлены проблемы повторного нажатия и сохранения движения в атрибутах вставки.
Устранены проблемы с загрузкой и импортом PSD-файлов в комп.
Исправлена проблема с включением дополнительных каналов в Swizzler.
Исправлено смещение магической маски Fusion при переключении режимов.
Исправлена проблема с преобразованиями пространства линз в композициях Fusion.
Исправлена проблема с носителями в цветном или смешанном режиме, не отражающими магическую маску.
Исправлено зависание при выводе мультимедиа в режиме смешивания в некоторых сценариях.
Исправлен сбой при отображении карты глубины на некоторых компьютерах Mac с процессором Intel.
Исправлена ошибка, приводившая к сбою при загрузке неправильно сформированных клипов MTS.
Исправлена некорректная интерпретация fps в некоторых mkv-клипах.
Устранены проблемы форматирования метаданных Dolby Vision ISXD.
Решены проблемы 3D-квалификатора и 3D-кеинга в DaVinci Resolve Renderer.
Исправлена проблема восстановления двойного экрана при переключении между страницами.
Улучшена скорость передачи данных и качество компоновки для собственных кодеков Windows.
Общие улучшения производительности и стабильности.
Сегодня мы представляем релиз #DaVinciResolve 19.1.4, который добавляет поддержку файлов Blackmagic RAW, записанных на новую камеру URSA Cine 17K 65.
Дополнительно появилась опция сжатия видео в формат Apple ProRes на платформах Windows и Linux, а также обработки LUT-таблиц Samsung Log. Кроме того, повышена эффективность сетевого декодирования и выгрузки AAF-клипов со встроенным звуком, что обеспечивает параллельный доступ к проекту DaVinci Resolve с нескольких станций с сохранением структуры временной шкалы, интегрированных файлов и метаданных.
Обновление DaVinci Resolve 19.1.4 доступно для бесплатной загрузки по адресу https://www.blackmagicdesign.com/support/family/davinci-resolve-and-fusion
Blackmagic Design выпустила #DaVinciResolve 19 Beta 5 , в котором добавлена поддержка оптимизированных многовидовых макетов и больше опций перехода в меню временной шкалы страниц обрезки. Также производительность ИИ в 3 раза выше на поддерживаемых системах Intel Windows.
Это обновление программного обеспечения добавляет поддержку ряда улучшений страниц вырезания (cut), включая оптимизированные многовидовые макеты, параметры перехода в меню временной шкалы (timeline), а также отображение активности кэша рендеринга и возможность выбора аудиоканалов при редактировании повторов. Кроме того, есть поддержка новых параметров Resolve FX film look creator и возможность сохранять метаданные видеоклипов при синхронизации аудио- и видеофайлов. Это обновление также добавляет до 3 раз более высокую производительность ИИ на поддерживаемых системах Intel Windows, а также автоматическое отображение тонов SDR в HDR и больше параметров SuperScale на компьютерах Windows с поддерживаемыми графическими процессорами Nvidia.