Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
Mdou Moctar — Funeral for Justice (Matador Records, 2024)
#tuareg#psychedelic#blues#rock#tishoumaren#assouf#takamba#Niger
В Нигере уран составляет почти весь экспортный продукт, но большая часть прибыли от этого получает бывшая метрополия — Франция. И хотя Франция отказалась от всех военных баз в Нигере после военного переворота 2023 года, многие из её шахт продолжают работать и по сей день, вызывая утечку радона в системы водоснабжения близлежащих городов.
Загланый трек Funeral for Justice, нового альбома африканской группы Mdou Moctar, начинается со слов лидера группы Махамаду Сулеймана, критикующего такое положение дел в стране:
Оккупанты делят ваши земли
Галантно маршируют по вашим ресурсам.
Для Махамаду Сулеймана музыка неразрывно связана с политическим самовыражением. «Ассуф» или «пустынный блюз», который исполняет Mdou Moctar, родился на поле гражданской войны и всегда был голосом таурегского сопротивления. Настроения Сулеймана были ясны и на его альбоме Afrique Victime 2021 года:
Африка стала жертвой очень многих преступлений.
Если мы будем молчать, нам придёт конец.
Однако его послание можно было упустить из виду. Гитарная техника Сулеймана принесла ему ему мировую известность, но отвлекала от политического диалога, который музыкант хотел завести со слушателем. На Funeral for Justice всё указывает на протест — от крови, капающей с крыльев ворона на обложке альбома, до визга гитар, открывающих заглавную песню. В интервью The New York Times Сулеймана сказал, что звуком своей гитары старался изобразить крик человека, молящего о помощи. Funeral for Justice — это звук бунта, перенесенный с языка тамашек на язык музыки, не поддающийся неверному истолкованию.
🔗Spotify | AppleMusic | Bandcamp
Etran de L’Air — Agadez (Sahel Sound, 2022)
#tuareg#psychedelic#blues#rock#tishoumaren#assouf#takamba#Niger
Etran de L’Air, или «звезды региона Аир» — семейная группа, состоящая из братьев и кузенов, за последние 25 лет сделавших себе имя на свадебных вечеринках. Семья братьев происходит от кочевых племен туарегов, поселившихся в Агадесе в 1970-х годах, спасаясь от засухи. Братья родились и выросли в районе Абалане, в тени Большой мечети Агадеса. 1995 году их родственники начали исполнять музыку, когда нынешнему лидеру группы Муссе «Абинди» Ибра было всего 9 лет. «У нас была только одна акустическая гитара, — говорит он, — а вместо барабанов мы использовали калебас, по которому били сандалией». Etran de L'Air играют в панафриканском стиле, черпая вдохновение от малийского блюза, барных групп хауса и конголезского сукуса. Возможно, именно это качество делает их такими любимыми в родном Агадесе, где проживает множество разных народностей.
🔗Spotify | AppleMusic | Bandcamp | VK
Mdou Moctar — Afrique Victime (Matador Records, 2021)
#tuareg#psychedelic#blues#rock#tishoumaren#assouf#takamba#Niger
Новый альбом Махамаду Сулеймана и его группы из Нигера сочетает в себе музыку таурегов и блюз-рок, полевые записи и поэтические размышления о любви, религии, правх женщин, неравенстве и эксплуатации Западной Африки колониальными державами. Это уже не тот грязный звук в стиле 70-х. Запись вышла гораздо чище и позволяет более внимательно изучить смешение блюз-рока и традиционных стилей такамба и ассуф в музыке коллектива. «Chismiten» демонстрирует гитарное мастерство и гипнотическую ритм-секцию Mdou Moctar. «Tala Tannam» исполнен в нетипичном для группы акустическом стиле и открывает группу с новой стороны. В песнях «Ya Habibti» и «Layla» Сулейман отдает дань уважения одному из своих героев, Абдаллаху Аг Оумбадагу, политическому революционеру и пионеру стиля туарегов. Именно Оумбадагу вдохнвил Сулеймана на сочинение собственной музыки.
🔗Spotify | AppleMusic | Bandcamp
Abdallah Ag Oumbadougou — Anou Malane (Sahel Sounds, 2019)
#tuareg#blues#ishumar#tishoumaren#assouf#takamba#Niger
С 1990 по 1995 год в Нигере и Мали произошло восстание различных групп туарегов с целью достижения автономии и создания национального государства. Повстанческое движение зародилось после голода 80-х годов и последующего кризиса, а также из-за политических репрессий в обеих странах. В 1995 году Абдаллах аг Оумбадугу, туарегский революционер, поддерживавший боевых товарищей в перерывах между перестрелками песнями под гитару, записал в Бенине свой дебютный альбом вместе с Нелом Оливером, западноафриканским продюсером, известным своей работой над рядом альбомов в стиле буги и афро-фанк. Из-за синтезаторов и драм-машин политические баллады зазвучали как музыка для модных дискотек. Этот альбом — одна из самый ранних работ в стиле туарегского блюза, что делает Абдаллаха одним из первопроходцев этого стиля. В 2019 году альбом переиздал лейбл Sahel Sounds.
🔗Spotify | AppleMusic | Bandcamp
I Hate My Village — Water Tanks (Locomotiv Records, 2024)
#tuareg#tishoumaren#assouf#takamba#afrobeat#highlife#indie#Italy
Сингл с грядущего полноформатника супергруппы, состоящей из видных деятелей итальянского андеграунда: Адриано Витербини из дуэта Bud Spencer Blues Explosion, Фабио Ронданини из группCalibro 35и Afterhours, Марко Фазоло из Jennifer Gentle и Альберто Феррари из Verdena.
Проект родился из любви Витербини и Ронданини к африканской музыке. В интервью итальянскому изданию Ondarock Витербини заявил, что риффы и ритм Water Tanks вдохновлены ганским хайлайфом. В целом на этой работе очень сильно слышно влияние музыки Западной Африки, в частности, туарегского блюза и нигерийского афробита. Однако общее звучание рабты скорее тяготеет к американскому инди. И это не только потому, что Альберто Феррари довольно убедительно удается петь с американским акцентом.
🔗Spotify | AppleMusic | Bandcamp
Музыка Нигера, или Как звучит Сахара: этника, электроника, блюз и хип-хоп — смешать и взбить
#tishoumaren#assouf#takamba#hip_hop#electronic#house#new_wave#reggae#Niger
Сегодня вышла наша совместная с журналом Пассажир статья о музыке Нигера. В отличие от более фартовых соседей Мали и Нигерии популярная музыка Нигера не привлекала мирового внимания вплоть до 1980-х годов. Однако история показала, что Нигер просто ждал своего часа, и сегодня его музыкальный потенциал уже не вызывает сомнений.
🔗Источник
Vieux Farka Touré & Khruangbin — Ali (Dead Oceans, 2022)
#psychedelic#rock#tishoumaren#assouf#takamba#funk#blues#surf#Mali#United_States
Ali — совместная работа «Хендрикса Сахары», Бурейма «Вьё» Фарка Туре, и техасского трио Khruangbin. Много лет Вьё искал музыкантов, с которыми смог бы записать альбом, посвященный своему отцу – умершему в 2006 году легендарному малийскому гитаристу Али́ Фарка́ Туре́. Посетив лондонский концерт Khruangbin в 2018 году, музыкант остался под сильнейшим впечатлением от выступления техасцев и предложил им совместный проект. Вместе со своими братьями и сестрами Вьё отобрал восемь песен отца, а затем в течение недели новоиспеченный коллектив записал их в Бертоне, штат Техас.
🔗Spotify | AppleMusic | Bandcamp
Dag Tenere — Iswat (Self-released, 2021)
#tuareg#psychedelic#blues#rock#tishoumaren#assouf#takamba#Niger#Mali#Burkina_Faso
Dag Tenere, что на языке тамашек значит «дети пустыни», — группа музыкантов-туарегов из Нигера, Мали и Буркина-Фасо, исполняющих спокойный «ассуф» или «пустынный блюз», напоминающий по стилю известную группу Tinariwen.
🔗Spotify | Bandcamp