Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
Mini App Shortcuts📣
Now you can now place direct shortcuts to specific mini apps on the home screen of your device.
Choose your favorite apps:
❤️CapsGame
🍅Tomarket
🍦Vanilla Finance
🙏STON.fi
💸DeDust
⚡️Storm Trade
😇EVAA
🔥Roolz
🪙Blum
😸Catizen
⚖Nomis
💳HOT wallet
⚡️Electra
🪙Bombie
🚀xRocket
Note in comments what other apps you will add!
#TelegramMiniApps#TON
Web3 Traffic Shift: Integrating & Monetizing Users on Web2 Platforms
Initially driven by ideals of full decentralization, privacy, and disrupting traditional systems, Web3 has struggled to provide practical, user-friendly applications that meet mainstream needs. This lack of a unified, compelling narrative for mass adoption has resulted in stagnation in user growth and insufficient liquidity within the ecosystems. The market now demands more accessible, user-centric models that integrate seamlessly with familiar Web2 environments like Telegram to drive broader adoption and engagement.
One way to address this stagnation is by facilitating a traffic shift from Web2 to Web3. Telegram is uniquely positioned to meet this challenge. Unlike most platforms, Telegram combines traditional social features with integrated blockchain capabilities, such as wallets and Mini Apps, allowing users to engage with Web3 without leaving the app. This blend of Web2 familiarity and Web3 functionality lowers entry barriers, making it easier for users to explore, adopt, and interact with decentralized applications.
To understand the current challenges in user growth and the importance of seamless integration with Web2 environments like Telegram, as well as to explore new monetization models and traffic acquisition strategies in Web3, read our new article: Web3 Traffic Shift: Integrating & Monetizing Users on Web2 Platforms.
This report is a collaboration with Samuel QIN (@Samuel_Q6).
#TON#Telegram#TelegramMiniApps
📰Medium🔝Kirill from TOP
💼Linkedin✖️ X
🚀 DeckForge Is Now Live in the Telegram App Center
DeckForge has officially been listed in the Telegram App Center — marking an important milestone on our journey to becoming a truly global, cross-platform game.
Being featured in the App Center gives DeckForge direct access to millions of Telegram users worldwide, seamless onboarding & native distribution inside one of the fastest-growing ecosystems in gaming.
This launch is made possible thanks to the support of TON Foundation & our collaboration within the TON ecosystem.
🔵 Easy access directly from Telegram
🔵 Native Mini App experience
🔵 Built for scale, performance & community growth
👀 Very soon, players can expect a series of special in-game events and activations in collaboration with TON partners, including exclusive rewards, themed content & limited-time experiences..
Stay Forged! 🔥
#DeckForge#TON#TelegramMiniApps
Join the DeckForge Community:
🌐YouTube𝕏Twitter🎮Discord
👉Chat👉Announcements👉DeckForge
We’ve launched our Chrome Extension❗
🔵We’re excited to announce that AppVerse is now available on the 📱 Chrome Web Store
🔵Explore the best ✉️ Telegram Mini Apps in one place - pin your favorites, discover new ones, and stay ahead of the trend.
🔵All just a click away in your browser.
Try it now ➡️Extension Link
👍 Thank you for being part of our journey, this is just the beginning!
#AppVerse#TelegramMiniApps#ChromeExtension
We're thrilled to unveil our latest innovation that's set to revolutionize the Telegram mini-app ecosystem - SingSing SocialFi SDK.
🛠 Our Developer-Friendly SDK brings powerful social and financial features to developers and users alike with:
✅Seamlessly integrate SingSing's features into your Telegram mini-apps
✅Enhance user engagement and monetization opportunities
✅Leverage SingSing club system
✅Use SingSing payment system
🔒 Our SDK is currently being refined with our early partners to ensure a seamless experience. Stay tuned for the public release!
Read more and open treasure at: X Post
#SingSingSDK#TelegramMiniApps#Web3Gaming#SocialFi
Boring A.P.E. (Attention Points Economy): Observations on a New Trend
In the digital age, attention has become a valuable commodity, and the "Attention Points Economy" seeks to capture this value by turning simple interactions into measurable points. This concept is gaining traction, particularly in Telegram Mini apps like Notcoin and Hamster Kombat, which engage millions of users through gamified interactions.
The economic value created by points rewards every beneficiary within the ecosystem. This creates micro-markets within apps and opens new opportunities for developers and users alike, potentially leading to a decentralized ecosystem where digital engagement and identity merge. Our new post explores the rapid adoption of this trend and its broader significance.
#July2024#GameFi#TelegramMiniApps#Telegram#Notcoin
🎄 DeckForge joins the TON Apps Center Advent Calendar!
DeckForge is officially featured in the TON Apps Center Advent Calendar — and our quest is already live.
What you need to do:
Complete the in-game tutorial, master the basics, defeat the bosses — and claim your rewards.
🎟 Earn Tickets today & compete for a $5,000 prize pool:
🔵 $5,000 raffle on December 25
🔵 100 winners × $50 tsUSDe
🎁 Bonus for every participant
All players who join the quest will receive a FREE Booster Pack from our brand-new Christmas Collection.
👀 And there’s more ahead
Together with our friends & TON Apps Center, we’ve prepared a mega holiday raffle that the entire ecosystem will be watching — packed with exclusive gifts, surprise rewards & moments you don’t want to miss...
Stay Forged! 🔥
#DeckForge#TON#TelegramMiniApps#AdventCalendar#giveaway
Join the DeckForge Community:
🌐YouTube𝕏Twitter🎮Discord
👉Chat👉Announcements👉DeckForge