• Как обработать исключение в потоке?

    @Alexa2007
    Вот так работает без ошибок
    import requests as s 
    from time import sleep
    import threading
    
    def main():
      web = ['https://google.com','https://habr.com','https://vk.com']
    
      for i in web:
        try:
            r = s.get(i)
        except:
    
            print('error')
            sleep(5)
            s.get(i)
    
    
    my_thread1 = threading.Thread(target=main)
    my_thread1.start()
    my_thread2 = threading.Thread(target=main)
    my_thread2.start()
    Ответ написан
  • Ошибка "чат не найденно" телеграм python?

    @Alexa2007
    Как решить?

    НИКАК!!! Твой id уже увидело сто человек, представь если 100500 ботов будут слать тебе сообщение по сто штук в секунду (А это пару строк на питоне), тебе проще будет выкинуть тлф или удалить телегу, всех в чс не отправить... Поэтому политика конфиденциальности телеграмма такова, что пока ты не нажмёш старт, бот тебе не напишет.
    Ответ написан
    Комментировать
  • Как интегрировать программу на python в telegram бота?

    @Alexa2007
    Во первых советую вам разделить бота на несколько файлов и избавиться от кучи elif. Потому что, когда вы уберете pass и напишете код это будет оооооочень длинный код. Во вторых: как вариант переписать класс бота дополнив своими методами, а инфа будет гоняться через self.
    import telebot
    import time
    import threading
    API_TOKEN = '11111111111111111111111111111111'
    class my_bot(telebot.TeleBot):
        def loop_poop(self):
            while True:
                print(time.ctime())
                time.sleep(1)
    
        def start_action(self):
            thread = threading.Thread(target=self.loop_poop)
            thread.start()
    
    bot = my_bot(token = API_TOKEN, threaded=False)
    
    @bot.message_handler(commands=['start'])
    def wellcome(message):
        if message.chat.type == 'private':
            bot.send_message(message.chat.id,'Hello')
    bot.start_action()
    bot.polling()

    Но это я походу загнул. думаю вам необходимо на пальцах объяснить, что вы хотите сделать, потому как нифига не понятно
    @bot.message_handler(content_types=['text']) сделать вычисления, а потом в @bot.callback_query_handler(func=lambda call: True) эти вычисления отправлять.

    Допустим в @bot.message_handler(content_types=['text']) вы напишете х=2+2 затем в @bot.callback_query_handler(func=lambda call: True) необходимо сделать х+=2 и в консоли вы ждете 6. Я так понимаю... Если да то думаю проблема в логике... Такое возможно с использованием глобал, но прикол в том что эта глобал для всех пользователей и если три человека одновременно будут плюсовать, там будет *опа. Поэтому как вариант создавать 17854346.json для каждого пользователя и с каждым событием считывать данные
    Ответ написан
    Комментировать
  • Time.sleep() Как поставить значение пользователя?

    @Alexa2007
    А что значит
    1 лошадь
    5 лошадь

    kb2 = types.InlineKeyboardButton('1 horse', callback_data = '1h')
          kb3 = types.InlineKeyboardButton('5 horse', callback_data = '10h')


    def inline (call):
      if call.message:
        if call.data == '10':
          time.sleep(10)

    Ты так остановишь всего бота. Необходимо создать базу, а в неё записывать юзер, время старта паузы, длинна паузы.
    А вторым циклом сравнивать нынешнее время с данными из базы. И в результате небольшой математики отпрвлять сообщение юзеру из базы внужное время. И работать это будет на компе или впс. Бесплатные хостинги или не запустят код или за пару часов потратишь лимит на день.

    Вот пример двух потоков в боте:
    import telebot
    import time
    import threading
    API_TOKEN = '11111111111111111111111111111111'
    class my_bot(telebot.TeleBot):
        def loop_poop(self):
            while True:
                print(time.ctime())
                time.sleep(1)
    
        def start_action(self):
            thread = threading.Thread(target=self.loop_poop)
            thread.start()
    
    bot = my_bot(token = API_TOKEN, threaded=False)
    
    @bot.message_handler(commands=['start'])
    def wellcome(message):
        if message.chat.type == 'private':
            bot.send_message(message.chat.id,'Hello')
    bot.start_action()
    bot.polling()
    Ответ написан
  • Как выводить результат функции в окне, параллельно ее работе?

    @Alexa2007
    Необходимо передавать объект окна в класс, а дальше в методах писать о процессе выполнения
    from tkinter import *
    from time import sleep
    
    
    class Myfunctions(object):
        def __init__(self, window):
            self.window = window
    
        def send_email(self):
            self.window.title('Sending message..')
            sleep(2)
            self.window.title('OK')
    
        def send_email_with_error(self):
            try:
                10/0
            except Exception as e:
                self.window.title('Error sending: '+ str(e))
    
            
    window = Tk() 
    
    helper = Myfunctions(window)
    def on():
        helper.send_email()
    def off():
        helper.send_email_with_error()
    
    
    on_btn = Button(window,text='on', height=1, width=20, command=lambda:on()).pack()
    off_btn = Button(window,text='off', height=1, width=20, command=lambda:off()).pack()
    
    window.geometry('400x50')
    window.resizable(width=False, height=False)
    
    window.mainloop()
    Ответ написан
    Комментировать
  • Python invalid literal for int() with base 10: ''?

    @Alexa2007
    отключил куки
    изменил "User-Agent":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36"
    В этом методе получил результат
    def count_page(self):
            page_count = self.session.get('https://lolz.guru/online/?type=registered&page=1',headers=self.headers)
            print(page_count.text)

    <!doctype html><html><head><script src="/process-qv9ypsgmv9.js"></script></head><body><script>window.onload=function(){process();}</script><noscript><p>Please enable JavaScript and Cookies in your browser.</p></noscript></body></html>


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

    Короче твой код работает, просто ты берешь не тот <a>, пробовал вручную словить, но так и не удалось. По быстрому будет селениумом. А для парсинга уже класс используй.
    А если я тебе предложу их просто спарсить в многопотоке.

    import requests
    from multiprocessing.dummy import Pool as ThreadPool 
    
    url = 'https://lolz.guru/online/?type=registered&page='
    # Не забудь хедеры и куки прикрутить, а то точно работать не будет
    urls = [url+str(i) for i in range(1,8)]# С первой по максимальную страницу
    print(urls)
    
    def get_url(url):
        r = requests.get(url)
        print(r.text)
    
    pool = ThreadPool(20) # Кол-во потоков - по числу ядер, но можно забить и больше, просто работать будет по кол-ву ядер
    results = pool.map(get_url, urls)
    pool.close() 
    pool.join()
    Ответ написан
  • Не получается создать json с данными из списка, как это сделать?

    @Alexa2007
    import json
    
    temp_dict={}
    
    a=["abv","abg","dadad","dsadasd","dsadds"]
    b=["agd","dsa","dsad","dsadad","dasdad"]
    
    temp_dict['paler']=a
    
    
    with open('result.json','w') as json_file:
            json.dump(temp_dict,json_file, ensure_ascii=True, indent = 4)


    Вывод

    {
        "paler": [
            "abv",
            "abg",
            "dadad",
            "dsadasd",
            "dsadds"
        ]
    }
    Ответ написан
    Комментировать
  • Помощь с tkinter вводом?

    @Alexa2007
    from tkinter import *
     
    def get_text():
        s = text.get(1.0, END)
        print(s)
      
    root = Tk() 
    text = Text(width=25, height=5)
    text.pack()
    Button(root, text="В консоль->",
           command=get_text).pack(side=LEFT)
    
    root.mainloop()
    Ответ написан
  • Черный экран при запуске pygame window. Что делать? Что не так?

    @Alexa2007
    Убрал всё лишнее и импортировал твой класс, заработало вот так
    def draw(self, screen):
        rect_image = self.car.get_rect(center=(self.pos[0],self.pos[1]))
        screen.blit(self.car, rect_image)
        self.draw_radars(screen)
    Ответ написан
  • Сделала с помощью модуля pandas, кто знает как сделать через собственный класс?

    @Alexa2007
    class Users(object):
    	def __init__(self):
    		self._users = {}
    		self.load_users()
    	def load_users(self):
    		ffile_info=[]
    		sfile_info=[]
    		with open('1.txt','r',encoding='utf-8') as ffile:
    			ffile_info = ffile.read().splitlines()
    		with open('2.txt','r',encoding='utf-8') as sfile:
    			sfile_info = sfile.read().splitlines()
    		for uinn in ffile_info:
    			pass
    			finn = uinn.split(',')[0]
    			for suinn in sfile_info:
    				sinn = suinn.split(',')[1][4:]
    				if finn == sinn:
    					self._users.update({finn:[uinn.split(',')[1],
    						uinn.split(',')[2],
    						suinn.split(',')[0],
    						suinn.split(',')[2],
    						suinn.split(',')[3],
    						suinn.split(',')[4]]})
    	def check_zp(self):
    		for user in self._users:
    			if self._users[user][1] < self._users[user][0]:
    				print(user, self._users[user][3])
    
    		
    u = Users()
    u.check_zp()
    Ответ написан
    Комментировать
  • Как сделать анимированную загрузку?

    @Alexa2007
    from tkinter import *
    import  time
    from threading import *
    
    
    class My_window(Tk):
        def __init__(self):
            super(My_window,self).__init__()
            self._state = None
            self._thread = Thread(target=self.loop_poop)
            self._thread.setDaemon(True)
            self._thread_active = False
    
        def loop_poop(self):
            while self._thread_active:
                if self._state:
                    time.sleep(1)
                    self.title (time.ctime())
                else:
                    pass
    
        @property
        def is_downloading(self):
            return self._state 
       
        @is_downloading.setter
        def is_downloading(self,tpm):
            print('Start threding', tpm)     
            if tpm == True:     
                if self._thread_active == True:
                    self._state=True
                else:
                    self._state=True
                    self._thread_active=True
                    self._thread.start()
            elif tpm == False:
                self._state = False
            else:
                return(False)
    
    def on(window):
        window.is_downloading = True
    def off(window):
        window.is_downloading = False
    
    window = My_window()
    on_btn = Button(window,text='on', height=1, width=20, command=lambda window = window:on(window)).pack()
    off_btn = Button(window,text='off', height=1, width=20, command=lambda window = window:off(window)).pack()
    window.geometry('400x50')
    window.resizable(width=False, height=False)
    
    window.mainloop()
    Ответ написан
    Комментировать
  • Как передать имя базы данных в другую функцию?

    @Alexa2007
    Это во первых:
    from base import Base as db
    def connect(db):
    ......
    def download(db):
    ........

    Так будешь подключен к одному объекту
    Во вторых:
    class base:
        def __init__( self ):
            self.main_database_name=None
    .............
    
        @property
        def db_name(self):
            _db_name = self.main_database_name
            return _db_name

    Ну а дальше:
    def on_select(event, db):
        print(db.db_name)
    Ответ написан
  • Как добавить sqlite3 в teleboy python?

    @Alexa2007
    С базой легче(и правильнее) работать примерно вот так
    Внизу закоментирован пример того как он работает

    А бот можете тоже создать сразу с легкой масштабируемостью вот так

    И если есть необходимость задавать вопросы и ожидать ответа (введите логин, введите пароль), то вот пример того, как это реализовуется. Тут разжовуется
    Ответ написан
  • Как исправить соотношение видео в боте telebot?

    @Alexa2007
    Когда отправляешь что-то через телегу, она сохраняет это на своих серверах.
    Отправь боту один раз видео, а потом отправляй всем ID этого видео, А телега сама всё сделает, а файл с телефона можно даже удалить...он на сервере
    @bot.message_handler(content_types=["video"])
    def confirming(message):
        if message.content_type == 'video':
            print(message.video.file_id) #ID видео файла на сервере 
            bot.send_video(message.chat.id, message.video.file_id)# Отправляешь его сам себе
        else:
            pass
    Ответ написан
    Комментировать
  • Как отправить свой контакт через sendContact?

    @Alexa2007
    Так проще
    @bot.message_handler(commands=['start'])
    def start_m(message):
        kkb = types.ReplyKeyboardMarkup()
        bbt = types.KeyboardButton('Отправить контакт',request_contact=True)
        kkb.add(bbt)
        bot.send_message(message.chat.id,'Нажми на кнопку, чтобы отправить контакт', reply_markup = kkb)
    Ответ написан
    1 комментарий
  • Как передать переменную из одной функции в другую?

    @Alexa2007
    Особо не въехал... но возможно поможет вот

    ну или так !!!Но это ЗЛО!!! :
    a = '3'
    def foo_one(x):
        print(x)
        global a
        a=10
    
    def foo_two(y):
        print(y)
    
    foo_one(a)
    foo_two(a)
    Ответ написан
    Комментировать
  • Почему не меняется адрес с прокси?

    @Alexa2007
    url = f"https://yandex.ru/search/?lr=39&text=купить самокат" - Ростов
    url = f"https://yandex.ru/search/?lr=22&text=купить самокат" - Калининград
    Ответ написан
    Комментировать
  • Почему не работает Handler в Телеграм боте?

    @Alexa2007
    Вот так должен выглядеть хендлер, который сработает:
    @bot.message_handler(commands=['sos'])
    def wellcome(message):
        if message.chat.type == 'private':
            bot.send_message(message.chat.id,'Hello')


    И чтоб он сработал, необходимо в телеге отправить боту "/sos", а не просто sos
    Ответ написан
    Комментировать
  • Как из тела письма достать ссылку?

    @Alexa2007
    Для этого используют регулярные выражения. Но если письмо в формате html то ещё и BeautefulSoup. Но для этого необходимо пример письма, а не код, который не имеет к этому никакого отношения. Хотя молодец! Многие даже этого не делают.
    Ответ написан
    4 комментария