• Почему не работает pattern на input?

    @alekssamos
    Программист любитель
    UPD: возможно, вы ищете input masc? Когда допустим надо ввести номер телефона, в поле ввода маска
    +7 (___) ___-__-__
    И она заполняется цифрами при вводе?
    Тогда так в гугле и ищите: input masc js

    ___
    Я знаю, что вам нужно.
    Это, правда, jQuery, но, думаю, принцип понятен.
    $(document).on('change', 'input[pattern]', function() {
    	var re = new RegExp($(this).attr('pattern'), 'g');
    	var newVal = '';
    	for (i in m = $(this).val().match(re)) {
    		newVal += m[i];
    	}
    	$(this).val(newVal);
    });

    Пример работы здесь (где вход или регистрация).
    Ответ написан
  • Как вывести конкретное значение из класса в python?

    @alekssamos
    Программист любитель
    *отсюда*
    import json
    from urllib.request import urlopen, Request
    
    
    class Coincap():
        """parser module for the coincap API"""
    
    
        @staticmethod
        def format_float(f, i=3):
            return float(("%."+str(i)+"f") % float(f))
    
        def get_info(self, convert_numbers=True):
            """Get the currency table from the api.coincap.io/v2/assets
    
            Returns:
                     tuple: (headers 1d list, content 2d list with rows and cols)
            """
    
            url = "https://api.coincap.io/v2/assets"
            headers = {
                "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0",
                "Accept": "application/json, text/javascript, */*; q=0.01",
                "Accept-Language": "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
                "X-Requested-With": "XMLHttpRequest",
            }
    
            opener = Request(url, headers = headers)
            resp = urlopen(opener)        
            content = resp.read().decode("UTF-8")
            j = json.loads(content)
            data_items = j["data"]
            ret_headers = (
                "Name",
                "Ticker",
                "Price",
                "Capitalization",
                "Change percent in 24 h",
                "Value 24 h",
                "Value",
                "Change 24 h",
                "Change 7 d",
            )
            # attention, I have not found any changes in this API in seven days
            ret_content = []
            tmp_data = []
            for ditem in data_items:
                tmp_data.append(ditem["name"])
                tmp_data.append(ditem["symbol"])
                priceUsd = self.format_float(ditem["priceUsd"])
                tmp_data.append(priceUsd if convert_numbers else str(priceUsd) + " $")
                tmp_data.append(
                    self.format_float(ditem["marketCapUsd"], 1)
                    if convert_numbers
                    else str(self.format_float(ditem["marketCapUsd"], 1)) + " $"
                )
                tmp_data.append(
                    self.format_float(ditem["volumeUsd24Hr"])
                    if convert_numbers
                    else str(self.format_float(ditem["volumeUsd24Hr"])) + " $"
                )
                tmp_data.append(
                    self.format_float(ditem["supply"])
                    if convert_numbers
                    else str(self.format_float(ditem["supply"]))
                )
                tmp_data.append(
                    self.format_float(ditem["changePercent24Hr"], 2)
                    if convert_numbers
                    else str(self.format_float(ditem["changePercent24Hr"], 2)) + "%"
                )
                tmp_data.append(0.0 if convert_numbers else "0.0")
                ret_content.append(tmp_data)
                tmp_data = []
            return (ret_headers, tuple(ret_content))
    
    
    if __name__ == "__main__":
        cc = Coincap()
        headers, content = cc.get_info()
        btc = content[0]
        print(btc[1], btc[2])
    Ответ написан
  • Не шарю в асинхронности и очереди в python, что читать, смотреть?

    @alekssamos
    Программист любитель
    В этом коде задачи будут добавляться в очередь без ожидания и выполняться по одной.
    import logging
    import asyncio
    
    q = asyncio.Queue()
    
    
    async def a_difficult_task(some_arg):
        print(f"task {some_arg} started")
        await asyncio.sleep(120)
        print(f"task {some_arg} ended")
    
    
    async def worker():
        while True:
            try:
                some_arg = await q.get()
                await a_difficult_task(some_arg=some_arg)
            except (KeyboardInterrupt, SystemExit, SystemError):
                break
            except Exception:
                logging.exception("...")
            finally:
                q.task_done()
    
    
    async def main():
        asyncio.create_task(worker())
        print("Adding tasks to queue")
        for x in range(1, 7):
            await q.put( x )
        print("Tasks added to queue")
        while True:
            await asyncio.sleep(1)
    
    
    if __name__ == "__main__":
        asyncio.run(main())
    Ответ написан
    Комментировать
  • Кто-нибудь может помочь как расшифровать?

    @alekssamos
    Программист любитель
    Вот этот сервис поможет тебе. Отметь галочку Unescape printable chars encoded as \xNN or \uNNNN?

    https://beautifier.io/
    Ответ написан
    Комментировать
  • Как запустить скрипт после полной загрузки страницы в новом окне?

    @alekssamos
    Программист любитель
    Вынести код за $('.mav_bonus_item').click(function(event) {...}), оставив его в $(document).ready(function(){...})?
    Ответ написан
  • Как сохранить полное форматирование текста при его копировании?

    @alekssamos
    Программист любитель
    А почему не копировать методом message.copy? Это как переслать без автора. В защищённых каналах, кажется, тоже должно работать.
    Ответ написан
    Комментировать
  • Как сделать, чтобы с каждым нажатием кнопки бот отнимал от 100 один, то есть писал: 99 98 97 96 95...?

    @alekssamos
    Программист любитель
    Так-с, а если хранить счётчик прямо в кнопке, в callback data? Мне кажется, будет отлично!
    Не проверял, возможно не работает,
    просто как идея.
    import telebot
    from telebot import types 
    
    a = 100
    
    bot = telebot.TeleBot('токен ')
    
    def make_buttons(a):
        markup = types.InlineKeyboardMarkup()
        markup.row_width = 1
        markup.add(types.InlineKeyboardButton(text="click", callback_data="cb_minus_"+str(a)))
        return markup
    
    @bot.message_handler(commands=['start'])
    def start(message):
        bot.send_message(
            message.chat.id,
            text="Привет, {0.first_name}! жми кнопки)))".format(message.from_user),
            reply_markup=make_buttons(a)
        )
    
    @bot.callback_query_handler(func=lambda call: print(call.data))
    @bot.callback_query_handler(func=lambda call: call.data.startswith('cb_'))
    def callback_query(call):
        print(call.data)
        _, op, digit = call.data.split("_")
        digit=int(digit)
        if op=="minus":
            digit-=1
        bot.edit_message_reply_markup(
            call.message.chat.id,
            call.message.id,
            make_buttons(digit)
        )
        bot.answer_callback_query(call.id, str(digit), show_alert=True)
    
    
    bot.polling(none_stop=True)
    Ответ написан
    1 комментарий
  • Как в коде устроена работа print?

    @alekssamos
    Программист любитель
    Нет, переменным задали значение в начале, на первых строках.
    А так как условия не выполнились, значения переменных тоже не поменялось,
    этот блок кода не выполнялся.
    То есть всё правильно.
    Может, вы хотели сделать что-то такое?
    a = 4
    b = -22
    c = 1
    
    a = a if a < 0 else 0
    b = b if b < 0 else 0
    c = c if c < 0 else 0
    
    print(a + b + c)
    Ответ написан
  • Как выдать свою ошибку при не нахождении функции/элемента в классе JS?

    @alekssamos
    Программист любитель
    Ну как, через try catch перехватить
    Ответ написан
    Комментировать
  • Почему с iphone не работает Telegram Login Widget?

    @alekssamos
    Программист любитель
    Как вариант, у Safari есть настройки против отслеживания, конфиденциальность, чтобы рекламные трекеры не следили за пользователями.
    Так вот, возможно эти технологии блокируют передачу параметров в скрипт виджета.
    Ответ написан
    Комментировать
  • Почему не скачивается модуль intents?

    @alekssamos
    Программист любитель
    pip install "cython<3.0.0" wheel
    pip install "pyyaml==5.4.1" --no-build-isolation


    И затем попробовать ещё раз. Или найти intents более старой версии и указать эту версию через ==.
    Например, pip install "intents==0.2.0"
    Хотя, он и так выпущен в 2021 году.
    Ответ написан
    Комментировать
  • Является ли это корректной записью?

    @alekssamos
    Программист любитель
    let arr = {
        a: 3, b: 15,
    };
    
    console.log(arr);
    console.log(arr.a+arr.b);
    for (j in arr){
        console.log(`arr.${j} = ${arr[j]}\n`);
    }
    Ответ написан
    1 комментарий
  • Как запустить telegram бота параллельно для всех пользователей, используя asyncio?

    @alekssamos
    Программист любитель
    Синхронность и асинхронность - разные вещи.
    Если асинхронные функции, то они должны быть такими везде.

    В общем-то. Нашёл я однажды библиотеку awaits (PyPI | GitHub).
    Ответ написан
    2 комментария
  • Как правильно развернуть несколько web-приложений с помощью docker compose на одном сервере?

    @alekssamos
    Программист любитель
    Каждое приложение слушает свой порт.
    То есть надо их запустить на разных портах, например, 5000, 5001, 5002.
    А дальше настраивать обратный прокси на сервере.
    Ответ написан
    Комментировать
  • В чем разница между ajax, вебсокетом и реактивностью?

    @alekssamos
    Программист любитель
    Ajax - допустим каждые 3 секунды спрашивать у сервера "есть ли новые данные?""
    Сокет - одно соединение один раз между клиентом и сервером открывается и любая сторона может мгновенно передать данные.
    Реактивность - изменение, можно хоть данными, полученными способами выше, хоть счетчиком от одного до ста оффлайн.
    Ответ написан
    Комментировать
  • ТГ бот как лучше сделать отправку фото/файла?

    @alekssamos
    Программист любитель
    В интернете нашёл такое решение. Через selenium и браузер Chrome. Думаю, основываясь на этом, можно переделать под этот случай.
    Я даже нашёл скрипт для автоматической установки драйвера
    https://pypi.org/project/chromedriver-autoinstaller/
    # pip install selenium
    
    import os
    from pathlib import Path
    from platform import system
    from urllib.parse import urlparse
    
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.chrome.service import Service
    from selenium.webdriver.common.by import By
    
    options = Options()
    options.add_argument("--headless")
    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    options.add_experimental_option('useAutomationExtension', False)
    options.add_argument("--disable-blink-features=AutomationControlled")
    
    exec_path = os.path.join(os.getcwd(), 'driver', 'chromedriver.exe') if system() == "Windows" else \
        os.path.join(os.getcwd(), 'driver', 'chromedriver')
    
    driver = webdriver.Chrome(options=options, service=Service(log_path=os.devnull, executable_path=exec_path))
    
    driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
        'source': '''
            delete window.cdc_adoQpoasnfa76pfcZLmcfl_Array;
            delete window.cdc_adoQpoasnfa76pfcZLmcfl_Promise;
            delete window.cdc_adoQpoasnfa76pfcZLmcfl_Symbol;
      '''
    })
    
    
    def screen_sait(url) -> None:
        path = str(urlparse(url).hostname).replace(Path(str(urlparse(url).hostname)).suffix, ".png")
        driver.get(url)
        s = lambda x: driver.execute_script('return document.body.parentNode.scroll' + x)
        driver.set_window_size(s('Width'), s('Height'))
        driver.find_element(By.TAG_NAME, 'body').screenshot(path)
        driver.close()
        driver.quit()
    
    
    screen_sait('https://codeby.net/')
    Ответ написан
    Комментировать
  • Может ли сервис узнать реальный ip?

    @alekssamos
    Программист любитель
    Приложения на js могут узнать IP, да.
    Ответ написан
    Комментировать
  • Как правильно асинхронно парсить телеграмм канал?

    @alekssamos
    Программист любитель
    async def get_channel_id(client, link):  # получение ID канала
        m = await client.get_messages(link, limit=1)
        channel_id = m[0].peer_id.channel_id
        return str(channel_id)
    Ответ написан
  • Почему не видно голос microsoft pavel?

    @alekssamos
    Программист любитель
    Скачайте архив *pavel.windows10.zip* и в зависимости от разрядности Windows примените файл реестра оттуда.
    Ответ написан
  • Почему не работает проверка на аргументы в vkbottle?

    @alekssamos
    Программист любитель
    Попробуй проверку поменять: просто if not mention:
    Ответ написан