Ответы пользователя по тегу Python
  • Ошибка с Python requests. Qiwi api?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    А твой сервер не в Нидерландах случаем или где-нибудь в других буржуйских странах?

    Кивас такой человек, что не желает принимать запросы с иностранных ip. Только с российских.
    Ответ написан
    1 комментарий
  • Добавка в автозагрузку на python?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    В папку автозагрузки кидаешь батник с командой запуска нужного скрипта
    Ответ написан
  • Почему изменяется оригинальный список при создании из его элементов нового списка?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Достаточно вот тут:
    if type(n[i]) is list:
            x.append(n[i])


    сделать так:
    if type(n[i]) is list:
            x.append(n[i] * 1)


    Дело в том что ты в x добавляешь не сам список, а ссылку на него. Поэтому достаточно произвести какую-либо мутацию списка (это создаст новый список) при добавлении, умножение на 1 как раз производит эту мутацию что и приводит к правильной работе программы
    Ответ написан
    Комментировать
  • Selenium почему не подключается прокси?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    На stackoverflow нашел такой код, у меня работает

    from selenium import webdriver
    
    PROXY="176.9.119.170:8080"
    webdriver.DesiredCapabilities.CHROME['proxy'] = {
        "httpProxy": PROXY,
        "ftpProxy": PROXY,
        "sslProxy": PROXY,
        "proxyType": "MANUAL",
    
    }
    
    webdriver.DesiredCapabilities.CHROME['acceptSslCerts']=True
    
    driver =webdriver.Chrome(r".\chromedriver.exe")
    
    
    driver.get("https://www.google.com")
    Ответ написан
  • Python. Как получить инвентарь пользователя по трейд-ссылке?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Нашел код на просторах гугла для получения steamid64 из trade url

    def url2id(trade_url): # Steam Trade Url >>> SteamID32 & SteamID64.
      accountid = "".join([i for i in str(trade_url).split("&")[0] if i.isdigit()])
    
      id32 = str("STEAM_0:{0}:{1}").format(int(accountid) & 1, int(accountid) >> 1)
      id64 = 76561197960265728
      id_split = id32.split(":")
      id64 += int(id_split[2]) * 2
      
      if id_split[1] == "1":
        id64 += 1
          
      return str(id64)


    Соответственно тут ты получил steamid64. Дальше есть специальный url для получения инветоря. Далее делаешь запрос на url (попробуй из браузера свой id подставить и дальше ты поймешь сам что делать)

    https://steamcommunity.com/inventory/cюда id вставляй/730/2?l=russia&count=5000
    Ответ написан
    Комментировать
  • Как обратиться к бд если она занята другой программой?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Юзай субд, у которых есть конкурентный доступ - Mysql, Postgres и т.д.

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

    Но если ты не можешь поднять нормальную субд - вряд ли ты поднимешь тот же rabbitmq
    Ответ написан
  • Скачать pdf файл по ссылке на скачивание в python?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Как и ответил soremix нужно качать именно так.

    Если после скачивания пдфка не открывается - проблема в контенте, который отдает сервер. Для этого предлагаю помимо того кода, что написал soremix добавить еще и последнюю строку
    r = requests.get('https://www.cian.ru/export/pdf/rent/flat/262482762/')
    
    with open('file.pdf', 'wb') as f:
        f.write(r.content)
        print(r.text)


    И посмотреть ответ в текстовом виде. Можешь залить на какой-нибудь pastebin и кинуть сюда линк, посмотрю.

    Сайт закрыт cloudflare и по данным check-host.net выдает 503 код любым ipшникам, кроме Российских. Так что если у тебя виртуалка в какой-нибудь Англии - тогда все понятно.
    Ответ написан
    2 комментария
  • Как рандомно открыть фотки в Телеграмм Боте на Python?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    У тебя есть папки (Москва, Питер, Казань и т.д.) В каждой из них еще есть папки (допустим в Москве есть папка кремль). В Этой папке кремль есть txt и фотки.

    Пусть юзер нажал кнопку "Москва". Там есть 3 папки: Кремль, Набережная, Воробьевы горы. Далее мы получаем список всех подпапок папки Москва и рандомом выбираем любую. Получаем её имя, заходим в нее и получаем все фотки (можно именовать 1.jpg, 2.jpg и т.д. или же получать список всех файлов по определенным расширениям jpg, png и т.д.), txtшник желательно именовать всегда одинаково (допустим desc.txt).

    И отправляем все это дело пользователю.

    Страшная задача "Как рандомно открыть фотки в Телеграмм Боте на Python?" выливается в несколько маленьких подзадач, решения которых лежат в интернете и находятся в свободном доступе)
    Ответ написан
    Комментировать
  • Как раз в 15 минут обновлять значения в бд?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Ты хочешь сделать просрачивание платежа?

    Напиши простенького демона.

    В базу добавь поле created, куда при создании платежа записывай текущий unixtime.

    import time
    
    t = int(time.time())
    
    print(t)

    Посмотри что выводит этот код.

    Это значение при создании платежа надо закинуть в поле created.

    Далее. Тот самый демон раз в минуту будет гонять в базу и делать один и тот же запрос. По типу этого кода:

    import time
    import pymysql
    
    
    while True:
        connect = pymysql.connect(host='127.0.0.1', user='root', password='228', db='database_name')
        cursor = connect.cursor()
    
        cursor.execute(f"UPDATE payments SET CANCELED=1 WHERE CANCELED=0 AND COMPLETED=0 AND created<{time.time() - 60 * 15}")
    
        connect.commit()
        connect.close()
    
        time.sleep(60)


    Вот и вся магия. Тут код для mysql. Для sqlite напишешь сам по аналогии.
    Ответ написан
    Комментировать
  • Каким образом выводится значение из словаря?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Ранее была строка
    for name in favorite_languages.keys():

    Эта строка запускает перебор всех ключей в словаре favorite_languages и записывает каждый из них в переменную name.

    Строка
    language = favorite_languages[name].title()
    Означает, что в переменную language будет занесено значение по ключу, который хранится в переменной name.

    А так желательно бы вам ознакомиться с основами языка Python
    Ответ написан
    1 комментарий
  • Бот написанный на Python не работает после выключения компьютера?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Бот на Python - эта та же самая программа. А программа должна где-то исполняться.

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

    Своего бота ты можешь разместить на любом vds/vps или выделенном сервере. Также можно воспользоваться хостингом приложений в облаке по типу heroku.
    Ответ написан
    Комментировать
  • Как запустить два и более longpool ВК ботов на одном сервере?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Да без проблем, запускай.

    Просто каждого бота загоняй в screen, чтобы они могли работать после отключения от ssh.
    Ответ написан
  • Как посчитать сколько прошло секунд с даты до другой?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Вот что-то по типу этого
    a, b, t1, t2 = '12:44:11'.split(':'), '12:45:55'.split(':'), 0, 0
    
    for i in range(2, -1, -1):
        t1, t2 = t1 + 60**i*int(a[2-i]), t2 + 60**i*int(b[2-i])
    
    print((86400 - t1) * int(t2 < t1) + t2 - t1 * int(not (t2 < t1)))

    Тут также учтено то, что второе время может быть взято из следующего дня
    Ответ написан
    6 комментариев
  • Как отправить изображение с imgur в Telegram Bot Python?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Потому что по ссылке html страница, а не фотка. Надо делать так

    bot.send_photo(message.chat.id, get('https://i.imgur.com/yaBianG.jpeg').content)
    Ответ написан
    Комментировать
  • Можно ли получить айпи адрес от перехода по ссылке?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Да.
    Для этого достаточно сделать прослойку в виде собственного сайта-редиректа.

    Из простого - передавать ссылку на оплату GET параметром в запросе. Делаете нужные действия скриптом (логируете IP или еще чего там надо) и редиректите на оплату. Можно прикрутить что-то по типу кодировки URL в base64, чтобы рядовой юзер не сообразил, что можно перейти на URL напрямую.

    Из сложного - создавать заказ в базе и передавать его идентификатор GET параметром. Это может быть тупо его id. Также как и в первом варианте логируем действия пользователя. Далее берем из базы URL оплаты для этого идентификатора заказа и редиректим.

    На PHP проще всего это будет сделать. Берем стандартную связку nginx-php-mysql

    Если же нужно на Python то тут тоже все не сложно. Пишем простенькую flask приложуху и в бой. Лучше всего будет его также разместить за nginx.

    =============
    IP сервера лучше всего не светить. Тут поможет бесплатный домен по типу tk или ml.
    Чтобы IP не узнали по домену - нужно ставить сервер за cloudflare.
    =============

    Все это не включая написания приложения займет буквально минут 15. Самое долгое из этого - ожидание появления информации о новом домене в cloudflare.
    Ответ написан
    1 комментарий
  • Как разрезать строку на список?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    import re
    
    a = 'A729D2B91E1'
    
    b = re.findall(r'[A-Z]\d+', a)
    
    print(b)
    Ответ написан
    Комментировать
  • Почему может возникать ошибка SimpleQIWI.errors.QIWIAPIerror?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Если учитывать что ты запрашиваешь историю платежей то это может быть:

    1) нет нужных разрешений у токена
    2) превышена частота запросов истории платежей (100 запросов в минуту)
    Ответ написан
    1 комментарий
  • Что такое проксирующий Nginx?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Нет, тебе не нужен nginx. Так как pyqiwip2p не принимает хуки от киви, а использует api киви для проверки статуса платежа.

    А так если бы у тебя был хендлер хука от киви. То стоял бы скриптик на пыхе или чем-нибудь еще. Тогда nginx был бы прокси для какого-нибудь php-fpm или gunicorn.
    Ответ написан
  • Как использовать библиотеку simple qiwi(python) через прокси?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Насколько мне известно в simpleqiwi нет поддержки прокси, как и в других библиотеках для работы с qiwi.

    Нужно либо писать запросы своими силами через requests, либо же копаться в исходниках simpleqiwi и корректировать их так, чтобы все запросы шли через прокси.
    Ответ написан
    1 комментарий
  • Как прикрепить фотографию к сообщению бота ВК?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Сохрани картинку как файл и уже в upload.photo_messages(image) в переменной image указывай путь до файла.

    import secrets
    
    
    def getSteamItemImageFromUrl(classID: str):
        STEAM_URL = 'https://steamcommunity-a.akamaihd.net/economy/image/class/730/'
        response = get(STEAM_URL + classID + '/330fx250f', stream=True).content
        filename = secrets.token_hex(16) + '.jpg'
    
        with open(filename, 'wb') as file:
            file.write(response)
    
        return filename
    
    
    def uploadImageToServer(image) -> str:
        """Загружает изображение на сервер, возвращает строку для attachment"""
        upload = vk_api.VkUpload(vk)
        photo = upload.photo_messages(image)
        return f"photo_{photo['owner_id']}_{photo['id']}"


    Вот что-то такое должно получиться. Можно после отправки фото на сервер удалять его с диска.
    Ответ написан
    1 комментарий