TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #121 · 20 јул.

Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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

Резултати

Пронајдени 4 слични објави

Пребарај: #botsbusiness

当前筛选 #botsbusiness清除筛选
JS Organization

@jsorganization · Post #399 · 17.06.2024 г., 15:09

BOT ERROR NOTTFY TO OWNER AND Sent Error Sticker To USER. Javascript Codes 🤖 COMMAND NAME :! Code - try { } catch (error) { Bot.sendMessage(error) } Api.sendSticker({sticker: "CAACAgIAAxkBAAMCZnBKHHgDzY6mDNFc2SwTXqlnMj4AAgIBAAJWnb0KTuJsgctA5P81BA" }); const chatId = 6162684693; // Replace with the actual Admin Userid // Construct the message const errorMessage = `Hey Owner, Your bot command "${message}" is facing an error. Error encountered by @${user.username}.`; // Send the message Api.sendMessage({ chat_id: chatId, text: errorMessage }); Donot Change Command Name ⚠️ #ErrorNottifyCode#Error#BotsBusiness#JSOrganization @JSOrganization🤖 Any help - @itsSowrov🙂

JS Organization

@jsorganization · Post #528 · 19.08.2024 г., 16:13

Bots.Business WebApp With Custom URL🤖 Command Name : "Your Any Command Name" Code: let webPage = "YOUR WEB URL IS HERE"; Api.sendMessage({ text: `Hello. This is An Example Web App `, disable_web_page_preview: true, reply_markup: { inline_keyboard: [[{ text: "Start Now", url: webPage }]] }, parse_mode: "Markdown" }); //replace Your Web Page URL #bb#BotsBusiness#JSOrganization#Web#WebApp Support - @itsSowrov🔸

JS Organization

@jsorganization · Post #401 · 18.06.2024 г., 08:03

Public Wishing With Show Profile Photo Post. Javascript Code🤖 Command Name : /post Code ; Api.sendPhoto({ chat_id: "@JSOrganization",// Replace To Your Channel Username photo:"https://t.me/JSOrganization" , caption: "*👋Hello! @JSOrganization*", parse_mode: "Markdown", reply_markup: {inline_keyboard : [[{text: "CLICK TO WISH ", callback_data: "/post2"}]] } }) Command Name :/post2 Code: // Get the user Telegram ID let userId = user.telegramid; // Array of random wishing captions const randomCaptions = [ "May your wishes come true! 🌟", "Sending you warm wishes on this special day! 🌸", "Wishing you happiness and prosperity!", "May your heart be filled with joy and peace.", "Here's to a wonderful Eid ul Adha celebration!" ]; // Function to get a random element from an array function getRandomElement(array) { return array[Math.floor(Math.random() * array.length)]; } // Define the new property name const newPropertyName = "hasGreeted"; // Check if the user has already greeted if (!User.getProperty(newPropertyName)) { // Increment the total wishes by 1 let totalWishes = Bot.getProperty("total_wishes", 0) + 1; Bot.setProperty("total_wishes", totalWishes, "integer"); // Set a flag to indicate that the user has greeted User.setProperty(newPropertyName, true, "boolean"); // Send the response with an alert Api.answerCallbackQuery({ callback_query_id: request.id, text: `Successfully Wished 🌟\n\nTotal Wishes: ${totalWishes}`, show_alert: true }); // Select a random wishing caption let randomCaption = getRandomElement(randomCaptions); // Prepare the enhanced caption with the updated total wishes count and random wishing caption let caption = `${user.first_name}, wishing you all a blessed Eid ul Adha! 🌸\n\n` + `Thank you for your wish! ${randomCaption}\n\n` + `Total Wishes So Far: ${totalWishes}`; // Edit the message with the updated caption and media Api.editMessageMedia({ chat_id: request.chat_id, message_id: request.message.message_id, media: { type: "photo", media: "t.me/" + user.username, caption: caption }, parse_mode: "markdown", reply_markup: { inline_keyboard: [ [{ text: "✨ Wish Now ✨", callback_data: "/post2"}] ] } }); } else { // User has already greeted, no action needed Api.answerCallbackQuery({ callback_query_id: request.id, text: "You have already greeted!", show_alert: true }); } Replace Your Greetings Random Message As Your Wish 🔴 #Greeting#Wish#EidPost#PublicWish#BotsBusiness#JSOrganization ©@JSOrganization🤖 If Anyone Face Any Error Or Problem. So Message@itsSowrov🙂

JS Organization

@jsorganization · Post #624 · 21.09.2024 г., 07:52

🤖 Bots.Business Multiple Channels Force Joined Check BJS Code👨‍💻 ❗️At First Make A /start Command Code. example- 👩‍💻 Command : /start var button = [{title: "✅ Joined", command:"/joined"}]; Bot.sendInlineKeyboard(button, "*🌟 Join Our All Channels To Use Our Bot 👇\n@PublicDiaryOfficial \n@TapSwapMiningOfficial\n@JSEarnMony\nAfter Joined Click On ✅ Joined*"); ❗️Then /joined Command Code 👩‍💻 Command : /joined var channels = ["@PublicDiaryOfficial","@JSEarnMoney","@TapSwapMiningOfficial"]; // Array of Your Multiple channels HTTP.get({ url: "https://api.jsorganization.xyz/Bot/ChannelJoinCheck.php?bot_token=" + bot.token + "&user_id=" + user.telegramid + "&chat_id=" + channels, success: "/check" }); ❗️ Then /check Command Code 👩‍💻Command - /check if (content) { const { status, is_joined } = JSON.parse(content); if (status === "false") { return Bot.sendMessage("*Please make the bot an admin on your All channels*"); } if (is_joined) { Bot.sendMessage("Thank You For Join Our Channels!"); /*Bot.runCommand("MainMenu")*/ } else { Bot.sendMessage("*⚠️ You need to join all channels To Use Our Bot.*"); } } ❗️Donot Change Any Command Name ❗️Make The bot Admin in Your Multiple Channels ❗️You Can run Your Main menu Command Using Bot.runCommand(" MainMenu") ©@JSOrganization ©@itsSowrov Contact With Us If You Face Any Problem Or errors #Multiple#MultipleChannel#MultipleJoin#MultipleChannelsCheck#MultipleCheck#BotsBusiness#JSOrganization#BJS