Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
Jean Ségurel — Autour des Monédières (Odeon, 1959)
#chanson#traditional#Occitania#France
Для народной музыки Окситании, родины трубадуров, расположенной на юге Франции и в небольшой части Испании и Италии, характерны баллады. В балладах с этого альбома слышно переплетение мотивов этих стран, однако из-за исполнения Жана Сэгуреля они приобретают оттенок французского шансона. Жан-Батист Сэгурель – французский аккордеонист, композитор и дирижер, родился 13 октября 1908 года во французской коммуне Шомей. Сэгурель начинал как скрипач, однако, взяв в руки аккордеон по возвращению с военной службы, он осознал, что хочет посвятить этому инструменту свою жизнь. Значительный период карьеры Сэгурель был менестрелем своего времени: выступал на различных ярмарках и свадьбах. Друзья Жана-Батиста представили его основателю лейбла «Le Soleil», благодаря которому он утвердился как профессиональный музыкант. В 1968 году генерал де Голль присвоил ему звание кавалера Почетного легиона.
Spotify | AppleMusic
Charles Aznavour — Qui? (Barclay, 1963)
#chanson#pop#France#Armenia
Альбом Qui? Шарля Азнавура, выпущенный в 1963 году, стал знаковым в его карьере. Он содержит песни For me, formidable и La mamma, которые сильно полюбились публике и стали символами творчества Азнавура.
Шарль Азнавур, урождённый Шахнур Вахинак Азнавурян (Շահնուր Վաղինակ Ազնավուրյան), был французским шансонье армянского происхождения. Он родился 22 мая 1924 года в Париже. С начала музыкальной карьеры в 40-х годах, Азнавур записал более тысячи песен на нескольких языках: французском, английском, итальянском, испанском, немецком, армянском, неаполитанском и русском.
Азнавур стал одним из самых известных французских певцов за пределами франкоязычного мира. Его прозвали французским Фрэнком Синатрой, а французский драматург Жан Кокто даже однажды сказал, что до Азнавура отчаяние было непопулярно.
Азнавур гордился своим армянским происхождением. С 5 мая 2009 года и до своей смерти он был послом Армении в Швейцарии и представлял страну в штаб-квартире ООН, а в 2008 году получил армянское гражданство. Более того, у Азнавура есть книга воспоминаний «Прошлое и будущее», в которой он, кроме всего прочего, описывает трудности, с которыми столкунлась его семья во времена армянского геноцида в Османской Империи.
🔗Spotify | AppleMusic
Edith Piaf’s was born the 19th of December 1915, she would be 110 years old today. She was and still is a famous French singer after her death, known for her emotional songs called "chansons".
Her most famous songs include “Non, je ne regrette rien” and “La Vie en rose.” 🎤🇫🇷
Feel free to send her music in the comments of this post.
[Read more]
@googlefactss#EdithPiaf#Birthday#FrenchMusic#Chanson#FamousPeople
Kit Sebastian — New Internationale (Brainfeeder, 2024)
#anatolian#bossa_nova#chanson#funk#psychedelic#United_Kingdom
Дуэт Kit Sebastian, в состав которого входят Кит Мартин и Мерве Эрдэм, выпустил свой третий альбом New Internationale. Пластинка вышла лейбле Brainfeeder, который основал известный американский продюссер Flying Lotus.
Альбом был создан во время гастролей и записан в Лондоне при участии барабанщика Тео Гуттенплана, контрабасиста Дэвида Ричардсона и других музыкантов. Во время путешествий дуэт использовал разнообразные инструменты, такие как турецкий кларнет, сантур, цитру и клавесин. Финальные вокальные записи прошли в сельской местности Франции, где музыканты сосредоточились на доработке материала.
Альбом объединяет элементы французской поп-музыки, анатолийской психоделии, латиноамериканской музыки и раннего рок-н-ролла. В песне Bul Bul Bul слышно влияние балийской музыки «гамелан», а Metropolis вдохновлён азербайджанским фанком в исполнении Вагифа Мустафа-заде и Рафика Бабаева.
Темы песен касаются миграции, поиска идентичности и творческих компромиссов. Metropolis, например, рассказывает о мигрантах, их надеждах и попытках найти своё место в новой среде.
New Internationale в очередной раз демонстрирует, как умело Kit Sebastian объединяют разные музыкальные традиции в единое звучание.
🔗Spotify | AppleMusic | Bandcamp | VK
Pierre Vassiliu — En Voyages (Born Bad, 2019)
#french_pop#chanson#latin#bossa_nova#funk#France
Сборник песен французского музыканта, актера и обладателя великолепных усов, Пьера Василью. «В поездках», как переводится название сборника, он проводил много времени своей жизни. Путешествия были для него философией жизни, синонимом встречи с новой музыкой. Этот опыт питал его творчество, и поэтому на этом сборнике, записанном в период с конца шестидесятых по начало нулевых, можно услышать влияние музыки Южной Америки, Карибских островов и Африки.
Spotify | AppleMusic | Bandcamp
Kit Sebastian — Melodi (Mr Bongo, 2021)
#psychedelic#funk#soul#jazz#bossa_nova#chanson#bulbul_tarang#Turkey#United_Kingdom
«Melodi» — второй альбом дуэта Kit Sebastian, состоящего из Кита Мартина и Мерве Эрдем. В отличии от первого альбома, посвященном в основном Ближнему Востоку, этот релиз рисует в воображении картинки со всего света, от Итальянской Ривьеры до гор Кавказа, от пляжей Баии до улиц Стамбула и Парижа. В мире с более медленным темпом, чем до короновируса, группа смогла проводить больше времени в студии, из-за чего сильно расширился диапазон инструментов в аранжировках. В этой работе можно услышать цитру, клавесин, бульбюль таранг, балалайку, орган, духовые и струнные инструменты, что придало альбому дополнительную глубину и оркестровую текстуру. Работая над вокалом, Мерве брала пример с турецких певцов своей юности, создав чуть более меланхоличный стиль, но более проникновенный, чем на «Mantra Moderne». На песни Agitate и Yeter вышли музыкальные видео.
Spotify | AppleMusic | Bandcamp | VK