Python_Scripts
8.22K subscribers
1K photos
5 videos
673 files
1.54K links
Скрипты 💾 на Python 🐍
- боты 🛠
- парсеры📁
- чекеры🔍
- автоматизация🔧
- многое другое💻

Ваши предложения📝 @cmd_dark @CMD_Vega
Download Telegram
Email Header Analyzer CLI

📌 Скрипт для разбора email-заголовков (.eml или простого текста), с возможностью видеть путь сообщения, промежуточные хосты, шифт времени и метрики по hop delay — отличный помощник при расследовании фишинга или мошенничества.

📌 Особенности:
🟠 Работает через Python, минимум зависимостей (python-dateutil + стандартная библиотека)
🟠 Показывает маршрут письма (hop chain), включая IP, Host, время задержки
🟠 CLI-интерфейс: передаёшь файл — получаешь аналитику в терминале
🟠 Лёгкий, быстрый, без GUI, прямо как для тебя надо


👨‍💻 Пример использования (CLI):
./tracemail.py -r email_sample.eml
# — покажет список hop’ов: от кого до кого, IP, delay в секундах


👨‍💻 Код скрипта (tracemail.py):
#!/usr/bin/env python3
import sys
from email import message_from_file
from datetime import datetime
from dateutil import parser as dateparser

def parse_hops(email_path):
msg = message_from_file(open(email_path, encoding='utf-8'))
received = msg.get_all('Received') or []
hops = []
for header in received:
parts = header.split(';')
from_part = parts[0].strip()
date_part = parts[-1].strip()
try:
ts = dateparser.parse(date_part)
except:
ts = None
hops.append((from_part, ts))
return hops

def print_hops(hops):
for i in range(len(hops)-1):
src, t1 = hops[i]
_, t2 = hops[i+1]
delay = (t1 - t2).total_seconds() if t1 and t2 else '?'
print(f"Hop {i+1}: {src} — Delay: {delay}s")
if hops:
print(f" final hop: {hops[-1][0]}")

if __name__ == '__main__':
if len(sys.argv) < 3 or sys.argv[1] != '-r':
print("Usage: tracemail.py -r <email_file>")
sys.exit(1)
hops = parse_hops(sys.argv[2])
print_hops(hops)


⚙️ Установка зависимостей:
pip install python-dateutil


#скрипты

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍5🔥43
🔥 Полезные библиотеки Python

CyNER

📌 CyNER — это продвинутая библиотека для Named Entity Recognition (NER) в области кибербезопасности. Она способна извлекать ключевые индикаторы компрометации (IoC) и специализированные сущности из текста, комбинируя трансформерные модели и эвристические правила. Идеально подходит для анализа разведданных, угроз и OSINT-источников декабря уверенно справляется с извлечением таких сущностей, как вредоносные файлы, хэши, IP-адреса и названия атак.

📌 Особенности библиотеки:
🟠 Поддерживает выделение как общих (имена, организации), так и специализированных cyber-сущностей, включая IoC.
🟠 Комбинирует трансформерные модели с эвристическими правилами — точнее, чем простые NER-библиотеки.
🟠 Подходит для автоматизированного анализа отчетов, логов и текстов разведки.


⚙️ Установка:
pip install cyner


🔢 Документация

#библиотеки

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
16👍4🔥2
Phone Number Info + Map Generator

📌 Скрипт разборчиво показывает детали по номеру телефона: геолокацию, поставщика, часовой пояс и метаданные. И всё это выводится красиво и понятно, с возможностью сразу строить карту рядом с исполнением — удобно для быстрого OSINT-анализа.

📱 Python 3.8+
💾 Модули: phonenumbers, folium, opencage (при наличии API-ключа), argparse, colorama

📌 Возможности скрипта:
🟠 Парсит номер, определяет страну, тип номера (мобила/стационар), часовой пояс и оператора — через phonenumbers
🟠 При наличии ключа OpenCage — преобразует локацию в координаты и строит интерактивную карту через folium, сохраняет как HTML
🟠 Выделяет важные части цветом через colorama, чтобы сразу видеть страну, оператора и локацию — сок в UX


👨‍💻 Пример использования (CLI):
python phone_info.py --number "+1234567890" --map --key YOUR_OPENCAGE_API_KEY


👨‍💻 Код скрипта (phone_info.py):
import argparse
import phonenumbers
from phonenumbers import geocoder, carrier, timezone
import folium
from opencage.geocoder import OpenCageGeocode
from colorama import init, Fore

init()

def get_info(number):
pn = phonenumbers.parse(number)
info = {
"formatted": phonenumbers.format_number(pn, phonenumbers.PhoneNumberFormat.INTERNATIONAL),
"country": geocoder.description_for_number(pn, "en"),
"carrier": carrier.name_for_number(pn, "en"),
"timezone": timezone.time_zones_for_number(pn)
}
return info

def create_map(location_name, api_key, output="map.html"):
geocoder = OpenCageGeocode(api_key)
results = geocoder.geocode(location_name)
if results:
lat, lng = results[0]['geometry']['lat'], results[0]['geometry']['lng']
m = folium.Map(location=[lat, lng], zoom_start=7)
folium.Marker([lat, lng], popup=location_name).add_to(m)
m.save(output)
return output
return None

if __name__ == "__main__":
p = argparse.ArgumentParser("Phone Info with Map")
p.add_argument("--number", required=True, help="Phone number with country code")
p.add_argument("--map", action="store_true", help="Generate map HTML")
p.add_argument("--key", help="OpenCage API key for map")
args = p.parse_args()

info = get_info(args.number)
print(f"{Fore.GREEN}Number: {info['formatted']}")
print(f"{Fore.CYAN}Country: {info['country']}")
print(f"{Fore.YELLOW}Carrier: {info['carrier']}")
print(f"{Fore.MAGENTA}Timezone: {', '.join(info['timezone'])}")

if args.map and args.key:
path = create_map(info['country'], args.key)
if path:
print(f"{Fore.BLUE} Map saved to: {path}")
else:
print(f"{Fore.RED}Failed to generate map")


⚙️ Установка зависимостей:
pip install phonenumbers folium opencage colorama


Обязательно нужен ключ от OpenCage для геокодинга. Базовая инфа — по коду и структуре — без карты — тоже работает.

#скрипты

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
29👍7🔥3
🔥 Полезные библиотеки Python

reladiff

📌 reladiff — это высокопроизводительный инструментарий (CLI и библиотека) для сравнения таблиц между базами данных. Он позволяет эффективно определять различия в данных, выполняя вычисления внутри СУБД, чтобы минимизировать нагрузку на сеть и ускорить процесс. Подходит для больших данных и автоматизации (DevOps, BI, CI/CD).

📌 Особенности библиотеки:
🟠Cross-Database Diff: сравнение таблиц через хеширование поэтапно, подгружая и анализируя лишь необходимые куски данных — работает быстро даже при миллионах строк.
🟠Intra-Database Diff: если таблицы находятся в одной базе, сравнение выполняется через JOIN, плюс дополнительные статистические метрики.
🟠Многопоточность, гибкие настройки, вывод в JSON и git-подобный формат (+/-) — идеально для интеграции в CI/CD pipelines.
🟠Поддержка разнообразных СУБД: PostgreSQL, Snowflake, MySQL, BigQuery, Oracle, ClickHouse и др.


⚙️ Установка:
pip install reladiff


🔢 Документация

#библиотеки

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍4
Windows Service Watchdog — скрипт следит за критичными Windows-службами и автоматически их перезапускает, если они падают. Простой, понятный, работает без GUI и отлично подходит для обращения с сервисами, которые не должны падать.

📱 Python 3.8+
💾 Модули: psutil, subprocess, argparse, time

📌 Возможности скрипта:
🟠Проверяет состояние заданной службы (через psutil.win_service_get)
🟠Если служба не работает — делает попытку перезапуска через sc start
🟠Логирует результат: статус до/после
🟠Можно указать таймаут между проверками и автоматический перезапуск — минималистично и эффективно (stackoverflow.com, gist.github.com)


👨‍💻 Пример использования (CLI):
python service_watchdog.py --service "Spooler" --interval 30


👨‍💻 Код скрипта (service_watchdog.py):
import psutil, subprocess, time, argparse

def check_service(name):
try:
svc = psutil.win_service_get(name).as_dict()
return svc.get('status') == 'running'
except Exception as e:
print(f"Ошибка при проверке службы {name}: {e}")
return False

def restart_service(name):
print(f"Попытка перезапуска службы: {name}")
subprocess.run(['sc', 'start', name], shell=True)

def main(service, interval):
while True:
running = check_service(service)
print(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] {service} is {'running' if running else 'NOT running'}")
if not running:
restart_service(service)
time.sleep(5)
print(f"Снова проверяю...")
time.sleep(interval)
else:
time.sleep(interval)

if __name__ == "__main__":
parser = argparse.ArgumentParser("Windows Service Watchdog")
parser.add_argument("--service", required=True, help="Name of the Windows service")
parser.add_argument("--interval", type=int, default=60, help="Check interval in seconds")
args = parser.parse_args()
main(args.service, args.interval)


⚙️ Установка зависимостей:
pip install psutil


— psutil нужен для проверки статуса службы. Команда sc используется для запуска, есть в Windows по умолчанию.

#скрипты

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍7🔥5🥰21
🔥 Полезные библиотеки Python

feature-engine — это Python-библиотека для продвинутой предобработки признаков в машинном обучении. Помогает очищать, трансформировать и отбирать признаки для улучшения качества моделей, работая как над табличными, так и категориальными данными.

📌 Особенности:
🟠Обработка пропусков, категориальных и числовых признаков
🟠Кодирование категориальных переменных
🟠Нормализация и масштабирование
🟠Отбор признаков по статистике и важности
🟠Полная интеграция с scikit-learn


⚙️ Установка:
pip install feature-engine


🔢 Документация

#библиотеки

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥52👍2🥰1
File Organizer by Extension — скрипт, который автоматически сортирует файлы в заданной папке по расширениям: .pdf, .jpg, .docx и т.п., перемещая их в соответствующие поддиректории.

📱 Python 3.7+
💾 Модули: os, shutil, argparse

📌 Особенности скрипта:
Обходит все файлы в указанной папке
Сортирует по расширениям: создаёт папки типа pdf, jpg и т.д., если их нет
Перемещает файлы в соответствующую папку, очищая беспорядок в папке загрузок, документообороте и т. д.


👨‍💻 Пример использования (CLI):

python file_organizer.py /path/to/Downloads


👨‍💻 Код скрипта (file_organizer.py):
import os
import shutil
import argparse

def organize_folder(folder):
for filename in os.listdir(folder):
fullpath = os.path.join(folder, filename)
if os.path.isfile(fullpath):
ext = filename.split('.')[-1].lower()
dest_folder = os.path.join(folder, ext)
os.makedirs(dest_folder, exist_ok=True)
shutil.move(fullpath, os.path.join(dest_folder, filename))
print(f"Moved {filename} to ./{ext}/")

if __name__ == "__main__":
parser = argparse.ArgumentParser("File Organizer by Extension")
parser.add_argument("folder", help="Target folder to organize")
args = parser.parse_args()
organize_folder(args.folder)


#скрипты

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
👍85🔥4
🔥 Полезные библиотеки Python

Missingno

📌 Missingno — малоизвестная, но очень полезная библиотека для визуализации пропущенных значений в наборах данных. Быстро дает ясную картину, где пропусков больше всего — идеальна для анализа и очистки данных.

📌 Особенности библиотеки:
🟠Генерирует визуальный отчёт пропусков данных: matrix, bar, heatmap, dendrogram. Удобно видеть, где лучше начинать очистку.
🟠Интегрируется с pandas.DataFrame — работать просто и понятно.


⚙️ Установка:
pip install missingno


🔢 Документация

#библиотеки

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
8🥰3🔥2
Constructor-Telegram-Bots-master.zip
129.3 KB
📱 Скрипт конструктор Telegram ботов

📱 Python 3.11+🐍
💾 Модули: django
🖥 База данных: postgresql

📌 Это веб-приложение на Django с PostgreSQL, позволяющее пользователям создавать Telegram-ботов без кода — через простой интерфейс. Подходит для автосообщений, меню, кнопок и других функций. Работает на Python 3.11+.

#telegram

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍24🔥12👏42
🔥 Полезные библиотеки Python

ubelt

📌 ubelt — это лёгкая и мощная библиотека-утилита, расширяющая стандартную библиотеку Python минимальными, но очень удобными функциями. Всё понятно, тестируемо и без лишних зависимостей — улетная штука для ежедневного кодинга.

📌 Особенности библиотеки:
🟠Расширенный Path с методами expand, ensuredir, augment, delete, plus удобные функции для работы с кэшем и конфигами (appdir).
🟠Функции-хелперы: hash_data/ hash_file для быстрого хеширования, Timer, Cacher/CacheStamp для кэширования и замера скорости выполнения.
🟠CLI-инструменты: прогресс-бар ProgIter, скачивание с download, выполнение shell-команд через cmd.
🟠Дополнительные классы: UDict (расширенные словари), SetDict, urepr (человекочитаемая строка для структуры), color_text — печатает текст с ANSI-цветами.
🟠Ничего лишнего: все функции чисто-Python, почти без зависимостей, с хорошим тестовым покрытием и документацией.


⚙️ Установка:
pip install ubelt


🔢 Документация

#библиотеки

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2
Directory Backup Scheduler — скрипт, который автоматически создаёт резервные копии указанной папки с отметкой даты и времени, может запускаться по расписанию (через cron или schedule). Идеально для защиты данных без лишних телодвижений.

📱 Python 3.8+
💾 Модули: shutil, os, argparse, datetime, (опционально) schedule

📌 Возможности скрипта:
🟠Копирует содержимое папки source в архивную папку destination/YYYY-MM-DD_HHMMSS/
🟠Автоматически создаёт имя папки с таймстампом
🟠Можно запускать вручную или по расписанию (например, ежедневно)
🟠Простой, надёжный, без лишних зависимостей — идеально для резервной заботы


👨‍💻 Пример использования (CLI):
python backup_scheduler.py --src /home/user/docs --dst /home/user/backups --schedule 24


👨‍💻 Код скрипта (backup_scheduler.py):
import os
import shutil
import argparse
from datetime import datetime
import time

def backup(src, dst):
timestamp = datetime.now().strftime("%Y-%m-%d_%H%M%S")
backup_path = os.path.join(dst, timestamp)
os.makedirs(backup_path, exist_ok=True)
for root, dirs, files in os.walk(src):
rel = os.path.relpath(root, src)
dest_dir = os.path.join(backup_path, rel)
os.makedirs(dest_dir, exist_ok=True)
for file in files:
shutil.copy2(os.path.join(root, file), os.path.join(dest_dir, file))
print(f" Backup created at: {backup_path}")

def main():
parser = argparse.ArgumentParser("Directory Backup Scheduler")
parser.add_argument("--src", required=True, help="Source directory to backup")
parser.add_argument("--dst", required=True, help="Destination directory for backups")
parser.add_argument("--schedule", type=int, help="Interval in hours between backups")
args = parser.parse_args()

if args.schedule:
while True:
backup(args.src, args.dst)
time.sleep(args.schedule * 3600)
else:
backup(args.src, args.dst)

if __name__ == "__main__":
main()


⚙️ Установка зависимостей:
Только стандартные модули Python — работает сразу, без pip.

#скрипты

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
8🔥4👍3
🔥 Полезные библиотеки Python

dask

📌 dask — мощная и малоизвестная библиотека для параллельных вычислений в Python. Она расширяет привычные API NumPy, Pandas и scikit-learn, позволяя запускать код на многопоточной системе или в распределённом кластере — без переписывания логики под MapReduce или Spark.

📌 Особенности библиотеки:
🟠 Масштабирование: от одного ядра до всего кластера.
🟠 Совместимый синтаксис: DataFrame, Array, ML API аналогичны знакомым библиотекам.
🟠 Отличается удобством и гибкостью: можно начать с локальных расчётов, а затем перенести тот же код в прод.
🟠 Используется крупными компаниями: Walmart, Nvidia, NASA, Capital One и другими.
🟠 Открытый исходник, активное развитие, последний релиз был в феврале 2024.


⚙️ Установка:
pip install dask[complete]


(пакет с зависимостями для полного функционала — параллельные файловые системы, SQL, ML и др.)

🔢 Документация

#библиотеки

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
16👍1🔥1
Automated Bulk Email Sender — скрипт, который автоматически отправляет письма по списку адресов из CSV-файла. Удобно для рассылок уведомлений, напоминаний или благодарственных писем — не надо копировать-вставлять вручную.

📱 Python 3.8+
💾 Модули: smtplib, email, csv, argparse

📌 Возможности скрипта:
Считывает список адресов и сообщений из CSV (столбцы: email, subject, message)
Отправляет письма через SMTP (например, Gmail)
Простая фильтрация: можно выбрать часть списка и режим dry-run для теста
Экономит время, особенно если нужно отправить много писем вручную


👨‍💻 Пример использования (CLI):
python bulk_emailer.py --csv recipients.csv --smtp_host smtp.gmail.com --port 587 --user you@example.com --password ****


👨‍💻 Код скрипта (bulk_emailer.py):
import smtplib
import csv
import argparse
from email.message import EmailMessage

def send_bulk(csv_path, smtp_host, port, user, password, dry=False):
with open(csv_path, newline='', encoding='utf-8') as f:
reader = csv.DictReader(f)
with smtplib.SMTP(smtp_host, port) as smtp:
smtp.starttls()
smtp.login(user, password)
for row in reader:
msg = EmailMessage()
msg["From"] = user
msg["To"] = row["email"]
msg["Subject"] = row["subject"]
msg.set_content(row["message"])
if dry:
print(f"DRY RUN → To: {row['email']}, Subject: {row['subject']}")
else:
smtp.send_message(msg)
print(f"Sent to {row['email']}")

if __name__ == "__main__":
p = argparse.ArgumentParser("Bulk Email Sender")
p.add_argument("--csv", required=True, help="CSV file with email,subject,message columns")
p.add_argument("--smtp_host", default="smtp.gmail.com")
p.add_argument("--port", type=int, default=587)
p.add_argument("--user", required=True, help="SMTP username")
p.add_argument("--password", required=True, help="SMTP password or app-password")
p.add_argument("--dry", action="store_true", help="Dry run (dont actually send)")
args = p.parse_args()
send_bulk(args.csv, args.smtp_host, args.port, args.user, args.password, args.dry)


📌 Где пригодится:
Рассылка обновлений, приглашений, опросов, уведомлений большую аудиторию
Режим dry-run позволяет проверить письма перед реальной отправкой
Экономия десятков минут на рутинной отправке писем — особенно для OSINT или бизнеса


#скрипты

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥2
🔥 Полезные библиотеки Python

Featuretools

📌 Featuretools — библиотека для автоматического создания признаков (feature engineering), особенно удобная для временных и реляционных данных. С её помощью можно конвертировать сырой DataFrame в обогажённый набор признаков, существенно упрощающий задачу подготовки данных под модели машинного обучения.

📌 Особенности библиотеки:
🟠Automated Feature Engineering — строит фичи типа средних, максимумов, counts и даже временных окон для больших наборов данных без ручного кода.
🟠Особенно эффективна для темпоральных и реляционных сцен: может создавать признаки «на основе истории» (например, средняя стоимость заказов за последние 7 дней).
🟠Значительно ускоряет создание признаков и снижает руки коду — полезно для быстрого прототипирования и экспериментов.


⚙️ Установка:
pip install featuretools


🔢 Документация

#библиотеки

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2🔥1
Random Secure Password Generator — простой и эффективный скрипт, который создаёт криптографически безопасный пароль заданной длины. Использует стандартный secrets модуль для максимальной случайности.

📱 Python 3.6+
💾 Модули: secrets, string, argparse

📌 Возможности скрипта:
🟠Генерирует пароль, используя буквы (все регистры), цифры и спецсимволы
🟠Криптографически стойкий — идеально подходит для безопасных паролей
🟠Простая CLI: указываешь длину — получаешь новый пароль на выходе


👨‍💻 Пример использования (CLI):
python gen_pass.py --length 20


👨‍💻 Код скрипта (gen_pass.py):
import secrets
import string
import argparse

def generate_password(length):
alphabet = string.ascii_letters + string.digits + string.punctuation
# можно исключить потенциально проблемные символы вроде '\' или '"' по желанию
return ''.join(secrets.choice(alphabet) for _ in range(length))

if __name__ == '__main__':
parser = argparse.ArgumentParser("Secure Password Generator")
parser.add_argument("--length", type=int, default=12, help="Password length")
args = parser.parse_args()
pwd = generate_password(args.length)
print(pwd)


#скрипты

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥4👍2
🔥 Полезные библиотеки Python

autofeat

📌 autofeat — библиотека для автоматического создания и отбора признаков. Она автоматически генерирует нелинейные преобразования исходных признаков, а затем с помощью L1-регуляризации отбирает наиболее информативные для линейных моделей. Отличный вариант, если вам нужен баланс между производительностью и объяснимостью результатов.

📌 Особенности библиотеки:
🟠 Автоматическая генерация фичей — создаёт множество потенциально полезных комбинаций и трансформаций признаков, освобождая от ручного труда.
🟠 Отбор значимых признаков — применяет L1-регуляризацию, чтобы оставить только те, что действительно влияют на модель.
🟠 Понятность и прозрачность — результат пригоден для линейных моделей, которые легко интерпретировать и объяснить.


⚙️ Установка:
pip install autofeat


🔢 Документация

#библиотеки

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍3🔥2
Automate Git Operations

📌 Скрипт автоматизирует рутинные git-операции: добавление файлов, коммит с шаблоном сообщения и пуш в ветку — всё одной командой. Сэкономит минуты, которые иначе уйдут на ввод git add ., git commit, git push. Особенно удобно при частых коммитах в работе.

📱 Python 3.7+
💾 Модули: subprocess, argparse, datetime

📌 Возможности скрипта:
🟠Выполняет добавление всех изменений (git add .)
🟠Составляет коммит-сообщение с временной меткой (например: Auto commit 2025-08-19 · Обновления)
🟠Делает git commit и git push, используя default-ветку
🟠Позволяет один раз запускать скрипт и забыть про многострочные команды—автоматизация на максималках


👨‍💻 Пример использования (CLI):
python git_auto.py


👨‍💻 Код скрипта (git_auto.py):
import subprocess
import argparse
from datetime import datetime

def auto_git():
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
msg = f"Auto commit {timestamp}"
try:
subprocess.run(["git", "add", "."], check=True)
subprocess.run(["git", "commit", "-m", msg], check=True)
subprocess.run(["git", "push"], check=True)
print(f" Changes pushed with message: '{msg}'")
except subprocess.CalledProcessError as e:
print(f" Git operation failed: {e}")

if __name__ == "__main__":
parser = argparse.ArgumentParser("Automate Git Operations")
args = parser.parse_args()
auto_git()


#скрипты

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍6🔥3
🔥 Полезные библиотеки Python

msgspec

📌 msgspec — высокопроизводительная и малоизвестная библиотека для сериализации и валидации данных. Поддерживает форматы JSON и MessagePack и превосходит стандартные решения (например, json, pydantic) по скорости и удобству, включая двоичные данные и memoryview. Часто используется там, где важен low‑payload, высокая пропускная способность и строгая типизация.

📌 Особенности библиотеки:
🟠 Очень быстрая сериализация/десериализация JSON или MessagePack
🟠 Встроенный механизм msgspec.Struct — легкая альтернатива Pydantic для валидации
🟠 Отличается компактным двоичным представлением (MessagePack)
🟠 Подходит для межпроцессного обмена, сетевого взаимодействия, микросервисов с минимальными накладными расходами


⚙️ Установка:
pip install msgspec


🔢 Документация

#библиотеки

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1🥰1
🖥 Отслеживание изменения сайта

📱 Python: 3.6+
💾 Модули: requests, hashlib, time

🚀 Что делает скрипт:
🟠Каждую минуту проверяет содержимое указанного сайта.
🟠Если сайт изменился — выводит сообщение "Сайт обновился!".


Код:
import requests
import hashlib
import time

URL = 'https://example.com' # замени на нужный сайт
CHECK_INTERVAL = 60 # интервал проверки в секундах

def get_hash(url):
try:
response = requests.get(url, timeout=10)
response.raise_for_status()
return hashlib.md5(response.text.encode('utf-8')).hexdigest()
except Exception as e:
print("Ошибка при запросе:", e)
return None

def monitor_site(url):
print(f"Следим за сайтом: {url}")
old_hash = get_hash(url)

if old_hash is None:
print("Не удалось получить начальное состояние.")
return

while True:
time.sleep(CHECK_INTERVAL)
new_hash = get_hash(url)

if new_hash is None:
continue
if new_hash != old_hash:
print(f"[{time.ctime()}] Сайт обновился!")
old_hash = new_hash
else:
print(f"[{time.ctime()}] Без изменений.")

monitor_site(URL)


🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
👍135🔥5
🔥 Полезные библиотеки Python

package-smoke-test

📌 package-smoke-test — это утилита и библиотека для быстрой проверки установки Python-дистрибутивов или модулей. Позволяет быстро убедиться, что модуль или дистрибутив уже установлен и доступен в системе без лишней мороки.

📌 Особенности библиотеки:
🟠 Простая командная утилита: python3 -m package_smoke_test --module your_module — выдаёт статус установки, путь и версию.
🟠 Подходит для smokescreen-тестов: быстро проверить наличие необходимых пакетов перед запуском скриптов или сервисов.
🟠 Минимум зависимостей и максимум пользы — удобно допилить в CI пайплайн без лишних телодвижений.


⚙️ Установка:
pip install package-smoke-test


🔢 Документация

#библиотеки

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥1🤩1
📹 Автоанализ видео с охранной камеры — обнаружение движения с уведомлением

📱 Python: 3.7+
💾 Модули: os, time (стандартные), cv2
🖥 БД: sqlite3

🚀 Что делает скрипт:
🟠Берёт видео с камеры (или файла).
🟠Сравнивает текущий кадр с предыдущим.
🟠Если есть движение (>1% пикселей изменилось) → сохраняет кадр в папку motion_frames.
🟠Выводит сообщение о сохранении.
🟠Работает в цикле, пока не остановишь (Ctrl+C).


👨‍💻 Код:
import cv2
import time
import os

VIDEO_SOURCE = 0 # 0 = вебкамера, или URL/IP камеры, или путь к видеофайлу
SAVE_DIR = "motion_frames"
os.makedirs(SAVE_DIR, exist_ok=True)

cap = cv2.VideoCapture(VIDEO_SOURCE)
_, prev_frame = cap.read()
prev_frame = cv2.cvtColor(prev_frame, cv2.COLOR_BGR2GRAY)
prev_frame = cv2.GaussianBlur(prev_frame, (21, 21), 0)

frame_id = 0

print("📹 Запущен анализ. Ctrl+C для остановки.")

try:
while True:
ret, frame = cap.read()
if not ret:
break

gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray, (21, 21), 0)

diff = cv2.absdiff(prev_frame, gray)
thresh = cv2.threshold(diff, 25, 255, cv2.THRESH_BINARY)[1]
motion_percent = (cv2.countNonZero(thresh) / thresh.size) * 100

if motion_percent > 1.0:
filename = f"{SAVE_DIR}/motion_{frame_id}.jpg"
cv2.imwrite(filename, frame)
print(f"📸 Движение! Сохранил кадр: {filename}")

prev_frame = gray
frame_id += 1
time.sleep(0.2)
except KeyboardInterrupt:
print("🛑 Остановлено пользователем.")
finally:
cap.release()


🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
17👍5🔥4