LINUX.ORG.RU

Сообщения theurs

 

Надстрочные и подстрочные символы юникода

Форум — Development

Нужна таблица для подстановки

В википедии похоже не все буквы указаны https://en.wikipedia.org/wiki/Superscripts_and_Subscripts

b и c например нет. хотя они как бы есть ᵃᵇᶜ

не получается нагуглить, везде этот ограниченный набор

    # Словарь подстрочных символов
    subscript_map = {
        '0': '₀', '1': '₁', '2': '₂', '3': '₃', '4': '₄', '5': '₅',
        '6': '₆', '7': '₇', '8': '₈', '9': '₉', 'i': 'ᵢ', 'j': 'ⱼ',
        '+': '₊', '-': '₋', '=': '₌', '(': '₍', ')': '₎', 'a': 'ₐ',
        'e': 'ₑ', 'h': 'ₕ', 'k': 'ₖ', 'l': 'ₗ', 'm': 'ₘ', 'n': 'ₙ',
        'o': 'ₒ', 'p': 'ₚ', 'r': 'ᵣ', 's': 'ₛ', 't': 'ₜ', 'u': 'ᵤ',
        'v': 'ᵥ', 'x': 'ₓ'
    }
    # Словарь надстрочных символов
    superscript_map = {
        '0': '⁰', '1': '¹', '2': '²', '3': '³', '4': '⁴', '5': '⁵',
        '6': '⁶', '7': '⁷', '8': '⁸', '9': '⁹', 'i': 'ⁱ', 'j': 'ʲ',
        '+': '⁺', '-': '⁻', '=': '⁼', '(': '⁽', ')': '⁾', 'a': 'ᵃ',
        'e': 'ᵉ', 'h': 'ʰ', 'k': 'ᵏ', 'l': 'ˡ', 'm': 'ᵐ', 'n': 'ⁿ',
        'o': 'ᵒ', 'p': 'ᵖ', 'r': 'ʳ', 's': 'ˢ', 't': 'ᵗ', 'u': 'ᵘ',
        'v': 'ᵛ', 'x': 'ˣ'
    }

 

theurs
()

Секретные алгоритмы пунто свитчера

Форум — Development

Делаю чат бота. Люди ему иногда пишут сообщения забыв переключить раскладку. И получают ответ от бота - что за абракадарба, ничего не понимаю.

Хотелось бы улучшить этот момент, добавить авто определение неправильной раскладки.
Не хотелось бы изобретать свой велосипед, может кто знает простой надежный способ это делать.

Пунто свитчер уже с первых букв мог определить что раскладка перепутана, возможно у него был словарь обрезанный по нескольким первым буквам.

 

theurs
()

telebot webhook

Форум — Development

Поделитесь хорошо работающим примером.

В вариант с фласком мне непрерывно летят какие то непонятные обновления, на тестового бота, и цпу сильно нагружен, но при это работает более менее нормально, непонятно что происходит и почему так https://github.com/eternnoir/pyTelegramBotAPI/blob/master/examples/webhook_ex...

Вариант с fastapi работает на первый взгляд нормально но если присмотреться то у него явные проблемы, обновления часто залипают, ошибок нет, выглядит так будто запросы просто приходят с большим опозданием, ип адрес с которого приходят обновления отвечает на пинги с задержкой 2мс, он где то совсем близко.
https://github.com/eternnoir/pyTelegramBotAPI/blob/master/examples/webhook_ex...


#!/usr/bin/env python
# -*- coding: utf-8 -*-

# This is a simple echo bot using decorators and webhook with fastapi
# It echoes any incoming text messages and does not use the polling method.


import logging
import time

import telebot

import cfg


API_TOKEN = cfg.test_token


logger = telebot.logger
telebot.logger.setLevel(logging.INFO)

bot = telebot.TeleBot(API_TOKEN)


@bot.message_handler(commands=['help', 'start'])
def send_welcome(message):
    """
    Handle '/start' and '/help'
    """
    bot.reply_to(message,
                 ("Hi there, I am EchoBot.\n"
                  "I am here to echo your kind words back to you."))

@bot.message_handler(func=lambda message: True, content_types=['text'])
def echo_message(message):
    """
    Handle all other messages
    """
    bot.reply_to(message, message.text)


# Remove webhook, it fails sometimes the set if there is a previous webhook
#bot.remove_webhook()
#time.sleep(1)

if hasattr(cfg, 'WEBHOOK_DOMAIN') and hasattr(cfg, 'WEBHOOK_PORT') and hasattr(cfg, 'WEBHOOK_SSL_CERT') and hasattr(cfg, 'WEBHOOK_SSL_PRIV'):
    bot.run_webhooks(
        listen=cfg.WEBHOOK_DOMAIN,
        port = cfg.WEBHOOK_PORT,
        certificate=cfg.WEBHOOK_SSL_CERT,
        certificate_key=cfg.WEBHOOK_SSL_PRIV
    )
else:
    bot.polling(timeout=90, long_polling_timeout=90)

 python telebot

theurs
()

Калькулятор на питоне, без eval()

Форум — Development

Чатгпт можно научить использовать функции когда надо, например когда человек спрашивает как посчитать что то он может вызвать функцию calc('"(1/5461512)**3 * (math.factorial(12856723)/(math.factorial(3)*math.factorial(12856723-3)))«')

и собственно проблема - если эта функция на питоне с eval(filtered expression) то вот это вот она будет считать бесконечно долго, пока сервер не лопнет или наступит тепловая смерть вселенной

надо как то ограничить это безобразие

 

theurs
()

Медленный запрос к sqlite

Форум — Development

Есть одна sqlite база в которой есть таблица

И есть запрос - посчитать сколько новых юзеров было за последнее время, тех у кого есть записи за последнее время но нет ранее

И уже сейчас когда записей всего 120т запрос выполняется несколько секунд блокируя всю базу. Как его можно ускорить?


CREATE TABLE IF NOT EXISTS msg_counter (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  user_id TEXT,
  access_time REAL,
  model_used TEXT
)

CREATE INDEX IF NOT EXISTS idx_access_time ON msg_counter (access_time)
CREATE INDEX IF NOT EXISTS idx_user_id ON msg_counter (user_id)
CREATE INDEX IF NOT EXISTS idx_model_used ON msg_counter (model_used)



SELECT COUNT(DISTINCT user_id)
  FROM msg_counter 
  WHERE access_time > ?
  AND NOT EXISTS (
    SELECT 1
    FROM msg_counter AS mc2
    WHERE mc2.user_id = msg_counter.user_id
    AND mc2.access_time <= ?
)

 

theurs
()

Как порезать аудио файл на куски примерно одного размера с разрезами в местах паузы в речи

Форум — Development

Надо транскрибировать большие аудиофайлы нейросеткой у нее ограниченный размер который можно подать на вход. Для этого надо нарезать файл на части но не тупо по секундам а так что бы в разрез попала пауза в речи, любая тишина.

Попробовал использовать для этого pydub но похоже что он не может работать с большими файлами. 3 часовая запись приводит его к ошибке переполнения памяти.
Небольшие записи режутся но медленно очень.

Может есть еще что-нибудь.

from pydub import AudioSegment 
from pydub.silence import split_on_silence 

def silence_based_conversion(path = "1.wav"):
    chink_size = 50
    output_name = "output"

    # тут стабильно умирает на больших файлах, сжатый звук не помогает
    song = AudioSegment.from_wav(path)

    # это работает медленно даже на не очень больших записях
    chunks = split_on_silence(song,
        min_silence_len = 500,
        silence_thresh = -16
    )

    i = 0
    for chunk in chunks:
....

 

theurs
()

Регэкспы. Как переделать маркдаун ссылку в хтмл?

Форум — Development

Регексп для переделывания маркдаун ссылки в хтмл неправильно работает если в ссылке есть скобки, точнее если на конце ссылки есть скобка )

text = re.sub(r'\[([^\]]*)\]\(([^\)]*)\)', r'<a href="\2">\1</a>', text)

[hi](https://example.com/123(123))
получается
<a href="https://example.com/123(123">hi</a>)

 

theurs
()

danted настройка

Форум — Admin

сокс сервер danted в дебиане частично не работает. если дергать через curl -x proxy https://2ip.ru работает. а в браузере пишет

Ошибка при установлении защищённого соединения

При соединении с 2ip.ru произошла ошибка.

    Страница, которую вы пытаетесь просмотреть, не может быть отображена, так как достоверность полученных данных не может быть проверена.
    Пожалуйста, свяжитесь с владельцами веб-сайта и сообщите им об этой проблеме.


конфиг простейший, разрешающий всё всем
в чем проблема не понятно, каким образом сокс сервер может вмешиваться в https? или на что вообще жалуется браузер


logoutput: syslog
user.privileged: root
user.unprivileged: nobody

# The listening network interface or address.
internal: 0.0.0.0 port=1080

# The proxying network interface or address.
external: eth0

# socks-rules determine what is proxied through the external interface.
socksmethod: none

# client-rules determine who can connect to the internal interface.
clientmethod: none

client pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
}

socks pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
}

 

theurs
()

Автопоиск открытых проксей для чат бота

Форум — Development

Gemini Pro от гугла работает не во всех странах, и даже в одной стране может работать тут и не работать там. Чат боту надо как то выживать в таких условиях.

Попробовал реализовать самостоятельно - брать списки проксей с гитхаба и проверять отвечает ли через них. Алгоритм примерно такой:
Если найденный прокси отвечает быстро то он попадает в список годных. Если после этого этот прокси ответил медленно или не ответил то попадает в список удаленных и оттуда уже не возвращается.

Подскажите как это сделать лучше, выше быстрее сильнее.

зы бот тут https://github.com/theurs/tbg
поиск проксей тут в конце https://github.com/theurs/tbg/blob/main/my_gemini.py

Пока что работает это не очень, долго ищутся новые прокси, и найденные отвечают довольно таки медленно.

 python proxy

theurs
()

Как в телеграме отправлять большие файлы?

Форум — Development

Предлагали решение - некий локальный сервер https://github.com/tdlib/telegram-bot-api

С ним получается отправлять большие файлы, но... пока файл отправляется он перестает отвечать на все остальные запросы, как будто он однопоточный, асинхронный бот наглухо блокируется из за этого.

Думал получится сделать второго бота и отдельную группу, что бы второй бот отправлял файл туда, а потом первый бот оттуда копировал куда надо, но... оказалось что первый бот не может скопировать сообщение второго (это потому что боты не видят друг друга?)

Хз что делать, есть еще вариант с использованием бота который притворяется человеком но это как бы запрещено. https://habr.com/ru/articles/348234/
Бан в телеге хуже чем бан в гугле Ж)

 

theurs
()

Какие у телеграма лимиты для ботов на отправку файлов

Форум — Development

Что удалось найти - 50мб максимальный размер одного файла. 2000мб всего...

Всего вообще или в одни руки или в сутки или как чего?

 

theurs
()

Регэксп для поиска строк идущих подряд

Форум — Development

Надо искать в тексте таблицы типа таких

| Страна | Столица |
| ------ | ------- |
| Франция | Париж |
| Япония | Токио |
| Индия | Нью-Дели |


3 или больше строк идущих подряд, в каждой должно быть 3 или больше символа |


text = """Вот пример таблицы с двумя столбцами

| Страна | Столица |
| ------ | ------- |
| Франция | Париж |
| Япония | Токио |
| Индия | Нью-Дели |

Вот пример таблицы с двумя столбцами
"""
#pattern = r'(.*\|.*\|.*\|.*\n){3,}' # так находит одну строку из конца таблицы
pattern = r'.*\|.*\|.*\|.*\n' # так находит несколько строк (и только если в них ровно 3 |?)

matches = re.findall(pattern, text, flags=re.M)
for table in matches:
    print(table)

 

theurs
()

Обработка русских текстов

Форум — Development

Надо делить текст на абзацы и йофицировать. Может кто умеет или может направить больше чем на 3 буквы?

Абзацы можно детектить по \n\n и пробелам или табам в начале строки но это не точно.

Словари для йофикации какие то особые есть?


зы Хочу сделать озвучку книг чуть менее ужасной.

 

theurs
()

Озвучивание книг TTS

Форум — Talks

Какой на руси лучший способ озвучить книгу с помощью роботов, сайт или сервис какой-нибудь или программа?

Мой телеграм бот может наскрипеть книгу голосом гугла или микрософта но должно же быть что то получше чем слепленное на коленке за 5 минут.

Еще он может голосами похожими на живые скрипеть (silero), но они сами не умеют цифры и нерусские символы читать. С помощью chatGPT и такой то матери получается их заставить(переделать цифры в слова) но всё равно тупят, ударения путают, chatGPT тут не может помочь. В итоге получается хуже чем у гугла с микрософтом, больше ошибок с ударениями.

Сам скрип от этих роботов меня в принципе устраивает(голос не столь важен), но то как они произносят цифры, сокращения и не русские буквы это кошмар. chatGPT впринципе не способен расставить ударения, и даже просто ёфицировать текст. С разворачиванием сокращений у него тоже есть проблемы.

 tts спв

theurs
()

ChatGPT и другие

Форум — Talks

Если вдруг кто то еще не наелся этими ботами просьба потестировать (дать отзывы) телеграм бота https://t.me/kun4sun_bot

Там сразу 4 разных чат-бота, chatGPT, Google Bard, Claude, Bing
переключаются командой /config

Плюс всякое разное, рисование по описанию, распознавание текстов с картинок, текстов из аудио и видео, пересказ содержания текстов из веб страниц и роликов на ютубе.

 

theurs
()

Как разрезать хтмл текст не сломав форматирование

Форум — Development

1. Телеграм принимает тексты размером до 4к символов
2. Телеграм не принимает хтмл тексты с незакрытыми или испорченными тегами
3. Надо отправлять тексты больше чем 4к символов

Надо как то резать текст и добавлять закрывающие и открывающие теги если разрез произошел внутри тега.

В текстах могут встречаться всего 3 тега

<a></a> - может быть в виде <a href=«»></a> и его наверное нельзя резать, или можно но тогда надо будет создавать 2 одинаковых ссылки с половинками текста, хз

<b></b>

<code><code>

Может есть что то готовое, или подскажите как это надо делать.

 ,

theurs
()

telegram бот может создавать новые темы в чате?

Форум — Development

https://core.telegram.org/api/threads

Надо что бы бот сам создавал новые темы (threads). Не могу найти описания как это делать.

 

theurs
()

Как определить, в какой теме в группе телеграмма пришло сообщение

Форум — Development

В телеграме есть группы, в группах есть темы, выглядят эти темы как отдельные группы(подгруппы, группы внутри групп), но message.chat.id у всех тем одинаковый, такой же как у главной группы.

Как можно идентифицировать темы в телеботе, нужно что бы бот в разных темах вёл себя по разному, ему надо как то понять что сообщение прилетело не просто в группу ххх, но еще и в тему ууу из этой группы.

Пробовал использовать message.message_thread_id но похоже что это не идентификатор тем а что то другое, это свойство есть у групп у которых нет тем, и может быть разным внутри одной темы, несколько разных в одной теме или группе без тем.

def get_topic_id(message: telebot.types.Message) -> str:
    thread_id = message.message_thread_id
    chat_id = message.chat.id
    return f'[{chat_id}] [{thread_id}]'

 ,

theurs
()

Экранирование маркдауна для телеграма

Форум — Development

Телеграм бот на питоне.

Контент генерирует GPT chat, выдает его в каком то маркдауне очень похожем на телеграмовский.

Отправляется с парсером = 'markdown'.

Иногда в тексте появляется что то что вызывает ошибку парсера.

Я в таком случае пытаюсь исправить но явно делаю это не правильно, получается переэкранирование, текст проходит через парсер но в нем появляется много лишних символов \. Я просто не знаю что конкретно не нравится парсеру Ж(

Может есть у кого готовое решение.

def escape_markdown(text):
    """функция для экранирования символов перед отправкой в маркдауне телеграма"""
    pattern = r"([_*\[\]()~|`])"
    return re.sub(pattern, r"\\\1", text)

 ,

theurs
()

usb вайфай не работает WNDA3100v3 MediaTek MT7632U

Форум — Linux-hardware

Помогите попасть в интернет. Я его втыкаю а он не работает. Мы так не договаривались! GPTChat помочь не смог.

dmesg
[57728.085747] usb 1-5: new high-speed USB device number 4 using xhci_hcd
[57728.319649] usb 1-5: New USB device found, idVendor=0846, idProduct=9014, bcdDevice= 1.00
[57728.319656] usb 1-5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[57728.319658] usb 1-5: Product: WNDA3100v3
[57728.319660] usb 1-5: Manufacturer: MediaTek Inc.
[57728.319662] usb 1-5: SerialNumber: 000000000

lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 002: ID 04b3:3025 IBM Corp. NetVista Full Width Keyboard
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 0846:9014 NetGear, Inc. WNDA3100v3 802.11abgn 2x2:2 [MediaTek MT7632U]
Bus 001 Device 002: ID 09da:c10a A4Tech Co., Ltd. USB Mouse
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

ip a
его там тоже нет

 usb wifi mt7632u

theurs
()

RSS подписка на новые темы