Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
Nashenas — Life Is a Heavy Burden: Ghazals & Poetry From Afghanistan (United Sounds Of Asia, 2022)
#ghazal#harmonium#tabla#Afghanistan
Cборник работ афганского певца Мохаммада Садика Фитрата, также известного как Нашенас, что на дари значит «Неизвестный» (ناشناس). Эти песни были записаны на студии «Радио Кабул» и позже выпущены на иранском лейбле Royal. Нашенас происходит из древнего пуштунского рода, представители которого имели связь с духовенством. Певец рассказывал, что взял себе такой псевдоним, чтобы его родственники не узнали о его занятиях музыкой, ведь мусульманская общественность не всегда признает это дело праведным. Так или иначе, в 1951 году Нашенас начал выступать на «Радио Кабул», с чего и началась его карьера. Он приобрел популярность, исполняя стихи известных поэтов и песни из фильмов. Нашенас стал свидетелем неспокойных для Афганистана времен, но оставался в стране до начала 90-х. Сейчас он живет в Лондоне и продолжает гастролирует по всему свету.
Spotify | AppleMusic | Bandcamp
Ustad Saami — Pakistan Is for the Peaceful (Glitterbeat, 2020)
#surti#traditional#tambura#harmonium#tabla#Pakistan
Устад Саами — последний из ныне живущих певцов, способных исполнить древние 49-нотные микротональные гаммы традиции Сурти. Сурти сформировалась еще до каввали — традиции исполнения суфийской поэзии под музыку. В общем, исполнение песен в традиции Сурти считается спорным в исламском обществе, потому что она появилось еще до Мухаммеда. Даже под угрозой со стороны исламских фундаменталистов, мастер всю жизнь практиковал исчезающее искусство, которое передавалось из поколения в поколение с 13 века. Издание The Quietus отмечает, что «когда Устад Саами умрёт, эти 49 нот умирут вместе с ним». Pakistan Is for the Peaceful — его второй альбом, состоящий из трех композиций. Запись проходила в Карачи во время живого сета на крыше дома мастера под музыкальное сопровождение его четырёх сыновей. Продюссированием записи занимался Ян Бреннан, известный по работам с Tinariwen.
Spotify | AppleMusic | Bandcamp
The Ahmad Sham Sufi Qawwali Group — Introducing Ahmad Sham Sufi Qawwali Group (World Music Network, 2013)
#qawwali#sufi#harmonium#tabla#bansuri#Afghanistan
В XIII веке в Индии суфийАмир Хосров из ордена Чиштия объединил персидское, арабское, турецкое и индийское наследие духовных песнопений и создал традицию, которая сегодня известна как каввали. Aнсамбль Ахмада Шама — один из самых уважаемых коллективов, исполняющих каввали в Афганистане. Эта страна является одним из центров суфизма, для многих направлений которого музыка — важный элемент духовных ритуалов. Несколько самых прославленных суфийских святых были выходцами из современного Афганистана. Прежде всего поэт Руми родился в 1207 году в Балхе. В 2013 году Ахмад Шам записал со своим коллективом единственную пластинку на западном лейбле, но судя по тому, что в сети время от времени появляются записи его выступлений, он жив, здоров и продолжает практиковать свое искусство.
Spotify | AppleMusic | Telegram
Ustad Saami — A for Aleph Live (A for Aleph, 2024)
#surti#khyal#tambura#harmonium#tabla#Pakistan
Выступление прославленного певца Устада Саами и его сыновей на студии пакистанского лейбла звукозаписи A for Aleph. На записи можно услышать произведение Khayal (خیال), названное в честь одной из доминирующих форм музыки Северной Индии, и Kalam-e-Khusro, посвященное культовому суфийскому поэту Амир Хосрову. У него более семи веков назад обучался далекий предок Устада Саами, Миян Самат.
Семья Устада Насируддина Саами стояла у истоков школы каввали, основанной в XIII веке в Дели. Стиль Саами называется «Судх Бани» и, судя по всему, он является последним из ныне живущих вокалистов, практикующих микротональную систему шрути из 49 нот.
🔗 YouTube | Spotify | AppleMusic | Bandcamp
Various Artists — Rajasthan Street Music (Sublime Frequencies, 2022)
#traditional#field_recording#tabla#dhol#harmonium#Rajasthan#India
Раджастан (राजस्थान), что значит «страна раджей» — самый большой штат в Индии, расположен на северо-западе страны. Суровыми просторами пустыни Тар он разделен с пакистанскими провинциями Синд и Пенджаб, а на юге граничит с индийским штатом Гуджарат.
Века непрерывных вторжений и жестоких битв, правление скифов, маурьев, сатрапов, гурджаров, моголов, раджпутов и британцев оставили свой след в местном фольклоре. В наши дни, из-за постоянных сбоев в подаче электроэнергии, длительных засух, пересыхающих рек и постоянно наступающего опустынивания, Раджастан остается не самым приветливым местом для жизни. Тяготы прошлого и настоящего наделили народ Раджастана гордым характером, который чувствуется и в музыке штата.
Себ Басслир записал компиляцию Rajasthan Street Music в различных городах, деревнях и отдаленных районах Раджастана в рамках двухмесячного путешествия. Этот сборник не является исчерпывающим фольклорным исследованием или этномузыковедческим проектом. Он скорее представляет музыкальный пейзаж Раджастана середины нулевых, срез звуковой среды за пределами академического подхода к раджастанской музыке.
Bandcamp | Telegram
Ustad Saami — East Pakistan Sky (Glitterbeat Records, 2021)
#surti#khyal#traditional#tambura#harmonium#tabla#Pakistan
Семья Устаада Насируддина Саами стояла у истоков школы каввали, основанной в XIII веке в Дели. Его предок Миян Самат обучался у самого Амира Хосрова, культового суфийского поэта, после чего традиция передавалась от отца к сыну в течение более чем 7 веков. Сам Саами начал свой творческий путь в середине 50-х годов под руководством своего дяди Устаада Мунши Разиуддина. В течении многих лет обучения ему было разрешено выражать свои мысли только посредством пения. Стиль Саами называется «Судх Бани» и судя по всему он является последним из ныне живущих вокалистов, практикующих микротональную систему шрути из 49 нот. East Pakistan Sky – его третий альбом, спродюссированный Яном Бреннаном, известным по работе с Tinariwen. Запись проходила в Карачи во время живого сета на крыше дома мастера под музыкальное сопровождение его четырёх сыновей.
Spotify | AppleMusic | Bandcamp | VK
Talib Trio — Aap ka number hai? (Honiunhoni, 2024)
#traditional#sindhi#balochi#pashtun#damburo#bulbul_tarang#benju#dholak#harmonium#Pakistan
Aap Ka Number Hai? — дебютный альбом трио Мухаммада Талиба, мультиинструменталиста из Карачи. В основе альбома — традиционная музыка синдхов и белуджей, которую Талиб исполняет на модернизированном дамбуро (не путать с тамбуром, танбурой или домрой), оснащённом ладами, а также на электрическом бюльбюль таранге, разновидности традиционного бенджу со звукоснимателями. Помимо самого Талиба в трио входят Мухаммад Хан, исполнитель на барабане дхолак, и Шахид Али, исполнитель на фисгармонии.
Музыкальная карьера Талиба берёт начало в богатой семейной традиции. Он племянник видного синдхского певца Устада Мухаммада Джумана и ученик мастера игры на бенджу Гулама Мохаммада. Новаторский подход Талиба к дамбуро, изначально ритмическому инструменту, расширил его возможности. Добавив лады, Талиб превратил инструмент в мелодический, способный исполнять аккорды и сложные мелодии.
Музыка альбома Aap Ka Number Hai? пропитана духом многокультурного Карачи. Здесь есть и переработанные народные мелодии синдхов и белуджей, и популярные песни пуштунов, и собственные композиции Талиба. Талиб соединил традиционную музыку синдхов с эклектичными музыкальными влияниями Карачи, создав звучание, которое хотя и является экспериментальным, из-за этого только еще больше укоренено в наследии города.
Еще ярче обостряет воздействие города на этот альбом тот факт, что его запись проходила на крыше здания Clifton Court, где Талиб провёл свое детство. Звуковой ландшафт Карачи — его хаотичная энергия, уличный гул и ритм жизни — стал частью музыкальной текстуры записи, сделав её неотъемлемо связанной с этим мегаполисом.
🔗Spotify | Bandcamp