Уведомления

Группа в Telegram: @pythonsu

Уведомления

  • Found 3495 posts.

Web » Генератор API клиента, OpenApi (swagger) v3.0 » Окт. 4, 2021 12:28:48

Здравствуйте, есть пара вопросов касательно openapi generator (https://openapi-generator.tech/docs/installation):
1) пользовался ли кто-то и удалось ли успешно сгенерировать клиент на питоне?
2) есть ли какие-то инструкции, как допилить генератор (или свои шаблоны, или еще что-то) так, чтобы реально клиент заработал?

Что у меня получилось: у нас есть большая openapi спецификация, написанная с поддержкой разных фич 3-ей версии, к примеру (oneOf/AllOf/anyOf), где данный генератор лажает, не знает что делать с такими типами и ставит UnknownType для аттрибута. А те, вещи, которые нормально сгенерировались, имеют другие проблемы: к примеру, удалось получить ответ от апишки, но не смогло создать модель на основе ответа:
 openapi_client.exceptions.ApiTypeError: Invalid type for variable 'activated'. Required value type is datetime and passed type was NoneType at ['received_data'][0]['activated']
Ну и так далее…
В общем, очень много проблем, а решать надо. Поделитесь своим опытом, если таковой имеется в генерации клиента опенсурсными инструментами.

Автоматизация бизнеса » Расшифруйте кодировку и получите 500$ » Окт. 3, 2021 04:11:47

Всем привет,
Расшифруйте этот зашифрованный текст и следуйте инструкциям, приведенным в этом зашифрованном тексте.
Это означает, что вы его расшифровали и выиграли приз в 500 долларов.

ba3xDmsH/xHtIPa7KO3uDQHnuZzXAxS0fEfXmLgt7ISasdETm9Oj9s/VGpXH//egpN6Rs0vJmZnONQtf73p1k8sYYuNO

7sC5/LNvSfwucMw1EYiujj2Nrya34lORM7pp/vsR2PYGeaLqbeSFk6RtQq0X5Kj2n97bagRxlLAJNzh2VTkEESWn/W5YIhz

ucdNdLlWmz/5F2zltM0NkzOeBwprugxU0GQ0tHcKh4fiQKCD8DZyitZcRIgbuYYwoGEmJddedm+GhUhN8RB6ljCxKu

wpXz2QdmAyiW97bAbOgUK/oVHsEZ5gLIr7NmdgDQ9t8XhrgmaZcO/bsYkkcBUJzLTUbqh4l+Sq4zWwFaCMyJTsuQv

rDAEbBqY8MCvPmNeD1aS/ey79SAnKrQp2T170lIAGQwZq7iP7YQs8VWsYsP2QlY0vTM86T852bEHL/Oon9grmUptD

4WTIGUakSNxJ70jySuOKQgZOME3S+9BcbpPx/c8lO32wH6FPe9RlMZaYf9RHKUsaPOMFPV+xFGJ2OhNeItJkEd7qv

p9aCj/h7zvdrQTCi5IFdsEWxEhRz2f1dxGciI5qc3k3Onvor55zCyA==

Расшифруйте кодировку и получите 500$

GUI » Расшифруйте кодировку и получите 500$ » Окт. 3, 2021 04:09:18

Всем привет,
Расшифруйте этот зашифрованный текст и следуйте инструкциям, приведенным в этом зашифрованном тексте.
Это означает, что вы его расшифровали и выиграли приз в 500 долларов.

ba3xDmsH/xHtIPa7KO3uDQHnuZzXAxS0fEfXmLgt7ISasdETm9Oj9s/VGpXH//egpN6Rs0vJmZnONQtf73p1k8sYYuNO

7sC5/LNvSfwucMw1EYiujj2Nrya34lORM7pp/vsR2PYGeaLqbeSFk6RtQq0X5Kj2n97bagRxlLAJNzh2VTkEESWn/W5YIhz

ucdNdLlWmz/5F2zltM0NkzOeBwprugxU0GQ0tHcKh4fiQKCD8DZyitZcRIgbuYYwoGEmJddedm+GhUhN8RB6ljCxKu

wpXz2QdmAyiW97bAbOgUK/oVHsEZ5gLIr7NmdgDQ9t8XhrgmaZcO/bsYkkcBUJzLTUbqh4l+Sq4zWwFaCMyJTsuQv

rDAEbBqY8MCvPmNeD1aS/ey79SAnKrQp2T170lIAGQwZq7iP7YQs8VWsYsP2QlY0vTM86T852bEHL/Oon9grmUptD

4WTIGUakSNxJ70jySuOKQgZOME3S+9BcbpPx/c8lO32wH6FPe9RlMZaYf9RHKUsaPOMFPV+xFGJ2OhNeItJkEd7qv

p9aCj/h7zvdrQTCi5IFdsEWxEhRz2f1dxGciI5qc3k3Onvor55zCyA==

Расшифруйте кодировку и получите 500$

Python для новичков » Расшифруйте кодировку и получите 500$ » Окт. 3, 2021 04:07:43

Всем привет,
Расшифруйте этот зашифрованный текст и следуйте инструкциям, приведенным в этом зашифрованном тексте.
Это означает, что вы его расшифровали и выиграли приз в 500 долларов.

ba3xDmsH/xHtIPa7KO3uDQHnuZzXAxS0fEfXmLgt7ISasdETm9Oj9s/VGpXH//egpN6Rs0vJmZnONQtf73p1k8sYYuNO

7sC5/LNvSfwucMw1EYiujj2Nrya34lORM7pp/vsR2PYGeaLqbeSFk6RtQq0X5Kj2n97bagRxlLAJNzh2VTkEESWn/W5YIhz

ucdNdLlWmz/5F2zltM0NkzOeBwprugxU0GQ0tHcKh4fiQKCD8DZyitZcRIgbuYYwoGEmJddedm+GhUhN8RB6ljCxKu

wpXz2QdmAyiW97bAbOgUK/oVHsEZ5gLIr7NmdgDQ9t8XhrgmaZcO/bsYkkcBUJzLTUbqh4l+Sq4zWwFaCMyJTsuQv

rDAEbBqY8MCvPmNeD1aS/ey79SAnKrQp2T170lIAGQwZq7iP7YQs8VWsYsP2QlY0vTM86T852bEHL/Oon9grmUptD

4WTIGUakSNxJ70jySuOKQgZOME3S+9BcbpPx/c8lO32wH6FPe9RlMZaYf9RHKUsaPOMFPV+xFGJ2OhNeItJkEd7qv

p9aCj/h7zvdrQTCi5IFdsEWxEhRz2f1dxGciI5qc3k3Onvor55zCyA==

Расшифруйте кодировку и получите 500$

Центр помощи » Расшифруйте кодировку и получите 500$ » Окт. 3, 2021 04:06:41

Всем привет,
Расшифруйте этот зашифрованный текст и следуйте инструкциям, приведенным в этом зашифрованном тексте.
Это означает, что вы его расшифровали и выиграли приз в 500 долларов.

ba3xDmsH/xHtIPa7KO3uDQHnuZzXAxS0fEfXmLgt7ISasdETm9Oj9s/VGpXH//egpN6Rs0vJmZnONQtf73p1k8sYYuNO

7sC5/LNvSfwucMw1EYiujj2Nrya34lORM7pp/vsR2PYGeaLqbeSFk6RtQq0X5Kj2n97bagRxlLAJNzh2VTkEESWn/W5YIhz

ucdNdLlWmz/5F2zltM0NkzOeBwprugxU0GQ0tHcKh4fiQKCD8DZyitZcRIgbuYYwoGEmJddedm+GhUhN8RB6ljCxKu

wpXz2QdmAyiW97bAbOgUK/oVHsEZ5gLIr7NmdgDQ9t8XhrgmaZcO/bsYkkcBUJzLTUbqh4l+Sq4zWwFaCMyJTsuQv

rDAEbBqY8MCvPmNeD1aS/ey79SAnKrQp2T170lIAGQwZq7iP7YQs8VWsYsP2QlY0vTM86T852bEHL/Oon9grmUptD

4WTIGUakSNxJ70jySuOKQgZOME3S+9BcbpPx/c8lO32wH6FPe9RlMZaYf9RHKUsaPOMFPV+xFGJ2OhNeItJkEd7qv

p9aCj/h7zvdrQTCi5IFdsEWxEhRz2f1dxGciI5qc3k3Onvor55zCyA==

Расшифруйте кодировку и получите 500$

Network » Я новичек и есть вопрос по клиент сокету » Сен. 28, 2021 01:40:46

Пишу дополнение для kodi, в питоне я новичок, можно сказать первый день.
Пишу сокет клиент
 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((ipToConnect, int(PortToConnect)))
sock.sendall(u'hello, world!')

собственно вопрос такой, как мне написать, чтоб sock.recv вызывался при приеме данных и был асинхронным
и вопрос второй, этот клиент должен получать как некоторые текстовые данные и картинки в формате JPG, как мне определять какие данные пришли (хотя думаю можно определить по размеру принятых данных, но все же) и как принятую картинку сохранить в файл?

заранее благодарен

Python для новичков » Помогите с кодом » Сен. 23, 2021 17:27:56

Отрыл недавно код, который не работает, суть в том что код, должен работать так, что когда я нажимаю на кнопку, должен меняться счёт, а на деле он живёт своей жизнью
 from tkinter import *
bomb = 100
best_score = 0
score = 0
press_return = True
def start(event):
    global press_return
    global bomb
    global score
    if not press_return:
        pass
    else:
        bomb = 100
        score = 0
        label.config(text='')
        update_bomb()
        update_score()
        update_display()
        press_return = False
def update_display():
    global bomb
    global score
    if bomb > 50:
        bomb_label.config(image=normal_photo)
    elif 0 < bomb <= 50:
        bomb_label.config(image=no_photo)
    else:
         bomb_label.config(image=bang_photo)
    fuse_label.config(text='Fuse: ' + str(bomb))
    score_label.config(text='Score: ' +
                    str(score))
    fuse_label.after(100, update_display)
def update_bomb():
     global bomb
     bomb -= 5
     if is_alive():
        fuse_label.after(400, update_bomb)
            
def update_score():
    global score
    score += 1
    if is_alive():
         score_label.after(3000, update_score) 
def click():
     global bomb
     if is_alive():
        bomb += 1
def is_alive():
     global bomb
     global press_return
     if bomb <= 0:
         label.config(text='Bang! Bang! Bang!')
         press_return = True
         return False
     else:
         return True
if best_score < score:
    best_score = score
           
root = Tk()
root.title('Bang Bang')
root.geometry('500x550')
best_score_label = Label(root, text='Best Score: '+ str(best_score), font=('Comic Sans MS', 14))
best_score_label.pack()
label = Label(root, text='Press [enter] to start the game', font=('Comic Sans MS', 12))
label.pack()
fuse_label = Label(root, text='Fuse: ' +
str(bomb), font=('Comic Sans MS', 14))
fuse_label.pack()
score_label = Label(root, text='Score: ' +
str(score), font=('Comic Sans MS', 14))
score_label.pack()
no_photo = PhotoImage(file='img/bomb_no.gif')
normal_photo = PhotoImage(file='img/bomb_normal.gif')
bang_photo = PhotoImage(file='img/pow.gif')
bomb_label = Label(root, image=normal_photo)
bomb_label.pack()
click_button = Button(root, text='Click me',
bg='#000000', fg='#ffffff', width=15,
font=('Comic Sans MS', 14),command=click)
click_button.pack()
root.bind('<Return>', start)
root.mainloop()
https://drive.google.com/drive/folders/1d0Cz9IuaLdjoj3JaVIdgKvbWjSqC7I35?usp=sharing (ссылка на весь проект)

Python для новичков » Мне надо вырисовывать blit по координатам из переменной » Сен. 20, 2021 21:18:48

Я делаю игру типо Фнафа, и собираюсь настроить поворот камеры, реализованно это с помощью перемещения панорамы 3д комнаты. То есть картинка просто уезжает в сторону, и поворачивается камера игрока. Поворот камеры я собираюсь выполнять отслеживая мышку, если она на краю экрана слева, панорама съезжает влево. Думаю понятно, как в оригинальном Фнафце. Камеру я хотел бы поворачивать изменяя переменную
 count1
, по которой отрисовывается
 blit
. Настройка камеры лежит в функции
 player()
, и в самом цикле эту функцию я выполняю. Вот полный код:

 def fonar(pustota, pustota1):  
    if event.type == pg.KEYDOWN:
        if event.key == pg.K_SPACE:
            win.blit(pustota1, (-670,0))
    if event.type == pg.KEYUP:
        if event.key == pg.K_SPACE:
            win.blit(pustota, (-670,0))
def player(pustota, xm, count1):  
    win.blit(screen, (0, 0))
    if xm <= 200:
       screen.blit(pustota, (count1+1, 0))
       print(count1)
import pygame as pg
pg.init()
win = pg.display.set_mode((1300, 600))
sc = pg.display.set_mode((1300, 600))
screen = pg.Surface((1300, 600))
#icon = pg.image.load('C:\Distr\python\Five-nights-at-Snusiks\Images\icon.png')
pustota = pg.image.load('C:\Distr\python\Five-nights-at-Snusiks\Images\pustota.png')
pustota1 = pg.image.load('C:\Distr\python\Five-nights-at-Snusiks\Images\pustota1.png') 
pg.display.set_caption("Fnas")
run = True
b1 = True
f1 = pg.font.Font(None, 25)
#pg.display.set_icon(icon)
keys = pg.key.get_pressed()
clock = pg.time.Clock()
pg.display.update()
count1 = -670
while run:
    clock.tick(60)
    for event in pg.event.get():
        if event.type == pg.QUIT:
            run = False
        fonar(pustota, pustota1)
        xm, ym = pg.mouse.get_pos()
        text1 = f1.render(f'Mouse position: {xm} {ym}', 1, (0,0,0))
        player(pustota, xm, count1)
        
        
        if event.type == pg.KEYDOWN:      
            if event.key == pg.K_g:
                b1 = False
            if event.key == pg.K_h:
                b1 = True
        if b1 == False:
            win.blit(text1, (5,5))
            print(count1)
  
    pg.display.update()
pg.quit()
Проблема в том, что я не знаю почему не отрисовывается поворот панорамы. Я выяснил что условие с мышкий работает, и count1 меняется, но blit не выполняется. И ошибки никакой нету, экран просто не изменяется.
P.S. Сори за грязный код

Python для новичков » Не хочет скрываться исходное окно фигуры после встраиваня (matplotlib) » Сен. 14, 2021 11:14:00

Всем привет! Начал изучать питон с целью написания простенького графического окошка для отображения получаемого по сети состояния моей системы. Столкнулся с проблемой, рисую графики при помощи matplotlib, анимирую их и пытаюсь встроить в общее окно программы. Встраиваться то оно встраивается, но исходное окно при этом не закрывается, хотя анимация на нем не идет, а идет только на встроенном окне. Поиск по форумам решения не дал. Опыта на питоне у меня неделя, понять в чем причина компетенции не хватает, помогите пожалуйста разобраться!
Скрины не прикрепились, доступны по ссылкам:
https://disk.yandex.ru/i/Dvsi7UX6fCchEw
https://disk.yandex.ru/i/qt0cT6tSZsLWpA
 #!/usr/bin/env python
import struct
import time
import PySimpleGUI as sg
import matplotlib.pyplot as plt  # $ pip install matplotlib
import matplotlib.animation as animation
from collections import deque
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from socket import *
def draw_figure(canvas, figure):
    figure_canvas_agg = FigureCanvasTkAgg(figure, canvas)
    figure_canvas_agg.get_tk_widget().pack(side='top', fill='both', expand=1)
    figure_canvas_agg.draw()
    return figure_canvas_agg
def delete_fig_agg(fig_agg):
    fig_agg.get_tk_widget().forget()
    plt.close('all')
def new_subplot(y,x,n,fig):
    ax = fig.add_subplot(y, x, n)
    ax.set_autoscale_on(True)
    plt.ylabel('HC#'+ str(n))
    plt.xlabel('time, sec')
    plt.xticks()
    plt.yticks()
    plt.grid()
    ax.grid(linestyle="-", which='major', linewidth=0.5, color='.25', zorder=-10)
    ax.grid(linestyle="-", which='minor', linewidth=0.25, color='.75', zorder=-10)
    return ax
def update_animation(i, cur_time, x, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12):
    #data1 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    data_flag = False
    while 1:
        try:
            data, addr = udp_socket.recvfrom(1024)
            data1 = struct.unpack("fffffffffffff", data)
            data_flag = True
        except Exception:
            break
    timing_ = time.time()-cur_time
    x.append(timing_)
    if data_flag:
        y1.append(data1[3])
        y2.append(data1[4])
        y3.append(data1[5])
        y4.append(data1[6])
        y5.append(data1[7])
        y6.append(data1[8])
        y7.append(data1[9])
        y8.append(data1[10])
        y9.append(data1[11])
        y10.append(data1[12])
        y11.append(data1[3])
        y12.append(data1[4])
    else:
        y1.append(y1[npoints - 1])
        y2.append(y2[npoints - 1])
        y3.append(y3[npoints - 1])
        y4.append(y4[npoints - 1])
        y5.append(y5[npoints - 1])
        y6.append(y6[npoints - 1])
        y7.append(y7[npoints - 1])
        y8.append(y8[npoints - 1])
        y9.append(y9[npoints - 1])
        y10.append(y10[npoints - 1])
        y11.append(y11[npoints - 1])
        y12.append(y12[npoints - 1])
    line1.set_data(x, y1)
    line2.set_data(x, y2)
    line3.set_data(x, y3)
    line4.set_data(x, y4)
    line5.set_data(x, y5)
    line6.set_data(x, y6)
    line7.set_data(x, y7)
    line8.set_data(x, y8)
    line9.set_data(x, y9)
    line10.set_data(x, y10)
    line11.set_data(x, y11)
    line12.set_data(x, y12)
    ax1.set_ylim(-1.1, 1.1)
    ax1.set_xlim(x[npoints-1]-40.5, x[npoints-1]+0.5)
    ax2.set_ylim(-1.1, 1.1)
    ax2.set_xlim(x[npoints-1]-40.5, x[npoints-1]+0.5)
    ax3.set_ylim(-1.1, 1.1)
    ax3.set_xlim(x[npoints-1]-40.5, x[npoints-1]+0.5)
    ax4.set_ylim(-1.1, 1.1)
    ax4.set_xlim(x[npoints-1]-40.5, x[npoints-1]+0.5)
    ax5.set_ylim(-1.1, 1.1)
    ax5.set_xlim(x[npoints-1]-40.5, x[npoints-1]+0.5)
    ax6.set_ylim(-1.1, 1.1)
    ax6.set_xlim(x[npoints-1]-40.5, x[npoints-1]+0.5)
    return line1, line2, line3, line4, line5, line6, line7, line8, line9, line10, line11, line12, ax1, ax2, ax3, ax4, ax5, ax6
host = '192.168.0.44'
port = 5051
addr = (host, port)
udp_socket = socket(AF_INET, SOCK_DGRAM)
udp_socket.setblocking(False)
udp_socket.bind(addr)
npoints = 1000
x = deque([0.0], maxlen=npoints)
y1 = deque([0.0], maxlen=npoints)
y2 = deque([0.0], maxlen=npoints)
y3 = deque([0.0], maxlen=npoints)
y4 = deque([0.0], maxlen=npoints)
y5 = deque([0.0], maxlen=npoints)
y6 = deque([0.0], maxlen=npoints)
y7 = deque([0.0], maxlen=npoints)
y8 = deque([0.0], maxlen=npoints)
y9 = deque([0.0], maxlen=npoints)
y10 = deque([0.0], maxlen=npoints)
y11 = deque([0.0], maxlen=npoints)
y12 = deque([0.0], maxlen=npoints)
for num in range(npoints):
    x.append(0.0)
    y1.append(0)
    y2.append(0)
    y3.append(0)
    y4.append(0)
    y5.append(0)
    y6.append(0)
    y7.append(0)
    y8.append(0)
    y9.append(0)
    y10.append(0)
    y11.append(0)
    y12.append(0)
layout = [
        [sg.Button('ГНС', enable_events=True, key='-B1-', font='Helvetica 16', size=(15, 1)),
         sg.Button('Слив', enable_events=True, key='-B2-', font='Helvetica 16', size=(15, 1)),
         sg.Button('Разот', enable_events=True, key='-B3-', font='Helvetica 16', size=(15, 1)),
         sg.Button('Ргсп', enable_events=True, key='-B4-', font='Helvetica 16', size=(15, 1)),
         sg.Button('Рслив', enable_events=True, key='-B5-', font='Helvetica 16', size=(15, 1)),
         sg.Button('t масла', enable_events=True, key='-B6-', font='Helvetica 16', size=(15, 1)),
         sg.Button('Рнагн', enable_events=True, key='-B7-', font='Helvetica 16', size=(15, 1))],
        [sg.Button('Авар. откл.', enable_events=True, key='-B8-', font='Helvetica 16', size=(15, 1)),
         sg.Button('Откр. ограждение', enable_events=True, key='-B9-', font='Helvetica 16', size=(15, 1)),
         sg.Button('Откр. дверь каб.', enable_events=True, key='-B10-', font='Helvetica 16', size=(15, 1)),
         sg.Button('Ремни', enable_events=True, key='-B11-', font='Helvetica 16', size=(15, 1)),
         sg.Button('Трап отведен', enable_events=True, key='-B12-', font='Helvetica 16', size=(15, 1)),
         sg.Button('Трап подведен', enable_events=True, key='-B13-', font='Helvetica 16', size=(15, 1)),
         sg.Button('СП готова', enable_events=True, key='-B14-', font='Helvetica 16', size=(15, 1))],
        [sg.Canvas(size=(4, 3), key='-CANVAS-', pad=(40, 30))],
        [sg.Button('Exit', font='Helvetica 16', size=(10, 1))],
        ]
window = sg.Window('State Display', layout, size=(1920, 1280), finalize=True)
plt.ioff()
plt.figure(figsize=(18, 8), dpi=100)
fig1 = plt.gcf()
figure_x, figure_y, figure_w, figure_h = fig1.bbox.bounds
canvas_elem = window['-CANVAS-'].TKCanvas
canvas_elem.Size = (int(figure_w), int(figure_h))
ax1 = new_subplot(3, 2, 1, fig1)
ax2 = new_subplot(3, 2, 3, fig1)
ax3 = new_subplot(3, 2, 5, fig1)
ax4 = new_subplot(3, 2, 2, fig1)
ax5 = new_subplot(3, 2, 4, fig1)
ax6 = new_subplot(3, 2, 6, fig1)
fig1.subplots_adjust(hspace=0.3)
fig1.suptitle('Current HC state', fontsize=16)
plt.tight_layout()
[line1] = ax1.plot(x, y1, 'b')
[line2] = ax1.plot(x, y2, 'r')
[line3] = ax2.plot(x, y3, 'b')
[line4] = ax2.plot(x, y4, 'r')
[line5] = ax3.plot(x, y5, 'b')
[line6] = ax3.plot(x, y6, 'r')
[line7] = ax4.plot(x, y7, 'b')
[line8] = ax4.plot(x, y8, 'r')
[line9] = ax5.plot(x, y9, 'b')
[line10] = ax5.plot(x, y10, 'r')
[line11] = ax6.plot(x, y11, 'b')
[line12] = ax6.plot(x, y12, 'r')
timing = time.time()
ani = animation.FuncAnimation(fig1, update_animation,  fargs=(timing, x, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12), interval=10)
fig_agg = draw_figure(canvas_elem, fig1)
plt.show()
udp_socket.close()

Python для новичков » help cod » Сен. 12, 2021 08:48:27

Привет , как в коде добавить еще пару групп. Заранее спасибо ——> PUBLIC = ('mudak') # паблик

from pyrogram import Client # телеграм клиент
import shelve # запись информации в файл
import random # для выбора случайного элеменита из списка
import time # для выбора случайного элеменита из списка

# Данные приложения телеграм (можно создать на my.telegram.org)
api_id =
api_hash = “”
phone_number = ‘' # телефонный номер аккаунта в телеграме
PUBLIC = (’mudak') # паблик
# Варианты текстов сообщений
TEXTS = [
‘😎’
]
COMMENT_EVERY_N = 1 # комментируем каждое N собщение
# если равно 1, комментируем каждое сообщение
# если равно 3, комментируем каждое третье
# если равно 5, комментируем каждое пятое … итд

# список обработанных сообщений
processed_messages = shelve.open('processed_messages.db', # имя файла, куда писать
writeback=True)

# создаем клиент телеграма
app = Client(“python_cyberpunk”, api_id, api_hash,
phone_number=phone_number)

with app:
public = app.get_chat(PUBLIC) # ищем паблик по нику
chat = public.linked_chat # связанный чат обсуждений паблика

while True:
for msg in app.get_history(chat.id, limit=100):
# фильтруем только авторепосты из паблика
if (msg.from_user is None # если сообщение не имеет автора
# и это репост из паблика (проверка по id)
and msg.forward_from_chat.id == public.id):
if msg.forward_from_message_id % COMMENT_EVERY_N != 0:
print(f'Пропускаем message_id={msg.message_id},'
f' так как комментируе каждое {COMMENT_EVERY_N}')
continue
# проверяем, есть ли в списке обработанных сообщений этот айди
# чтобы не комментировать по несколько раз один пост
if str(msg.forward_from_message_id) in processed_messages:
print(f'Пропускаем уже обработанное message_id={msg.message_id}')
continue
# пишем в список обработанных айди этого сообщения
processed_messages = True

print(f'Обработка message_id={msg.message_id}')

text = random.choice(TEXTS) # выбираем случайный текст из списка
app.send_message(chat.id, text, # отправляем текст в чат
reply_to_message_id=msg.message_id) # как ответ на сообщение с постом

# для того, чтоб не оставлять больше одного коммента за 5 минут
break # выходим из перебора сообщений, если оставили коммент

print('Ставим на паузу')
time.sleep(60 * 5)

Python для новичков » как загрузить фото на сайт ? » Сен. 7, 2021 18:51:39

как сделать это имея такие данные


data если делать вручную выглядит так

verified: 0
fileUpload: (binary)
title: tile
description: tile 2

view source

——WebKitFormBoundaryHsR5BRK1nhWRjcPL
Content-Disposition: form-data; name=“verified”

0
——WebKitFormBoundaryHsR5BRK1nhWRjcPL
Content-Disposition: form-data; name=“fileUpload”; filename=“11624090.jpg”
Content-Type: image/jpeg


——WebKitFormBoundaryHsR5BRK1nhWRjcPL
Content-Disposition: form-data; name=“title”

tile
——WebKitFormBoundaryHsR5BRK1nhWRjcPL
Content-Disposition: form-data; name=“description”

tile 2
——WebKitFormBoundaryHsR5BRK1nhWRjcPL–

ещё вот это из headers кажется нужно


'Content-Type': ‘multipart/form-data; boundary=—-WebKitFormBoundaryHsR5BRK1nhWRjcPL’,

 import requests
import fake_useragent
 
user = fake_useragent.UserAgent().random
session = requests.session()
 
file = open('test.jpg', 'rb')
link = 'https://www.site.com/media/uploadphoto'
header = {
    'user-agent': user,
    'X-Requested-With': 'XMLHttpRequest',
    'Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundaryHsR5BRK1nhWRjcPL',
    }
data = {
    'verified': '0',
    'fileUpload': ?????,
    'anonymous': 'on',
    'title': 'text',
    'description': 'text2',
    }
session.post(link,???

Python для экспертов » Какие есть word embeddings для русского языка? » Авг. 14, 2021 16:16:13

Слышал, что Сбер что- то обучает на текстах и выкладывает в открытый доступ. Для этого ему 100% нужны векторые представления слов (т.е. word embeddings).

Есть какой- то сайт, который собирает инфу по русскоязычным ресурсам NLP?

Django » Django GeoDjango » Авг. 14, 2021 15:48:02

На локальной машине установленаUbuntu 20.04, питон 3… не помню, в POsygreSQL создаю суперюзера и терминал выдает вопрос: Is the server running locally and accepting
connections on Unix domain socket “/var/run/postgresql/.s.PGSQL.5432”?
Если кто то с подобным сталкивался, то помогите решить проблему.
Заранее благодарен.

Python для новичков » Изменение настроек виджета RadioButtons в matplotlib » Авг. 10, 2021 18:18:58

Добрый день. В своём коде я строю графики. Графиков много. Для переключения между графиками я использую RadioButtons. Расположение переключателей задаю кодом:

 rax = plt.axes ([0.905, 0.545, 0.09, 0.45], facecolor='yellow')
radio = RadioButtons(rax, ('SBX', 'SBIX', 'DCPKU1', 'DCPKU2', 'SSKPT', 'SSKHA', 'SOC', 'SOO1', 'SOCU','DCK', 'PUPK', 'SOP1.1', 'SOU', 'SOFU1', 'SOFU2', 'SOFU3', 'SOFU4', 'SOFU5','DCR', 'DCZ2','DCZ1', 'SOP1', 'SSKU', 'SOF', 'SBXM', 'CTO'))

Когда кнопок не много (5…6), то они отображаются красиво и эстетично. Но когда их много, “кружки” кнопок сжимаются до размера точек. Подскажите пожалуйста, как я могу настроить размеры панели и размеры кнопок. Чтение Tutorials по matplotliby ничего не дало. Буду очень рад помощи. Спасибо!

Python для новичков » Не получается парсить syscanner » Авг. 9, 2021 03:15:54


URL в браузере открывается корректно, а в файл выводится только обрывок.
Код:
 import requests
from bs4 import BeautifulSoup
import pandas as pd
url = 'https://www.skyscanner.ru/transport/flights/mosc/znz/?adults=1&adultsv2=1&cabinclass=economy&children=0&childrenv2=&destinationentityid=39828399&inboundaltsenabled=false&infants=0&originentityid=27539438&outboundaltsenabled=false&preferdirects=false&preferflexible=false&ref=home&rtn=1&oym=2110&selectedoday=01&iym=2110&selectediday=01' # url страницы
r = requests.get(url)
with open('2.txt', 'w') as output_file:
  output_file.write(r.text)

Похоже, что сайт использует защиту от парсинга на JS. Что делать?

Получаю при парсинге:
 <!doctype html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name="theme-color" content="#000000"><link rel="manifest" href="./manifest.json"><link rel="shortcut icon" href="./favicon.ico"><title>Skyscanner</title><link rel="icon" href="/favicon.ico"><script type="text/javascript">window.__pageLoadedTime=Date.now()</script><link href="./static/css/main.83f6a466.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script src="./static/js/main.768c00c0.js"></script></body></html>

Python для экспертов » Как сейчас обучаются на текстах? » Авг. 8, 2021 13:32:52

Если взять книги, посвященные NLP, то сложится впечатление, что обработка текста- это one hot encoding и TF-IDF методы + самописные перцептроны. Все изложение растянуто на кучу мутных страниц с набором странно- изобретенных велосипедов. Очевидно, что в Python все это должно быть в десятки раз проще.

Просто уверен, что существуют современные библиотеки и паттерны работы с ними, которые позволяют небольшим количеством кода и знаний обучить модель на текстовых данных (конечно, всегда по желанию можно улучшаться и накручивать дополнительный код). Вроде как это PyTorch, но не нашел хорошей книжки по его современному использованию.

Может кто- то рекомендовать литературу с описанием современных инструментов и паттернов их использования при обучении на текстах?

Центр помощи » Нужна помощь  » Авг. 5, 2021 09:20:48

Мне нужно срочно написать прогу по PyAutoGUI. Всё есть кроме одного.
У меня не выходит сделать на прокрутку мыши нажатие на определённую клавишу. Как это можно сделать

Network » Каким способом ответить на входящий пакет в NetfilterQueue » Авг. 5, 2021 04:24:24

Доброго времени суток! Столкнулся с такой проблемой. Используем NetfilterQueue для перехвата пакетов.
Функция для дропа пакета pkt.drop() не предупреждает клиента, что пакет был дропнут и клиент начинает устанавливать повторно соединение. Каким способом отправить клиенту пакет с нашим содержим, чтобы клиент его получил.
Таким способом принимаю пакет, а как ответить не знаю. Подскажите пожалуйста.

 from netfilterqueue import NetfilterQueue
def print_and_accept(pkt):
    print(pkt)
    pkt.accept()
nfqueue = NetfilterQueue()
nfqueue.bind(1, print_and_accept)
try:
    nfqueue.run()
except KeyboardInterrupt:
    print('')
nfqueue.unbind()

Python для новичков » проблема с отрисовкой лабиринта и функцией score » Авг. 3, 2021 17:48:57

Не могу понять ,почему отрисовка лабиринта начинается не с самого начала игрового окна ,а через 100 пикселей по координате х. Еще сам лабиринт(def enviroment) отрисовывает только 2 столбца(поэтому я не пытался его полностью нарисовать), а функция предназначенная для счётчика очков и вовсе не выводиться.
Будет интересно в чем мои ошибки, заранее спасибо.

Python для экспертов » Pyinstaller не находит одно имя в модуле. При этом в скрипте ошибок нет » Авг. 1, 2021 20:47:24

Добрый день,

Создаю exe из скрипта с помощью Pyinstaller. При запуске выдает ошибку:

ImportError: cannot import name ‘expected_conditions’ from ‘selenium.webdriver.support’ (C:\Users\abc\AppData\Local\Temp\_MEI127282\selenium\webdriver\support\__init__.pyc)

Соответственно запинается о строку:
from selenium.webdriver.support import expected_conditions as EC

Другие строки и имена проглатывает легко и, если убрать эту строку из кода, то exe запускается успешно.
В самом скрипте ошибок нет, все работает, включая expected_conditions

Файл expected_conditions.py в папке модуля есть:
C:\Users\abc\AppData\Local\Programs\Python\Python39\Lib\site-packages\selenium\webdriver\support

В чем еще может быть причина?
Заранее спасибо за версии