Справочник Программиста
6.37K subscribers
1.28K photos
375 videos
64 files
1.61K links
По рекламе - @it_start_programmer
Мои курсы - @courses_from_it_start_bot
Сайт - https://it-start.online/
YouTube - https://www.youtube.com/@it_start
Реклама на бирже - https://telega.in/c/programmersGuide_1

Предложить идею: @it_start_suggestion_bot
Download Telegram
🎧 PyAV – это Python-биндинги для библиотеки FFmpeg, предоставляющие удобный и «питоничный» доступ к функциям обработки аудио и видео.

Этот пакет позволяет работать с мультимедийными данными (декодирование, кодирование, ресемплинг, ресайз, фильтрация) без необходимости напрямую взаимодействовать с низкоуровневыми API FFmpeg.

Основные возможности:
🔵Поддержка чтения и записи множества форматов мультимедиа (MP4, AVI, MKV и др.).
🔵Работа с потоками данных (аудио, видео, субтитры).
🔵Простое извлечение и сохранение кадров, перекодировка.
🔵Управление фильтрами и параметрами потоков FFmpeg.
🔵Поддержка NumPy для удобной обработки кадров как массивов.

➡️Установка: pip install av

📱 Репозиторий
⚙️ Документация

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥3🔥3👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🔗 Код для скачивания изображений по ссылке на Python

Для скачивания изображений в коде используется библиотека requests.

➡️Установка: pip install requests

import requests


def download_image(url, filename):
try:
# Отправляем GET-запрос по указанному URL
response = requests.get(url, stream=True)
# Проверяем, что запрос был успешным (статус 200)
response.raise_for_status()

# Открываем файл в бинарном режиме записи ('wb')
with open(filename, 'wb') as file:
# Записываем содержимое ответа в файл
for chunk in response.iter_content(chunk_size=8192):
file.write(chunk)
print(f"Изображение успешно сохранено как: {filename}")
except requests.exceptions.RequestException as e:
print(f"Ошибка при скачивании изображения: {e}")
except IOError as e:
print(f"Ошибка при сохранении файла: {e}")


# Пример использования функции
if __name__ == "__main__":
image_url = "https://placehold.co/600x400/000000/FFFFFF?text=Пример+изображения" # Замените на реальный URL изображения
output_filename = "saved_image.jpg" # Имя файла для сохранения

download_image(image_url, output_filename)


➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤‍🔥2
🔥 testcontainers — это Python-библиотека для удобного запуска временных Docker-контейнеров в автоматических тестах.

Позволяет легко поднимать нужные сервисы (например, PostgreSQL, Redis, Kafka, MySQL и другие) прямо во время тестирования, избавляя от необходимости настраивать окружение вручную.

Основные возможности:
🔵Простое API для запуска и остановки контейнеров.
🔵Поддержка популярных баз данных, брокеров сообщений и других сервисов.
🔵Возможность создания собственных контейнеров.
🔵Легко интегрируется с pytest и другими тестовыми фреймворками.
🔵Удобная отладка и изоляция окружения тестов.

➡️Установка: pip install testcontainers

📱 Репозиторий
⚙️ Документация

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥4🔥2👍1
This media is not supported in your browser
VIEW IN TELEGRAM
💽 Код для контроля свободного места на Python

Для контроля свободного места на диске в коде используется модуль psutil.

➡️Установка модуля: pip install psutil

import shutil

def check_disk_space(path='/'):
try:
total, used, free = shutil.disk_usage(path)
return total, used, free
except FileNotFoundError:
print(f"Ошибка: Путь '{path}' не найден.")
return None
except Exception as e:
print(f"Произошла ошибка: {e}")
return None

def bytes_to_gb(bytes_value):
"""Конвертирует байты в гигабайты."""
return bytes_value / (1024**3)

if __name__ == "__main__":
# Можно указать путь, который необходимо проверить.
# Для Windows используйте букву диска, например 'C:/'
# Для Linux/macOS используйте '/' для корня или определенную точку монтирования, например '/home'
path_to_check = '/' # Измените, если хотите проверить другой путь

disk_info = check_disk_space(path_to_check)

if disk_info:
total_bytes, used_bytes, free_bytes = disk_info

total_gb = bytes_to_gb(total_bytes)
used_gb = bytes_to_gb(used_bytes)
free_gb = bytes_to_gb(free_bytes)

print(f"--- Информация о дисковом пространстве для '{path_to_check}' ---")
print(f"Общий объем: {total_gb:.2f} GB")
print(f"Использовано: {used_gb:.2f} GB")
print(f"Свободно: {free_gb:.2f} GB")

# Здесь можно добавить проверку порогового значения
free_percentage = (free_bytes / total_bytes) * 100
print(f"Свободно: {free_percentage:.2f}%")

if free_percentage < 10:
print("ВНИМАНИЕ: Свободное место на диске ниже 10%! Рассмотрите возможность очистки.")
else:
print("Не удалось получить информацию о дисковом пространстве.")


➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤‍🔥1
📦 py7zr — это Python-библиотека для работы с архивами 7z (7zip) в чистом Python без зависимости от нативных бинарников 7-Zip.

Основные возможности:
🔵Чтение и распаковка .7z-архивов.
🔵Создание новых .7z-архивов с поддержкой сжатия.
🔵Поддержка AES-шифрования и паролей.
🔵Работа с потоками и файловыми объектами.
🔵Совместимость с многотомными архивами.

➡️Установка: pip install py7zr

📱 Репозиторий
⚙️ Документация

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤‍🔥2👍2
🌳anytree — это удобная Python-библиотека для создания, визуализации и работы с древовидными структурами данных с минимальным количеством кода.

Основные возможности:
🔵Создание деревьев с любой вложенностью
🔵Поддержка различных типов обхода: прямой, обратный, по уровням
🔵Автоматическое определение родителя и потомков
🔵Удобная текстовая визуализация дерева (RenderTree)
🔵Простая сериализация и десериализация

➡️Установка: pip install anytree

📱 Репозиторий
⚙️ Документация

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤‍🔥3
🚀 cement — это Python-фреймворк для создания интерфейсных (CLI) и серверных приложений.

Cтабильная, гибкая и расширяемая основа, подходящая как для маленьких скриптов, так и для крупных многокомпонентных систем.

Основные особенности:
🔵Интерфейсы через handler’ы для логирования, парсинга аргументов, конфигурации, вывода, кэширования, контроллеров, расширений и плагинов.
🔵Поддержка вложенных подкоманд и контроллеров для сложных CLI.
🔵Гибкая работа с конфигурацией (поддержка .conf, .yaml и других форматов).
🔵Система хуков и плагинов для расширяемости.
🔵Ноль внешних зависимостей у ядра.
🔵100% покрытие тестами и соответствие PEP‑8.

➡️Установка: pip install cement

📱 Репозиторий
⚙️ Документация

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥3👍1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🔍 microsandbox — это само-хостируемая платформа для безопасного выполнения недоверенного пользовательского или AI-сгенерированного кода в изолированных microVM’ах (микро-виртуальных машинах).

Проект ориентирован на случаи, когда нужно дать ИИ-агентам или пользователям возможность запускать произвольный код (Python, Node.js и т.д.) с сильной изоляцией и управляемыми ресурсами.

Основные возможности:
🔵Безопасное выполнение недоверенного (в т.ч. AI‑сгенерированного) кода в изолированных микро‑ВМ.
🔵SDK для Python, JavaScript/TypeScript и Rust для программного управления песочницами и запуска кода.
🔵Управление через сервер и CLI.
🔵Запуск команд, скриптов и интерактивных сессий внутри песочницы
🔵Более сильная граница безопасности, чем у контейнеров (Docker/OCI), за счёт изоляции уровня ВМ.

➡️Установка: pip install microsandbox

📱 Репозиторий
⚙️ Документация

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥3👍1
🚀 premier — это легковесная Python-библиотека для контроля скорости вызовов функций.

Позволяет ограничивать частоту вызовов функций в асинхронных и синхронных приложениях — особенно полезна для API-клиентов и ботов.

Основные возможности:
🔵Ограничение количества вызовов функции за определённый интервал времени
🔵Поддержка синхронного и асинхронного кода
🔵Простое применение через декораторы
🔵Возможность настройки интервалов и количества попыток

➡️Установка: pip install premier

📱 Репозиторий
⚙️ Документация

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2👍2🔥1
📦 InvenTree  – это управления складом и номенклатурой, построенная на Python /Django и предоставляющая полный REST API как для веб-интерфейса, так и для внешних интеграций.

Основные возможности:
🔵Автоматическая аутентификация через токены или логин/пароль.
🔵Получение и фильтрация данных через удобные методы.
🔵Создание, обновление и удаление объектов (CRUD).
🔵Работа с объектами склада и запасами.
🔵Управление деталями, категориями, локациями и BOM.
🔵Прикрепление файлов и добавление параметров к объектам.
🔵Перезагрузка и синхронизация данных.
🔵Простая интеграция с REST API сервера InvenTree.

➡️Установка: pip install inventree

📱 Репозиторий
⚙️ Документация

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤‍🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
🖼 Код для массового сжатия изображений в папке на Python

Для массового сжатия изображений в коде используется библиотека Pillow, для добавления прогресс-бара - tqdm.

➡️Установка модуля: pip install Pillow tqdm

from pathlib import Path
from PIL import Image
from tqdm import tqdm


def process_images_compact(input_path: str, output_folder: str = 'out', max_width: int = 1920, quality: int = 85):
out_dir = Path(output_folder)
out_dir.mkdir(parents=True, exist_ok=True)

allowed_exts = {'.jpg', '.jpeg', '.png'}

# Собираем список всех файлов в input_path (и подпапках), которые имеют разрешенные расширения
# rglob('*') рекурсивно ищет все файлы и папки
files = [p for p in Path(input_path).rglob('*') if p.suffix.lower() in allowed_exts]

for p in tqdm(files, leave=False):
# Открываем изображение с помощью Pillow
im = Image.open(p)
# Получаем текущие ширину и высоту изображения
w, h = im.size

# Проверяем, превышает ли ширина изображения заданную максимальную ширину
if w > max_width:
# Вычисляем коэффициент масштабирования
ratio = max_width / w
# Изменяем размер изображения, сохраняя пропорции
im = im.resize((max_width, int(h * ratio)))

# Определяем полный путь для сохранения обработанного изображения в выходной папке
output_file_path = out_dir / p.name

# Сохраняем изображение
if p.suffix.lower() == '.png':
im.save(output_file_path, optimize=True)
else:
im.save(output_file_path, quality=quality, optimize=True)


if __name__ == "__main__":
process_images_compact('my_photos', output_folder='resized_photos', max_width=1024, quality=80)


➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤‍🔥2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🗣 parler‑tts — это полностью открытая система синтеза речи с управляемыми характеристиками.

Основные возможности:
🔵Открытый синтез речи с управляемыми характеристиками
🔵Генерация голоса на основе текстового описания
🔵Выбор из 34 предобученных голосов
🔵Поддержка Mini и Large моделей с разным числом параметров
🔵Управление скоростью, тембром, шумом и реверберацией
🔵Возможность дообучения на собственных записях
🔵Ускорение работы через Torch Compile и Flash Attention 2
🔵Поддержка потоковой генерации аудио
🔵Инструменты для автоматической аннотации речи

📱 Репозиторий

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5❤‍🔥2👍1
🔥 scrubadub — это Python‑библиотека, которая предназначена для удаления личной и конфиденциальной информации из произвольного текста.

Основные возможности:
🔵Удаление личной и конфиденциальной информации (PII) из текста.
🔵Поддержка распознавания имён, email‑адресов, телефонов, URL, адресов, дат рождения, номеров документов и карт.
🔵Возможность подключения дополнительных детекторов.
🔵Настройка замены (текстовые метки, хеши, форматирование).
🔵Локализация для поддержки региональных форматов данных.
🔵Добавление пользовательских паттернов для поиска и удаления.
🔵Гибкая конфигурация детекторов (добавление, удаление, приоритеты).

➡️Установка: pip install scrubadub

📱 Репозиторий
⚙️ Документация

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥3👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🗂 Код для отслеживания изменений в папке на Python

Для отслеживания изменений в директории в коде используется библиотека watchdog.

➡️Установка библиотеки: pip install watchdog

import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import os

class MyEventHandler(FileSystemEventHandler):
def on_any_event(self, event):
"""Логирует любое событие файловой системы."""
if event.is_directory:
event_type = "Каталог"
else:
event_type = "Файл"

if event.event_type == 'created':
print(f"СОЗДАН: {event_type} {event.src_path}")
elif event.event_type == 'deleted':
print(f"УДАЛЕН: {event_type} {event.src_path}")
elif event.event_type == 'modified':
print(f"ИЗМЕНЕН: {event_type} {event.src_path}")
elif event.event_type == 'moved':
print(f"ПЕРЕМЕЩЕН: {event_type} из {event.src_path} в {event.dest_path}")

def start_watching(path):
event_handler = MyEventHandler()
observer = Observer()
observer.schedule(event_handler, path, recursive=True)
observer.start()
print(f"Мониторинг папки: {path}. Нажмите Ctrl+C для остановки.")
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
print("Мониторинг остановлен.")


if __name__ == "__main__":
# Замените 'путь_к_папке' на фактический путь к папке, которую вы хотите отслеживать
folder_to_watch = 'путь_к_папке'

# Создаем папку, если она не существует (необязательно, для демонстрации)
if not os.path.exists(folder_to_watch):
os.makedirs(folder_to_watch)
print(f"Создана папка для демонстрации: {folder_to_watch}")

start_watching(folder_to_watch)


➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2❤‍🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 notebookllama – это полностью open‑source альтернатива Google NotebookLM, использующая LlamaCloud для своей инфраструктуры.

Ориентирован на конвертацию документов (PDF) в подкаст‑формат, где AI генерирует скрипт и превращает его в аудио разговор между двумя «ведущими».

Основные возможности:
Распознавание и извлечение содержимого PDF
Генерация сценария подкаста с драматическими вставками
Конвертация текста в речь через открытые TTS-модели, такие как bark и Parler‑tts
Полностью настраиваемый open-source код, включая API, UI-компоненты, поддержку LlamaCloud и возможность замены компонентов под собственные нужды

📱 Репозиторий

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤‍🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
📱 vizro — это Python‑библиотека для быстрого и удобного создания высококачественных приложений визуализации данных в low‑code стиле.

Основные особенности
🔵Компоненты: графики, таблицы, KPI-карточки, формы и другие элементы интерфейса.
🔵Контролы: фильтры и параметры с селекторами (выпадающие списки, ползунки и др.).
🔵Действия: взаимодействия между компонентами, drill-through, экспорт и прочее.
🔵Макеты: сеточные layout или гибкие контейнеры с предустановленными стилями.
🔵Навигация: поддержка вложенных страниц и различных вариантов построения интерфейса

➡️Установка: pip install vizro

📱 Репозиторий
⚙️ Документация

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤‍🔥1
💻 cai — это легковесный, эргономичный и открытый фреймворк для создания специализированных AI‑агентов, предназначенных для помощи в выполнении задач Bug Bounty — от разведки до валидации уязвимостей и составления отчётов.

Основные особенности:
🔵Создание кастомных AI-агентов для задач Bug Bounty
🔵Работа с более чем 300 моделями (GPT-4o, Claude, DeepSeek, Ollama и др.)
🔵Поддержка модульной архитектуры для лёгкого расширения
🔵Встроенная система трассировки и логирования
🔵Интеграция с инструментами анализа уязвимостей
🔵Поддержка локальных и облачных LLM
🔵Автоматизация задач: разведка, эксплуатация, отчётность
🔵Возможность использования через CLI и веб-интерфейс
🔵Поддержка командной работы и многоагентных сценариев
🔵Повышенная производительность и эффективность по сравнению с ручным пентестингом

⚠️ Информация предоставлена исключительно в образовательных целях. Использование в незаконных действиях запрещено.

➡️Установка: pip install cai-framework

📱 Репозиторий
⚙️ Документация

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥3🔥2👍1
📱 pyopencl — это обёртка на Python для OpenCL, обеспечивающая "питонический" доступ к популярному API для параллельных вычислений на GPU, многоядерных CPU и других ускорителях.

Основные возможности:
🔵Полный доступ ко всем функциям OpenCL из Python
🔵Автоматическое управление ресурсами (RAII)
🔵Преобразование ошибок OpenCL в исключения Python
🔵Высокая производительность благодаря C++‑ядру
🔵Поддержка всех популярных платформ и GPU (Nvidia, AMD, Intel и др.)
🔵Возможность компиляции и исполнения OpenCL‑ядер на лету
🔵Поддержка буферов, изображений и прочих объектов памяти OpenCL
🔵Работа с несколькими устройствами и очередями команд
🔵Интеграция с NumPy

➡️Установка: pip install pyopencl

📱 Репозиторий
⚙️ Документация

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2👍2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🔍 Код для поиска строки по файлам

Для работы с файлами в коде используется стандартный модуль os.

Как работает скрипт:
🔵os.walk — рекурсивно обходит все папки и файлы.
🔵Открывает каждый файл в режиме чтения (utf-8, игнорируя ошибки кодировки).
🔵Проверяет каждую строку на наличие искомого текста.
🔵Выводит путь к файлу, номер строки и саму строку.

import os


def search_string_in_files(folder_path, search_string):
# Проходимся по всем файлам и папкам, начиная с указанного пути
for root, _, files in os.walk(folder_path):
# Итерируемся по каждому файлу в текущей папке
for file_name in files:
file_path = os.path.join(root, file_name)

try:
# Открываем файл для чтения в режиме "r" с кодировкой "utf-8"
with open(file_path, "r", encoding="utf-8", errors="ignore") as file:
# Итерируемся по каждой строке в файле, начиная нумерацию с 1
for line_number, line in enumerate(file, start=1):
# Проверяем, содержится ли искомая строка в текущей строке файла
if search_string in line:
print(f"[Найдено] {file_path} (строка {line_number}): {line.strip()}")
except (IOError, OSError):
print(f"[Ошибка] Не удалось открыть файл: {file_path}")


if __name__ == "__main__":
folder = input("Введите путь к папке: ")
query = input("Введите строку для поиска: ")
search_string_in_files(folder, query)


➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥4🔥4
🔍 statsmodels — это Python-библиотека для статистического моделирования, анализа данных и проведения эконометрических исследований.

Предоставляет широкий набор инструментов для построения и оценки статистических моделей, проверки гипотез и анализа временных рядов.

Основные особенности:
🔵Поддержка регрессионных моделей (линейная, нелинейная, GLM)
🔵Анализ временных рядов (ARIMA, SARIMAX, VAR)
🔵Методы оценки параметров (OLS, MLE, GMM)
🔵Широкий набор статистических тестов
🔵Средства для проверки гипотез
🔵Поддержка моделей с фиксированными и случайными эффектами
🔵Встроенные примеры и датасеты
🔵Гибкая интеграция с NumPy, pandas, SciPy
🔵Подробные отчёты и результаты моделей

➡️Установка: pip install statsmodels

📱 Репозиторий
⚙️ Документация

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2👍2