• Как задать это условие?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Нет имен в lists, там есть только 2 списка. Если вам нужны имена, было бы логично использовать словарь.

    lists = {
        'list1' : list1,
        'list2' : list2
    }
    if list_name in lists:
        random.choices(lists[list_name], weights=[...])
    Ответ написан
    1 комментарий
  • Не находит встроенную функцию или метод, что делать?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Скобки то круглые должны быть у open()....
    И в принципе что за странная конструкция, для чего она?
    Ответ написан
  • Как исправить ошибку none item.find при создании словаря?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    table, а не tabel
    Плюс, вы явно хотите найти только одну таблицу, и в ней уже искать tr.
    А вообще, там таблица чуть поломанная, тег закрывается, не открывшись. Лучше в lxml переключить тогда.

    Ну и по мелочи выбраны не те блоки явно.

    def get_content(html):
        soup = BeautifulSoup(html, 'lxml')
        items = soup.find('table', class_='rating').find_all('tr')
        chars = []
        for item in items:
            chars.append({
                'nick': item.find('a', class_='hint--bottom-right').text,
                'server': item.find('a', class_='realm').text,
                'link': item.find('a', class_='hint--bottom-right').get('href')
    
            })
        print(chars)
    Ответ написан
    Комментировать
  • PyQiwiP2P сломался или я криворукий?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    upd: там в консоли ниже написано, в чем проблема, киви вернул другой ответ. Либа файл сгенерировала, где можно глянуть что киви вернул
    Ответ написан
  • Реально ли вытащить ссылку m3u8 с этого сайта?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Реально, реально.
    Ссылку никто не скрывает, анализируйте траффик, который идет в браузере

    import requests
    
    token = requests.get('https://media.mediavitrina.ru/get_token').json()['result']['token']
    hls = requests.get(f'https://media.mediavitrina.ru/api/v2/tv5/playlist/tv-5_as_array.json?token={token}').json()['hls']
    Ответ написан
    1 комментарий
  • Как разобрать команду на данные?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    есть 2 таблицы в которых введены разные данные у одной таблице тип c, а у другой таблицы тип e.

    В вопросе одна таблица, так что по скуле не подскажу,

    import re
    
    @bot.message_handler(regexp=r'/[ec]\d+')
    def get_data(message):
        type_, id_ = re.findall(r'/([ec])(\d+)', message.text)[0]
    Ответ написан
    Комментировать
  • PyCharm и VSCode дают разный результат?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    os.getcwd() показывает не путь до .py файла, а место, откуда был вызван скрипт.

    Допустим скрипт лежит в C:\Users\User\PycharmProjects\my

    Если открыть консоль на диске Y:\, и выполнить
    Y:\>python C:\Users\User\PycharmProjects\my\app.py
    То получим вывод "Y:\", потому что код вызвали с диска Y:\, использовав полный путь до файла.

    Если откроем консоль в папке "C:\Users\User\PycharmProjects\my" и выполним
    python app.py
    То получим путь до "C:\Users\User\PycharmProjects\my", т.к. скрипт мы вызвали из этой папки

    Почему результат разный - PyCharm вызывает код внутри папки проекта, а VSCode из папки C:\Users\User

    Если хотите путь до скрипта получить - os.path.realpath(__file__)
    Ответ написан
    Комментировать
  • Как с помощью Selenium скопировать таблицу с Google Sheets?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Там есть кнопка экспорта в excel и других форматах.

    import requests
    
    doc_id = "тут id дока"
    
    r = requests.get(f'https://docs.google.com/spreadsheets/d/{doc_id}/export?format=xlsx&id={doc_id}')
    
    with open(f'{doc_id}.xlsx', 'wb') as f:
        f.write(r.content)
    Ответ написан
    1 комментарий
  • Как написать регулярное выражение для проверки, что в предложении есть слова с расставленными ударениями в виде знака +?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    import re
    
    
    text = '''
    1) мы+ е+хали на+ да+чу
    2) мы ехали на дачу+
    3) 2 + 2 равно 5
    4) 2 + 2 равно+ четы+ре'''
    
    def repl(match):
        return match.group('word') if match.group('word') else ' плюс '
    
    print(re.sub(r'(?=\w\+)(?P<word>\w)\+|\s(\+)\s', repl, text))
    Ответ написан
    Комментировать
  • Пишу бота на аиограм. Не создается папка через модуль os и exceptions?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Некрасивое и неправильное использование методово os.

    Если делаете путь с флагом r - можно не экранировать бекслеши. И трейлинг слеш не нужен, так что
    my_path = r'C:\Users\User\Desktop\python\my_first_project\Documents'


    os.chdir(my_path) - не нужен

    В таком коде:
    check_dir = os.listdir()
    for items in check_dir:
    if items != str(id_data):

    папка будет создаваться всегда (если она не стоит в самом верху). Плюс, такое использование в принципе может привести к проблемам, если существует файл с одноименным названием. Лучше всего будет использовать встроенный метод os.path.isdir(path), который проверяет, является ли переданный в него путь папкой (не файлом).

    Есть os.mkdir(), а есть os.makedirs(), может тоже в будущем поможет. Мы будем брать os.mkdir().

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

    folder_path = os.path.join(my_path, id_data)

    Если все это соединить, в конце получим нормально работающий красивый код:
    my_path = r'C:\Users\User\Desktop\python\my_first_project\Documents'
    
    async def create_personal_folder(id_data): 
        folder_path = os.path.join(my_path, str(id_data))
        if os.path.isdir(path):
            return 'Вы давно были зарегистрированы'
        else:
            os.mkdir(folder_path)
            return 'Двигаемся дальше'


    В следующий раз оборачивайте код в специальный тег, никому не интересно читать невалидный файл.
    Небольшой читшит: https://pythonworld.ru/moduli/modul-os-path.html
    И не нужно писать ответ как тот, который вы написали. Это поле для ответа, никто не заходит в вопрос, если видно, что на него уже дали ответ, а на деле оказывается это вы просто пометку оставили. Редактируйте вопрос, либо пишите в комментарий к вопросу, если есть детали
    Ответ написан
    Комментировать
  • Как написать регулярное выражение?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    import re
    s = '   1  00:11:14:9D:BE:3A  какой-то текст     APP (1 test)'
    number, mac, text, type_ = re.findall(r'\s+(\d+)\s+([\w:]+)\s+(.+?)\s+(APP.+)', s)[0]
    Ответ написан
    Комментировать
  • Как проверять наличие пробела в слове?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    \w - это символы [a-zA-Z0-9_], пробела тут нет, как видно, поэтому первое имя выпадает. Можно просто через точку поискать

    for line in text:
        attacker, victim = re.findall(r'\]\s(.+):(.+)', line)[0]
        await kchannel.send(f':crossed_swords: Игрок **{attacker}** убил игрока **{victim}**')
    Ответ написан
    1 комментарий
  • Как сделать команды в python боте discord доступными только для администратора сервера?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Вариантов много, хоть внутри функции с обработкой команды, хоть декоратором. Думаю, декоратором будет правильнее. В discordpy есть специальный декоратор для этого, чтобы свой не придумывать
    @commands.has_guild_permissions(administrator=True)


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

    from discord.ext import commands
    
    @bot.command()
    @commands.has_guild_permissions(administrator=True)
    async def test(ctx):
        ctx.send('hello world')
    
    
    @test.error
    async def test_error(ctx, error):
        if isinstance(error, commands.errors.MissingPermissions):
            await ctx.send('Недостаточно прав')
    Ответ написан
    1 комментарий
  • Как получить ссылку с save from net?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Сервис зарабатывает за счет того, что пользователи пользуются их сайтом. Естественно, сервису не нравится и он пытается защититься от подобных автоматизаций. Простыми запросами не получится ничего получить, то, что вы видите в F12 - это отрендеренная версия браузером, вас должен интересовать только исходный код (CTRL+U).

    Вернее, коненчно, через запросы наверняка можно получить ссылку, если отреверсите их скрипт с ссылкой:
    а скрипта оказывается не будет :c
    Текст ответа не может быть более 10 тысяч символов


    Можно загрузить через селениум
    from selenium import webdriver
    
    driver = webdriver.Chrome()
    
    driver.get('https://ru.savefrom.net/7/')
    driver.find_element_by_id('sf_url').send_keys('http://youtube.com/watch?v=aQ2tXk-2UEg')
    driver.find_element_by_id('sf_submit').click()
    print(driver.find_element_by_class_name('link-download').get_attribute('href'))


    Это в общем случае, может понадобится выставить какие нибудь задержки на поиск элементов. Если нужен хедлес режим - это уже самому.
    Ответ написан
    Комментировать
  • Как получить ссылку .m3u8 с сайта при помощи Python?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Взять ID нужного канала, или что там. Отправить запрос с этим ID как в коде. Достать m3u8

    import requests
    
    data = requests.get('https://rutube.ru/api/play/options/6790928c5b1d07e50b71df24957c29ad/?no_404=true&referer=https%3A%2F%2Frutube.ru%2Ffeeds%2Flive%2F&platform=player-carousel').json()
    
    print(data['live_streams']['hls'][0]['url'])
    Ответ написан
  • Почему выдает ошибку?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Причем тут боты и телеграм?

    Кто подчеркивает, как подчеркивает? Выпадает ошибка или подчеркивает? Прочитайте

    Если это весь код - то возможно выделена, как неиспользуемая.
    Ответ написан
  • Как получить и преобразовать в base64 qrcode?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Так каша получается, вместо нормального base64

    import qrcode
    import base64
    from io import BytesIO
    
    img = qrcode.make(data)
    buffered = BytesIO()
    img.save(buffered, format="PNG")
    img_str = base64.b64encode(buffered.getvalue()).decode("utf-8")
    
    print(img_str)
    Ответ написан
    Комментировать
  • Почему if, else вот так не работает?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Потому что неправильно используете register_next_step_handler

    Первый аргумент - объект сообщения, который вы получаете при отправке. Смотрите примеры:
    https://github.com/eternnoir/pyTelegramBotAPI/blob...

    msg = bot.send_message(call.message.chat.id, 'Напиши город или выбери из списка', reply_markup = markup_reply)
    bot.register_next_step_handler(msg, location)
    Ответ написан
    Комментировать
  • Сделал код отправки сообщения, бот говорит что такого чата нету, что делать?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    В функции argument вы возвращаете срез списка. Я так понимаю в тексте через пробел идет ID чата? Тогда вы хотелиreturn arg.split()[1]
    Ответ написан
    1 комментарий
  • Надо ли самозанятым высылать чеки биржам?

    SoreMix
    @SoreMix
    yellow
    Лично мне юрист сказал - ваша основная задача продажу добавить и иметь возможность отправить чек в любой момент, если он понадобится. Можно не высылать, главное чтоб вы всегда могли предъявить его по требованию. Но я спрашивал только по поводу иностранных компаний. Ну и если налоговая спросит откуда деньги, нужно понимать какой чек от какой продажи пришел, а так - никому это не интересно из компаний
    Ответ написан
    2 комментария