Забудь про дорогой софт и вечную подписку — IOPaint это бесплатный, open-source инструмент, который превращает любые фото в шедевры с помощью ИИ.
Что умеет:
* Stable Diffusion, Dreamshaper, BrushNet, Paint-by-Example
* Плагины для улучшения лица (GFPGAN, RestoreFormer), удаления фона, повышения качества (RealESRGAN), аниме-сегментации и многого другого!
$ pip3 install iopaint
$ iopaint start --model=lama --device=cpu --port=8080
#python #soft #code
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Инструмент делает запрос к ExchangeRate API и показывает актуальный курс USD к RUB — без заморочек и регистрации.
import requests
from typing import Optional
def get_exchange_rate(base_currency: str, target_currency: str) -> Optional[float]:
"""
Получает курс обмена из base_currency в target_currency.
:param base_currency: Базовая валюта (например, 'USD').
:param target_currency: Целевая валюта (например, 'RUB').
:return: Курс обмена или None в случае ошибки.
"""
url = f"https://open.er-api.com/v6/latest/{base_currency}"
try:
response = requests.get(url, timeout=10)
response.raise_for_status()
data = response.json()
rate = data["rates"].get(target_currency)
if rate is None:
print(f"Курс для {target_currency} не найден.")
return None
return rate
except requests.RequestException as e:
print(f"Ошибка при запросе к API: {e}")
return None
if __name__ == "__main__":
base = "USD"
target = "RUB"
rate = get_exchange_rate(base, target)
if rate:
print(f"Курс {base} к {target}: {rate}")
else:
print("Не удалось получить курс обмена.")
# Курс USD к RUB: 80.926191
#python #code #soft
Please open Telegram to view this post
VIEW IN TELEGRAM
Python PDF Handling Tutorial — интересная подборка скриптов для работы с PDF-файлами в Python:
Вы научитесь:
Пример извлечения текста:
from io import StringIO
from pdfminer.pdfinterp import PDFPageInterpreter, PDFResourceManager
from pdfminer.pdfpage import PDFPage
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
# PDFMiner Analyzers
rsrcmgr = PDFResourceManager()
sio = StringIO()
codec = "utf-8"
laparams = LAParams()
device = TextConverter(rsrcmgr, sio, codec=codec, laparams=laparams)
interpreter = PDFPageInterpreter(rsrcmgr, device)
# path to our input file
pdf_file = "sample.pdf"
# Extract text
pdfFile = open(pdf_file, "rb")
for page in PDFPage.get_pages(pdfFile):
interpreter.process_page(page)
pdfFile.close()
# Return text from StringIO
text = sio.getvalue()
print(text)
# Freeing Up
device.close()
sio.close()
Пример извлечения изображений:
import fitz
import io
from PIL import Image
# path to our input file
pdf_file = "sample.pdf"
# Input PDF file
pdf_file = fitz.open(pdf_file)
for page_no in range(len(pdf_file)):
curr_page = pdf_file[page_no]
images = curr_page.getImageList()
for image_no, image in enumerate(curr_page.getImageList()):
# get the XREF of the image
xref = image[0]
# extract the image bytes
curr_image = pdf_file.extractImage(xref)
img_bytes = curr_image["image"]
# get the image extension
img_extension = curr_image["ext"]
# load it to PIL
image = Image.open(io.BytesIO(img_bytes))
# save it to local disk
image.save(open(f"page{page_no+1}_img{image_no}.{img_extension}", "wb"))
#python #soft #github
Please open Telegram to view this post
VIEW IN TELEGRAM
Python — не только про скрипты и автоматизацию. Он умеет работать сразу с несколькими задачами параллельно — и делать это красиво. Но тут есть нюансы: GIL, multiprocessing, asyncio... разберём всё!
* Процессы (multiprocessing) — как отдельные контейнеры. Изолированы, не делят память. Каждый процесс может использовать своё ядро процессора. Идеально для вычислений.
* Потоки (threading) — живут в одном процессе и делят между собой память. Отлично справляются с задачами, связанными с вводом/выводом (например, скачивание файлов).
* Асинхронность (asyncio) — не параллельность в классическом смысле. Всё работает в одном потоке, но задачи переключаются между собой, не блокируя выполнение. Лучший выбор для работы с сетью.
GIL — глобальная блокировка интерпретатора в Python. Она позволяет одновременно выполняться только одному потоку Python-кода, даже если у тебя 64 ядра. Почему так? Потому что управление памятью в CPython не потокобезопасно.
multiprocessing
> Идеален для тяжёлых вычислений на нескольких ядрах.
*
Process
— запуск нового процесса*
Pool
— пул воркеров*
Queue
, Pipe
— обмен данными*
Manager
— разделение объектов между процессами*
Lock
, Semaphore
— синхронизация*
cpu_count()
— сколько у тебя вообще ядер?threading
> Для I/O задач, где важна отзывчивость: загрузка веб-страниц, параллельный логинг и т.д.
*
Thread
— запуск нового потока*
Timer
, Event
, Barrier
— управление временем и синхронизацией*
enumerate()
, current_thread()
— управление потокамиasyncio
> Современный подход: запуск кучи задач внутри одного потока.
*
async
/ await
— ключевые слова*
asyncio.run()
, asyncio.gather()
— запуск корутин* Поддержка библиотек:
*
aiohttp
— запросы к сайтам*
aiofiles
— работа с файламиRace condition (состояние гонки) — когда два потока одновременно хотят изменить одну и ту же переменную. Кто первый встал — того и тапки. Итог: баги, которых потом не найдёшь.
Потокобезопасность достигается через:
*
Lock
, RLock
* Локальные данные потока (
threading.local()
)Асинхронная программа:
* запускает задачу;
* пока ждёт ответа — делает что-то ещё;
* возвращается к задаче, когда пришёл ответ.
Пример:
import asyncio
import aiohttp
async def fetch(url):
async with aiohttp.ClientSession() as session:
async with session.get(url) as resp:
return await resp.text()
async def main():
html = await fetch('https://example.com')
print(html)
asyncio.run(main())
🔧 Сравнение подходов:
📌 multiprocessing
• Параллельность: ✅
• Делит память: ❌
• Для чего: тяжёлые CPU-задачи
📌 threading
• Параллельность: ❌ (из-за GIL)
• Делит память: ✅
• Для чего: задачи с вводом/выводом (I/O)
📌 asyncio
• Параллельность: ❌
• Делит память: ✅
• Для чего: сетевые и файловые задачи
* Нужна мощь ядра? —
multiprocessing
* Много сетевых вызовов и ожиданий? —
asyncio
* Быстрая и простая многозадачность? —
threading
* GIL — особенность Python, но не приговор
@python2day
#doc #python #cheatsheet
Please open Telegram to view this post
VIEW IN TELEGRAM
Кодим и развиваемся без боли
Залетела мощная нейротулза: берёт любой проект с GitHub и превращает его в интерактивный гайд. Пошагово объясняет, как работает код, причём простыми словами — даже новичок разберётся.
Что умеет:
— Учит новым технологиям прямо на реальных проектах;
— Автоматически превращает код в понятную документацию;
— Разбирает сложные участки и даёт подробные объяснения;
— Отличный способ учиться не по теории, а по боевому коду.
#python #soft #github
Please open Telegram to view this post
VIEW IN TELEGRAM
ItsCaptchaBot — умный бот с капчей, который отфильтрует подозрительных новичков ещё до «привет».
— Добавляешь бота в чат;
— Даёшь права на удаление сообщений и ограничение участников;
— Каждый новый юзер должен пройти капчу в течение 10 минут;
— Не прошёл? Автокик. Всё просто.
#python #soft #code
Please open Telegram to view this post
VIEW IN TELEGRAM
#doc #python #cheatsheet #russian
Please open Telegram to view this post
VIEW IN TELEGRAM
WeasyPrint — библиотека, которая превращать HTML в красивые PDF-документы.
*
*
* 🎟 Билетов и любых документов прямо из кода
Особенности:
Установка:
pip install weasyprint
Отличный выбор, если вы хотите автоматизировать генерацию PDF в своих проектах — будь то веб-приложение, отчет из бота или документооборот
#python #soft #github
Please open Telegram to view this post
VIEW IN TELEGRAM
Мини-шпаргалка, которая поможет писать код быстрее, чище и без гугления каждой мелочи:
.capitalize()
— делает первую букву заглавной: 'hello WORLD' → 'Hello world'..lower()
/ .upper()
— регистр вниз или вверх..center(10, '*')
— выравнивает строку по центру с символами вокруг: 'Python' → 'Python'..count('0')
— считает вхождения символа..find()
и .index()
— находят позиции символов..replace()
— ищет и заменяет..split()
— разрезает строку..isalnum()
, .isnumeric()
, .islower()
, .isupper()
— проверяют, из чего состоит строка.#doc #python #cheatsheet
Please open Telegram to view this post
VIEW IN TELEGRAM
TG_AutoPoster — Готовый бот-парсер для автоматической пересылки записей из групп ВКонтакте в ваш Telegram-канал, чат или личные сообщения.
Основные возможности:
config.yaml
, где вы указываете логин и пароль ВКонтакте или токен, а также данные для Telegram API.1. Установите TG_AutoPoster с помощью pip:
pip3 install -U TG-AutoPoster
2. Создайте файл
config.yaml
на основе config.yaml.example
и заполните необходимые параметры.3. Запустите бота командой:
python3 -m TG_AutoPoster
4. Активируйте бота в чате командой
/start
vk:
login: "your_vk_login"
pass: "your_vk_password"
token: "your_vk_token" # предпочтительно использовать токен
telegram:
api_id: 123456
api_hash: "your_api_hash"
bot_token: "your_bot_token"
proxy:
enabled: false
hostname: ""
port: 0
username: ""
password: ""
#python #soft #github
Please open Telegram to view this post
VIEW IN TELEGRAM