Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
A photograph of Maslenitsa
A photograph of Maslenitsa. It's a winter day, and a young woman wearing beautiful Russian folk dress (a sarafan or kokoshnik) stands outside. She holds a stack of golden-brown pancakes on a plate. In the background, a straw effigy of Maslenitsa burns. Sparks and smoke surround it. The weather is overcast, but the snow is white.
#NanoBanana
#nanobanana
a hyper-realistic cinematic fashion portrait that preserves the exact identity of the man in the photo. He is sitting in a minimalist pose, legs crossed, looking directly at the camera through designer sunglasses, the pose is relaxed and semi-lateral He is dressed in an expensive black structured leather jacket over a rich-colored silk satin shirt, black trousers, and polished black leather boots. A luxurious metal and gemstone watch is visible on his wrist. His hair is styled by a professional and has a soft texture. In the frame, on either side of his silhouette, a red cinematic rim is effectively highlighted against a pure black background. The image was captured using an 85mm portrait lens with an f/2 aperture, providing sharp focus on the face and high contrast, which aligns with the aesthetic of the high-fashion advertising campaig/The outfit uses a rich, striking color palette (deep emerald, ruby red, metallic gold, royal blue, or glossy black accents) with modern editorial tailoring, sharp lines, and couture-level detailing. Accessories elevate the fashion presence: designer sunglasses with elegant oversized frames
no midjourney • no midjourney
#nanobanana
a cinematic corporate portrait based on the same person as in the original image. It accurately captures the model’s facial features, skin tone, and personality. Style: classic professional portrait in a 3/4 angle. Portrait for a social media avatar. The model is wearing a well-tailored suit and shirt. The lighting consists of soft, directional studio lighting with subtle shadows that add depth. The background is minimalist, blurred, and in neutral tones. There is empty background space around the face. Shot with a high-end full-frame camera using an 85mm lens, featuring a shallow depth of field, sharp focus on the eyes, natural skin texture, and a high dynamic range. The facial expression is confident, calm, and open. Detailed quality with realistic color correction
no midjourney • no midjourney
#nanobanana
a small story house, with a chimney, in the middle of a forest of big trees, at night, with flowers around the house and a stone path, illuminated by a small ray of light, fireflies around
no midjourney • no midjourney
#nanobanana
a street selfie taken with a fisheye lens and a 9:16 aspect ratio. Shot from a low angle, slightly tilted, in an underground parking garage. In the foreground, a woman's hand holding a keychain is out of focus, partially framing the frame. In the center are two young people: a woman in a denim jacket and a man in a dark textured sweater making a peace sign. Both have neutral, calm expressions. Lighting is cool, fluorescent overhead with a natural falloff. Style: rough, casual, muted tones, subtle film grain. Technical characteristics: hyper-realistic skin texture, medium contrast, sharp focus on the faces
no midjourney • no midjourney dark
#nanobanana
lowcut bodice worn by gorgeous persian astronomer model, brass, flirty, astrolabe lantern light, photograph
no midjourney • no midjourney dark
▪️Эксперимент по фану▪️
Я загрузила в 🍌Nano Banana Pro свою старую фотоработу 2014 года... и попросила переосмыслить и доработать кадр, как бы эту сцену снял профессионал для журнала Vogue. 😏📲
Процесс получился занимательный. Так можно:
✨ Докрутить идею и референсы перед съёмкой — найти неожиданный ракурс или свет, доработать детали и стилизацию образа.
✨ Вдохновиться для ретуши — загрузить исходник со съёмки и увидеть, какие эффекты, оттенки и атмосферу добавить в постобработке.
✨ Провести «работу над ошибками» — проанализировать, за счёт чего кадры могут получаться более выразительными и цельными, чтобы внедрить эти идеи в будущих съёмках.
Работает, конечно, нестабильно: иногда выдаёт что-то прекрасное, иногда — почти не меняет кадр, а иногда и вовсе фигню. И все же это хороший приём, я считаю.
🔅🔅🔅 Я скачала свой исходник из ВК — и он был в очень плохом качестве. Это сильно повлияло на генерации: многие картинки тоже получались в пикселях (даже на ⚜️).
Так что, ребят, если кажется, что нейросеть выдаёт низкое качество — проверяйте ваши референсы, это реально влияет на результат!
✨Промт, который я использовала:
Создай новое кинематографичное изображение на базе моего Примера. Профессиональная модная фотография в стиле Vogue. Замени одежду на дорогие брендовые вещи, сохранив общую эстетику образа. Измени ракурс и позу модели. Измени освещение в стиле профессиональной модной фотографии для журнала. Добавь деталей и текстуру кожи. Сохрани лицо модели. Сохрани общую тематику кадра.
〰️〰️〰️〰️〰️〰️〰️〰️
🪄 Можно добавить больше конкретики, описание образов, освещения и атмосферы. Я использовала максимально общие фразы. Но заметила, что картинка интереснее, если добавить имя мирового фотографа, на чью эстетику хочется равняться.
〰️〰️〰️〰️〰️〰️〰️〰️
#nanobanana
🔅🔅 Что по Nano Banana Pro? 🍌
Смотрим...
⌨️ Промт: просто универсальный промт под студийную картинку, без указания ракурса и освещения. В итоге получила простую "каталожку" — именно этого и хотела.
👕 Одежда: не прописывала в промте, только крепила картинку с flat lay. На постобработке не редактировала вовсе! Перенос и посадка вещей с картинки оказалась почти идеальной (образы брала с Pinterest).
👤 Лицо: пробовала крепить одно фото/много фото/единый коллаж в одно фото с одеждой — перенос лица не устроил 🤎 В итоге немного доработала на посте, чтобы фото ассоциировались именно со мной. В исходной версии этого чувства не было.
〰️〰️〰️〰️〰️〰️
Впечатления:
🔥 Качество картинки — ⚜️ супер, ⚜️ тоже хорошо! Кожа, текстуры, реализм, проработанность деталей на высоте.
👌 Понимание промтов — отличное. Знает русский язык.
❤️🔥 Перенос одежды — очень приятный! Живая посадка, чёткие тактильные текстуры, учтено большое количество деталей, много предметов за раз (лучше поместить всё на один коллаж, чем крепить отдельными фото).
👍 Бонус — может частично закрыть вопрос с поисками апскейлеров и энхейсеров 🤎
🪞 Про перенос лица:
Модель копирует черты лица, родинки, морщинки, НО словно выравнивает их, делает лицо симметричнее и ровнее 🍌 Обладателям симметрии понравится!
Лично я всем сердцем полюбила свой аватар из Seedream и уже привыкла к нему. Так что здесь нет какой-то рекомендации — все зависит от вашей исходной внешности, вкуса, самовосприятия и КАЧЕСТВЕННЫХ ИСХОДНИКОВ.
Прикол: я загружала только фото лица. Откуда он так точно попал в очертания моей фигуры? Загадка!
Где найти?
Нейросеть уже доступна во всех крупных агрегаторах, вроде Krea, Higgsfield, Freepik, Fal AI, Syntx. И конечно же в Ai studio и Gemini.
🤎 В комментариях — оригинальные картинки без моей редактуры, прямиком из нейросети.
#nanobanana
❄️Трендовое фото в снегу с ИИ
Мы подготовили промт, который превратит ваше обычное фото в атмосферную зимнюю историю.
Как повторить:
1️⃣ Перейдите в @GPT4Telegrambot
2️⃣ Выберите «Создать картинку» → «Gemini Images»
3️⃣ Загрузите свое фото в формате 9:16 (лицо должно быть хорошо видно)
4️⃣ Используйте этот промт:
Create a vertical composition 2160×3840 px 4K, divided into three equal horizontal sections. A girl (face from uploaded photo unchanged) with nostalgic, melancholic expression looks directly at camera with sense of loneliness. She wears a faux fur coat, mittens, jeans and large furry boots in valenki style. Stylish winter look. Large fur hat on head. Atmosphere: white snow, cold color palette evoking melancholy and solitude. Image 1. Portrait - character holds transparent umbrella, head turned back. Background blurred, covered in white snow. Image 2. Full body - character stands alone with back to camera on snow field. Holds transparent umbrella in hand. Camera shot from above at downward angle; character raises hand to catch falling snowflakes. Bare leafless trees in distance. Image 3. Close-up - tight shot of character's eyes with sad, detached gaze, evoking feelings of loneliness and longing.
💡Совет: для лучшего результата используйте фото, где четко видно ваше лицо.
Будете пробовать тренд?
❤️ — да, уже делаю!
🔥 — сохраню промт
👀 — предпочитаю другие стили
#nanobanana@EDU4Telegrambot