https://download.jetbrains.com/python/pycharm-<EDITION>-<VERSION>.<ext>
import xml.etree.ElementTree as ET
import zipfile
from google.oauth2.service_account import Credentials
from googleapiclient.discovery import build
import pandas as pd
# Настройки:
CREDENTIALS_FILE = 'GoogleSheetsCredentional.json'
FILE_ID = '18c2nnuVKZ-ndfklC6x9Sv9e84PFKc' # из URL таблицы
SCHEMA = './/{http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing}'
# Аутентификация и скачивание:
creds = Credentials.from_service_account_file(CREDENTIALS_FILE, scopes=['https://www.googleapis.com/auth/drive'])
drive_service = build('drive', 'v3', credentials=creds)
# Скачиваем как Excel:
content = drive_service.files().export_media(
mimeType='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', fileId=FILE_ID).execute()
# Сохраняем временный файл:
with open('temp.xlsx', 'wb') as f:
f.write(content)
# Извлекаем данные и картинки:
df = pd.read_excel('temp.xlsx')
with zipfile.ZipFile('temp.xlsx', 'r') as z:
# Парсим drawing.xml - потому что порядок картинок может быть не тот что ожидается...
drawing_data = z.read('xl/drawings/drawing1.xml')
root = ET.fromstring(drawing_data)
file_names = []
# Извлекаем картинки:
for anchor in root.findall(f'{SCHEMA}oneCellAnchor'):
image_name = anchor.find(f'{SCHEMA}cNvPr').get('name')
file_names.append(image_name)
z.extract(f'xl/media/{image_name}', 'images')
df['image'] = pd.Series(file_names)
print(df)
С помощью Fleet удобно работать над кодом вместе с коллегами в реальном времени. IDE не только поддерживает совместное редактирование кода, но и позволяет использовать общий терминал, заниматься отладкой и исследованием кода, выполнять код-ревью и многое другое — все это без дополнительной настройки.
import cv2
import numpy as np
# Загрузка изображений:
dr_image = cv2.imread('original.png')
# Преобразуем в серое:
gray = cv2.cvtColor(dr_image, cv2.COLOR_BGR2GRAY)
# Бинаризация: черные линии → белые (на чёрном фоне).
_, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY_INV)
# Шаблоны:
template1 = cv2.imread('temp2.png', cv2.IMREAD_GRAYSCALE) # ёлочка
template2 = cv2.imread('temp1.png', cv2.IMREAD_GRAYSCALE) # круг
_, template1 = cv2.threshold(template1, 127, 255, cv2.THRESH_BINARY_INV)
_, template2 = cv2.threshold(template2, 127, 255, cv2.THRESH_BINARY_INV)
# Параметры:
threshold1 = 0.7 # для ёлочки
threshold2 = 0.5 # для круга
# Поиск "ёлочки":
result1 = cv2.matchTemplate(binary, template1, cv2.TM_CCOEFF_NORMED)
loc1 = np.where(result1 >= threshold1)
# Поиск "круга":
result2 = cv2.matchTemplate(binary, template2, cv2.TM_CCOEFF_NORMED)
loc2 = np.where(result2 >= threshold2)
# Результат:
result = dr_image.copy()
detected_boxes = []
# Обработка "ёлочки":
for pt in zip(*loc1[::-1]):
x, y = pt
w, h = template1.shape[1], template1.shape[0]
box = (x, y, x + w, y + h)
if not any(np.allclose(box, b, atol=10) for b in detected_boxes):
detected_boxes.append(box)
cv2.rectangle(result, pt, (pt[0] + w, pt[1] + h), (0, 0, 255), 2)
cv2.putText(result, "Tree", (pt[0], pt[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 1)
# Обработка "круга":
for pt in zip(*loc2[::-1]):
x, y = pt
w, h = template2.shape[1], template2.shape[0]
box = (x, y, x + w, y + h)
if not any(np.allclose(box, b, atol=10) for b in detected_boxes):
detected_boxes.append(box)
cv2.rectangle(result, pt, (pt[0] + w, pt[1] + h), (0, 255, 0), 2)
cv2.putText(result, "Circle", (pt[0], pt[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 1)
# Сохраняем результат:
cv2.imwrite('result_with_labels.png', result)
print(f"Найдено объектов: {len(detected_boxes)}")
# Показываем:
cv2.imshow('Detected', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
>>> Найдено объектов: 12
bot = telebot.TeleBot('TOKEN', state_storage=storage)
import telebot
from telebot import types
from telebot.states import State, StatesGroup
from telebot.states.sync.context import StateContext
from telebot.states.sync.middleware import StateMiddleware
from telebot.storage import StateMemoryStorage
from telebot.types import ReplyParameters
storage = StateMemoryStorage()
bot = telebot.TeleBot('TOKEN', state_storage=storage, use_class_middlewares=True)
class MyStates(StatesGroup):
START = State()
US = State()
SUP = State()
@bot.message_handler(commands=["start"])
def start(message: types.Message, state: StateContext):
state.set(MyStates.START)
bot.send_message(
message.chat.id,
f'Привет, {message.from_user.first_name}!\n/sup - оформить подписку\n/us - информация о нас',
reply_parameters=ReplyParameters(message_id=message.message_id),
)
@bot.message_handler(commands=["us"])
def us(message: types.Message, state: StateContext):
state.set(MyStates.US)
bot.send_message(
message.chat.id,
'Информация о нас',
reply_parameters=ReplyParameters(message_id=message.message_id),
)
@bot.message_handler(commands=["sup"])
def sup(message: types.Message, state: StateContext):
state.set(MyStates.SUP)
bot.send_message(
message.chat.id,
'Оформить подписку',
reply_parameters=ReplyParameters(message_id=message.message_id),
)
if __name__ == '__main__':
print('start')
bot.setup_middleware(StateMiddleware(bot))
bot.infinity_polling()
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
def send_email_mail_ru():
smtp_server = "smtp.mail.ru"
smtp_port = 587 # или 465 для SSL.
username = "*****@mail.ru" # Анонимный ящик.
password = "****************" # Пароль от приложения.
# Создаем сообщение:
msg = MIMEMultipart()
msg['From'] = username
msg['To'] = "************@mail.ru"
msg['Subject'] = "Тестовое письмо с Mail.ru"
# Текст письма:
body = """тест"""
msg.attach(MIMEText(body, 'plain', 'utf-8'))
try:
# Подключаемся к серверу:
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()
server.login(username, password)
# Отправляем письмо:
server.sendmail(username, "*********@yahoo.com", msg.as_string())
print("Письмо успешно отправлено через Mail.ru!")
except Exception as e:
print(f"Ошибка при отправке: {e}")
finally:
server.quit()
send_email_mail_ru()
pip install pyOpenSSL cryptography idna certifi urllib3[secure] requests[security]
import urllib3.contrib.pyopenssl # активирует pyOpenSSL для urllib3
urllib3.contrib.pyopenssl.inject_into_urllib3()
import requests
url = "https://www.wildberries.ru/webapi/product/339182812/data?subject=104&kind=1&brand=311487279&lang=ru"
headers = {
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36",
"Accept": "*/*",
"Referer": "https://www.wildberries.ru/catalog/339182812/detail.aspx",
"X-Requested-With": "XMLHttpRequest",
}
response = requests.get(url, headers=headers)
print(response.status_code)
print(response.text)
>>>200
>>>{"resultState":0,"value":{"data":{"brandAndSubjectUrl":"/brands/311...
self.load_config()
в самый конец:def __init__(self, window_title=None):
...
self.load_config()
# Ваш код
if __name__ == "__main__":
app = AutoKeylogger(window_title="Notepad++") # Укажите нужное название окна.
app.root.mainloop()
import tkinter as tk
def generator_sequence(data):
for i in data:
yield i
def next_step():
global paused, sequence, after_id
if not paused:
try:
value = next(sequence)
label.config(text=f"Текущее: {value}")
after_id = root.after(1000, next_step) # Планируем следующий шаг.
except StopIteration:
label.config(text="Завершено!")
button.config(state=tk.DISABLED)
def toggle_pause():
global paused, after_id
paused = not paused
button.config(text="Продолжить" if paused else "Пауза")
if not paused: # Если сняли паузу.
if after_id:
root.after_cancel(after_id) # Отменяем предыдущий запланированный вызов.
next_step()
# Инициализация
root = tk.Tk()
after_id = None
paused = True # Начинаем в состоянии паузы.
data = ["A", "B", "C", "D", "E"]
sequence = generator_sequence(data)
label = tk.Label(root, text="Нажмите 'Старт'")
label.pack(pady=10)
button = tk.Button(root, text="Старт", command=toggle_pause)
button.pack()
root.mainloop()
generator_sequence
просто: sequence = iter(data)
. class Villains(Heroes):
def __init__(self):
super().__init__()
parsed_data = json.loads(json_data)
ip_address = parsed_data["data"]["ipAddress"]
ip_address = parsed_data.get("data", {}).get("ipAddress", "N/A")
import json
json_data = '''
{
"data": {
"ipAddress": "192.168.1.1",
"abuseConfidenceScore": 85
}
}
'''
parsed_data = json.loads(json_data)
try:
ip_address = parsed_data.get("data", {}).get("ipAddress", "N/A")
score = parsed_data.get("data", {}).get("abuseConfidenceScore", 0)
print(f"IP: {ip_address}, Score: {score}")
except Exception as e:
print(f"Ошибка: {e}")