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

Ваши предложения📝 @cmd_dark @CMD_Vega
Download Telegram
API Response Logger — скрипт, который периодически опрашивает API-эндпоинт и сохраняет результаты в файл с метаданными (время, статус, время ответа и тело JSON). Отличный инструмент для отладки, мониторинга API-ответов и аудита изменений.

📱 Python 3.8+
💾 Модули: requests, json, time, argparse

📌 API Response Logger:
🟠Принимает адрес API, интервал опроса и файл логов
🟠Делает HTTP GET-запрос и записывает метрики ответа: timestamp, статус-код, latency, тело JSON
🟠Удобен для отслеживания изменений или ошибок в API
🟠Основан на практиках логгирования API-метрик и best practices в мониторинге REST-служб


🧑‍💻 Пример использования (CLI):
python api_logger.py --url https://api.example.com/data --interval 60 --output api_log.jsonl


👨‍💻 Код скрипта:
import requests, json, time, argparse

def log_response(url, interval, out_file):
with open(out_file, 'a', encoding='utf-8') as f:
while True:
try:
start = time.time()
r = requests.get(url, timeout=15)
latency = round((time.time() - start) * 1000, 2)
entry = {
"timestamp": time.strftime("%Y-%m-%d %H:%M:%S"),
"status_code": r.status_code,
"latency_ms": latency,
"response": r.json() if 'application/json' in r.headers.get('Content-Type', '') else r.text
}
f.write(json.dumps(entry, ensure_ascii=False) + "\n")
print(f"Logged at {entry['timestamp']}: {r.status_code}, {latency}ms")
except Exception as e:
print(f"Error fetching {url}: {e}")
time.sleep(interval)

if __name__ == "__main__":
parser = argparse.ArgumentParser(description="API Response Logger")
parser.add_argument("--url", required=True, help="API endpoint to log")
parser.add_argument("--interval", type=int, default=60, help="Polling interval in seconds")
parser.add_argument("--output", required=True, help="JSONL output file for logs")
args = parser.parse_args()
log_response(args.url, args.interval, args.output)


📌 Установка зависимости:
pip install requests


#скрипты

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

Loguru

📌 Loguru — это мощная и удобная библиотека логирования для Python с простым синтаксисом и расширенными возможностями по сравнению со стандартным logging.

📌 Особенности библиотеки:
🟠Логирование "из коробки" — минимум настроек
🟠Цветной вывод, ротация файлов, асинхронность
🟠Автоматический вывод tracebacks и ошибок
🟠Удобный .add() для настройки логов


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


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

#библиотеки

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍4🔥3
ASCII Art Image Converter — скрипт, который превращает изображения в аккуратный ASCII-арт прямо в терминале или сохраняет результат в .txt файле. Отлично подходит для визуализации в текстовом режиме, генерации минималистичных логотипов или просто для развлечения.

📱 Python  3.7+
💾 Модули: Pillow, numpy, argparse

📌 Что делает ASCII Art Image Converter:
🟠Загружает изображение любого поддерживаемого формата
🟠Конвертирует в градации серого
🟠Делит изображение на сетку и заменяет среднюю яркость каждой ячейки ASCII‑символом (@, #, . и пр.)
🟠Сохраняет ASCII-арт в файл или выводит на экран
🟠Включает CLI‑интерфейс для настройки ширины и дискреты яркости.


🧑‍💻 Пример использования (CLI):
python ascii_art.py --input image.jpg --width 80 --output ascii.txt --detailed


👨‍💻 Код скрипта:
import os
import argparse
from PIL import Image
import numpy as np

GSCALE_SIMPLE = "@%#*+=-:. "
GSCALE_EXTENDED = "$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\\|()1{}[]?-_+~i!lI;:,\"^`'. "

def avg_brightness(tile):
return np.array(tile).mean()

def image_to_ascii(image_path, cols=80, more_levels=False):
image = Image.open(image_path).convert('L')
W, H = image.size
scale = 0.43 # поправка на соотношение символов в терминале
w = W / cols
h = w / scale
rows = int(H / h)

print(f"[ASCII] Рисунок: cols={cols}, rows={rows}")

ascii_img = []
gs = GSCALE_EXTENDED if more_levels else GSCALE_SIMPLE
levels = len(gs)

for row in range(rows):
y1 = int(row * h)
y2 = int((row + 1) * h) if row < rows - 1 else H
line = ""
for col in range(cols):
x1 = int(col * w)
x2 = int((col + 1) * w) if col < cols - 1 else W
tile = image.crop((x1, y1, x2, y2))
brightness = avg_brightness(tile)
idx = int(brightness * (levels - 1) / 255)
line += gs[idx]
ascii_img.append(line)
return ascii_img

def main():
parser = argparse.ArgumentParser(description="ASCII Art Image Converter")
parser.add_argument('--input', required=True, help='Путь к изображению')
parser.add_argument('--width', '-w', type=int, default=80, help='Ширина в символах')
parser.add_argument('--output', '-o', help='Выходной .txt файл (по умолчанию — stdout)')
parser.add_argument('--detailed', action='store_true',
help='Использовать мелкую градацию (GSCALE_EXTENDED)')
args = parser.parse_args()

art = image_to_ascii(args.input, cols=args.width, more_levels=args.detailed)
if args.output:
with open(args.output, 'w', encoding='utf-8') as f:
f.write('\n'.join(art))
print(f" Сохранено в {args.output}")
else:
print()
print('\n'.join(art))

if __name__ == "__main__":
main()


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


#скрипты

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

Ansible Runner

📌 Ansible Runner — это Python-интерфейс и CLI-инструмент для запуска Ansible-плейбуков и задач из других программ или сервисов.

📌 Особенности библиотеки:
🟠Позволяет интегрировать Ansible в Python-приложения
🟠Удобен для CI/CD, web-интерфейсов, API-сервисов
🟠Поддерживает запуск playbook, roles, adhoc-команд
🟠Управляет входными/выходными данными (stdout, artifacts)8


⚙️ Установка:
pip install ansible-runner


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

#библиотеки

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍4
Subdomain Takeover Checker
Скрипт, который сканирует список субдоменов, пытается определить уязвимые поддомены для takeover-а (например, Heroku, AWS S3, GitHub Pages и др.):

📱 Python 3.8+
💾 Модули: dns.resolver (из dnspython), requests, argparse, concurrent.futures

📌 Что делает скрипт:
🟠Считывает субдомены из файла или принимает через CLI
🟠Разрешает CNAME- или A-записи DNS
🟠Если найден CNAME, сканирует по известным сигнатурам (“No such app”, “doesn’t exist”, “There isn’t a GitHub Pages site here” и др.) в HTTP-ответах
🟠Параллельно обрабатывает сотни запросов через ThreadPoolExecutor — что ускоряет проверку
🟠Помечает потенциально уязвимые хосты и сохраняет их в отчёт takeover_report.txt


🔍 Пример использования:
python takeover_check.py --input subs.txt --dns-server 8.8.8.8 --timeout 5


👨‍💻 Код скрипта:
#!/usr/bin/env python3
import argparse, re, requests
from dns import resolver, exception
from concurrent.futures import ThreadPoolExecutor

TAKEOVER_SIGNS = {
"heroku": re.compile(r'no such app', re.I),
"s3": re.compile(r'(NoSuchBucket|The specified bucket does not exist)', re.I),
"github": re.compile(r"There isn't a GitHub Pages site here", re.I),
"azure": re.compile(r'No DNS record found for', re.I),
}

def find_cname(host, nameserver, timeout):
res = resolver.Resolver()
res.nameservers = [nameserver]
res.timeout = timeout
res.lifetime = timeout
try:
answers = res.resolve(host, 'CNAME')
return str(answers[0].target).rstrip('.')
except (resolver.NoAnswer, resolver.NXDOMAIN):
return None
except exception.DNSException:
return None

def check_takeover(host, cname, timeout):
if not cname:
return None
url = f"http://{host}"
try:
r = requests.get(url, timeout=timeout)
html = r.text
for provider, pattern in TAKEOVER_SIGNS.items():
if pattern.search(html):
return (provider, r.status_code, len(html))
except requests.RequestException:
pass
return None

def process(host, nameserver, timeout):
cname = find_cname(host, nameserver, timeout)
suspect = check_takeover(host, cname, timeout)
return host, cname, suspect

def main(args):
heads = f"# Subdomain Takeover Scan Report: {args.input}"
print(heads)
with open(args.input) as f:
hosts = [h.strip() for h in f if h.strip()]
report = []
with ThreadPoolExecutor(max_workers=args.threads) as pool:
for host, cname, res in pool.map(lambda h: process(h, args.nameserver, args.timeout), hosts):
if res:
provider, code, size = res
msg = f"⚠️ {host} → potential {provider} takeover (cname: {cname}, code: {code}, size: {size})"
print(msg)
report.append(msg)
if report:
with open("takeover_report.txt", "w") as f:
f.write(heads + "\n\n" + "\n".join(report))
print(f"\n Найдено потенциальных уязвимостей: {len(report)}. Сохранил в takeover_report.txt")
else:
print("\n Уязвимых поддоменов не найдено.")

if __name__ == "__main__":
cli = argparse.ArgumentParser(description="Subdomain Takeover Checker")
cli.add_argument("--input", "-i", required=True, help="Файл со списком субдоменов, один домен на строку")
cli.add_argument("--dns-server", default="8.8.8.8", help="DNS сервер для запросов (по умолчанию: Google)")
cli.add_argument("--timeout", type=float, default=4.0, help="Таймаут DNS и HTTP")
cli.add_argument("--threads", type=int, default=50, help="Параллельность (подъем числа при больших wordlists)")
args = cli.parse_args()
main(args)


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

#скрипты

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

Compare‑Dicts‑Lib (compare_dicts_lib)

📌 Compare‑Dicts‑Lib — это сверх‑лёгкая и сверх‑быстрая утилита для сравнения словарей и JSON-объектов, которая платформа‑независимо находит добавленные, изменённые и удалённые ключи без лишней работы. Главное — она почти в 43 раза быстрее DeepDiff, при том же потреблении памяти.

📌 Особенности библиотеки:
🟠 Поддержка вложенных структур, списков и match-патчинг по "id"
🟠 Простое сравнение: compare_dicts(new, old) возвращает только изменения
🟠 Флаг detailed=True — показывает тип изменений, старое и новое значение
🟠 Параметры: ignore_keys=[…], strict_type_checking=False
🟠 Можно применять diff через apply_diff(...) прямо к данным
🟠 Не требует сторонних зависимостей, лицензия MIT, Python 3.7+ поддерживается


⚙️ Установка:
pip install compare-dicts-lib


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

#библиотеки

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥4
AI Commit Message Generator — скрипт, который берет ваш текущий git-diff (stage или workspace), формирует хороший коммит‑месседж через OpenAI (GPT‑4o или GPT‑3.5-turbo) и предлагает его для подтверждения. Позволяет за 1–2 секунды писать понятные, хорошо структурированные сообщения — без лишних усилий.

📱 Python 3.9+
💾 Модули: GitPython, openai, sys, os, argparse, logging

📌 Что делает скрипт:
🟠 Берёт git diff --cached (или нестейдженные изменения) с помощью GitPython или repo.git в чистом виде
🟠 Формирует запрос (prompt) к OpenAI: «You are an expert developer. Here is a git diff, write a concise, meaningful commit message.»
🟠 Предлагает выбрать или отредактировать сгенерированный вариант
🟠 При подтверждении выполняет git commit -m "..." либо передаёт через stdin git commit
🟠 Работает как CLI: можно передавать флаги --no-gpt (fallback), --amend, --language=ru и т.п.
🟠 Подходит для любого Git‑проекта, схема LLM‑ный генератор месседжей описана на LevelUp и Python in Plain English


🧑‍💻 Пример использования:
# с абсолютной осторожностью: ничего не коммитите вручную — AI предложит сообщение
python ai_commit.py


🔧 Ключевые фрагменты (упрощённый вариант):
import os, argparse, logging
from git import Repo
import openai
import sys

openai.api_key = os.getenv("OPENAI_API_KEY")

def get_diff(repo_path='.', staged=True):
repo = Repo(repo_path)
if staged:
return repo.git.diff('--cached', unified=3)
else:
return repo.git.diff(unified=3)

def ask_ai(diff_text, lang='en'):
prompt = (
f"You are an expert software developer.\n"
f"Provide a concise single-line commit message in {lang} for the following git diff:\n\n{diff_text}"
)
resp = openai.ChatCompletion.create(
model="gpt-4o",
messages=[{"role": "user", "content": prompt}],
temperature=0.2, max_tokens=60
)
return resp.choices[0].message.content.strip()

def main():
cli = argparse.ArgumentParser(description="AI Commit Message Generator")
cli.add_argument('--no-gpt', action='store_true', help="Use default message prompt 'Update changes'")
cli.add_argument('--stage-all', action='store_true', help="Add all changes")
cli.add_argument('--language', default='en', help="Commit message language (e.g. 'ru', 'en')")
args = cli.parse_args()

repo = Repo('.')
if args.stage_all:
repo.git.add('--all')
diff = get_diff(staged=True)
if not diff.strip():
print("Нет изменений для коммита.")
sys.exit(1)

msg = "Update changes (no GPT mode)" if args.no_gpt else ask_ai(diff, lang=args.language)
print(f"\n> Suggested commit message:\n{msg}\n")
choice = input("[c]ommit / [e]dit / [s]kip? ").lower()
if choice.startswith('c'):
repo.git.commit('-m', msg)
print(" Committed.")
elif choice.startswith('e'):
ed = input("Input your commit message: ").strip()
if ed:
repo.git.commit('-m', ed)
print(" Committed with custom message.")
else:
print("✳️ Empty message. Aborting.")
else:
print("⚠️ Commit skipped.")

if __name__ == "__main__":
logging.basicConfig(level=logging.INFO)
main()


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


(Рекомендуется: настроить OPENAI_API_KEY через .env или переменную окружения).

#скрипты

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

PhotoHolmes

📌 photoholmes — Python-библиотека для расследования подделок в цифровых изображениях (copy‑move, splicing, deepfake и др.). Включает набор алгоритмов, метрик оценки и встроенный CLI/Benchmark‑фреймворк. Позволяет легко сравнивать сторонние методы и интегрировать собственные в единую систему детекции.

📌 Особенности библиотеки:
🟠 Готовые продвинутые методы: Adaptive CFA‑Net, CAT‑Net, FOCAL и др., на основе шумовой аномалии и локальных паттернов
🟠 Модули для популярных датасетов (Columbia, CASIA, DSO‑1) — загрузка, предобработка, использование в оценке
🟠 Benchmark API — сравните метод на датасете по метрикам F1‑score, IoU, MCC и др., с результатами в JSON/CSV
🟠 Командный интерфейс (CLI): оценка конкретной картинки или запуск бенчмарка на папке в 1 команду
🟠 Открытая, модульная архитектура: легко добавить свою логику, метрику или набор изображений для тестирования
🟠 Лицензия Apache‑2.0; Python >= 3.10; активно развивается и имеет GitHub сообщество.


⚙️ Установка:
pip install git+https://github.com/photoholmes/photoholmes.git


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

#библиотеки

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥42🥰1
Auto Wallpaper Changer (Bing Edition) — автоматически меняет обои на рабочем столе каждый день. Подходит для тех, кто любит свежие изображения и хочет автоматизировать скучные действия. Отличный для Windows/Linux/macOS (с адаптацией под sudo/KDE)

📱 Python 3.8+
💾 Модули: requests, ctypes (Windows) или os + gsettings (Linux), argparse, schedule, platform, time

📌 Что делает:
🟠Загружает фоновое изображение дня от Bing (или другого источника)
🟠Сохраняет картинку локально
🟠Устанавливает её как обои на рабочем столе
🟠Можно запускать ежедневно через cron или использовать встроенный scheduler Python


🧑‍💻 Пример использования (CLI):
python auto_wallpaper.py --dir ~/Pictures/BingWall --daily --source bing


👨‍💻 Код скрипта:
import os, requests, platform, argparse, schedule, time
from datetime import datetime

def fetch_bing_wallpaper(save_dir):
data = requests.get('https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1').json()
url = 'https://www.bing.com' + data['images'][0]['url']
fname = os.path.join(save_dir, datetime.now().strftime('bing_%Y%m%d.jpg'))
resp = requests.get(url)
with open(fname, 'wb') as f: f.write(resp.content)
return fname

def set_wallpaper(path):
sys = platform.system()
if sys == 'Windows':
import ctypes
ctypes.windll.user32.SystemParametersInfoW(20, 0, path, 3)
elif sys == 'Linux':
os.system(f"gsettings set org.gnome.desktop.background picture-uri file://{path}")
# MacOS: можно через osascript — добавьте при необходимости

def job(args):
img = fetch_bing_wallpaper(args.dir)
set_wallpaper(img)
print(f" Wallpaper updated: {img}")

def main():
p = argparse.ArgumentParser(description="Auto Wallpaper Changer")
p.add_argument('--dir', default=os.getcwd(), help="Папка для сохранения обоев")
p.add_argument('--daily', action='store_true', help="Менять обои каждый день")
args = p.parse_args()

os.makedirs(args.dir, exist_ok=True)
if args.daily:
schedule.every().day.at("07:00").do(job, args)
print("🚀 Wallpaper scheduler started")
while True:
schedule.run_pending()
time.sleep(60)
else:
job(args)

if __name__ == "__main__":
main()


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


#скрипты

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

jenkinsapi

📌 jenkinsapi — это Python-библиотека для взаимодействия с Jenkins через его API.

📌 Особенности библиотеки:
🟠Получение статуса сборок
🟠Запуск/остановка job'ов
🟠Управление параметрами сборок
🟠Работа с логами, артефактами и queue
🟠Интеграция Jenkins в Python-скрипты


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


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

#библиотеки

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

intelx

📌 intelx — Python SDK для работы с Intelligence X, платформой для поиска утекших данных, доменов, email-адресов, IP и прочего OSINT.

📌 Особенности библиотеки:
🟠Поиск в утечках (email, пароли, домены, IP и др.)
🟠Доступ к API IntelligenceX
🟠Получение и скачивание найденных записей


⚙️ Установка:
pip install intelx-sdk


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

#библиотеки

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥4👍3
Audio Chapters Splitter — скрипт, который автоматически делит длинное аудио (например, подкаст или лекцию) на главы по паузам или тишине. Удобно для разбиения больших треков и подготовки фрагментов для публикации, разбивки на главы или последующей расшифровки.

📱 Python 3.8+
💾 Модули: pydub, argparse, os, scipy.signal (только если нужен алгоритм кластеризации пауз)

📌 Возможности скрипта:
🟠Загружает аудиофайл (.mp3, .wav и др.)
🟠Находит паузы длиннее заданного порога (например, тишина ≥ 2 секунды)
🟠Делит трек на сегменты между этими паузами
🟠Сохраняет каждый сегмент как отдельный файл с порядковым номером
🟠Подходит для подкастов, интервью, лекций — автоматизирует разделение аудио


👨‍💻 Пример использования (CLI):
python split_audio.py --input lecture.mp3 --silence_thresh -40 --min_silence_len 2000 --output segmented/


👨‍💻 Код скрипта:

import os
import argparse
from pydub import AudioSegment
from pydub.silence import detect_silence

def split_on_silence(input_path, silence_thresh=-40, min_silence_len=2000, keep_silence=500, output_dir="segments"):
audio = AudioSegment.from_file(input_path)
os.makedirs(output_dir, exist_ok=True)

silence_ranges = detect_silence(audio, min_silence_len=min_silence_len, silence_thresh=silence_thresh)
silence_ranges = [(start, stop) for start, stop in silence_ranges]

prev_end = 0
count = 1
for start, stop in silence_ranges:
segment = audio[prev_end:start]
segment_name = os.path.join(output_dir, f"segment_{count:03}.mp3")
segment.export(segment_name, format="mp3")
print(f" Saved {segment_name}")
count += 1
prev_end = stop

# last segment
if prev_end < len(audio):
segment = audio[prev_end:]
segment_name = os.path.join(output_dir, f"segment_{count:03}.mp3")
segment.export(segment_name, format="mp3")
print(f" Saved {segment_name}")

def main():
parser = argparse.ArgumentParser(description="Split audio on silence into chapters")
parser.add_argument("--input", required=True, help="Input audio file (mp3/wav/etc.)")
parser.add_argument("--silence_thresh", type=int, default=-40, help="Threshold (dBFS) to detect silence")
parser.add_argument("--min_silence_len", type=int, default=2000, help="Minimum silence length (ms)")
parser.add_argument("--keep_silence", type=int, default=500, help="Silence to leave at edges (ms)")
parser.add_argument("--output", default="segments", help="Directory to save segments")
args = parser.parse_args()
split_on_silence(args.input, args.silence_thresh, args.min_silence_len, args.keep_silence, args.output)

if __name__ == "__main__":
main()



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


Также потребуется ffmpeg или avlib — убедись, что установлен!

📌 Где пригодится:
🟠Разбивка подкастов, лекций или интервью на главы
🟠Подготовка аудио к конвертации, генерации транскрипта по части
🟠Автоматизация медиа-обработки для подкастеров и создателей контента


#скрипты

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

APSW

📌 APSW (Another Python SQLite Wrapper) — это низкоуровневая обёртка над SQLite, предоставляющая полный доступ ко всем возможностям SQLite.

📌 Особенности библиотеки:
🟠Почти 1:1 маппинг на C API SQLite
🟠Позволяет использовать расширенные функции SQLite, включая виртуальные таблицы, бэкапы, трассировки и т.п.
🟠Подходит для продвинутого контроля транзакций и производительности


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


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

#библиотеки

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

invoke

📌 invoke — это библиотека для управления задачами из командной строки, похожая на make, но на Python. Позволяет создавать CLI-команды на Python для автоматизации задач (сборки, деплоя, тестов и др.).

📌 Особенности библиотеки:
🟠Задачи оформляются как обычные Python-функции
🟠Можно группировать задачи в namespaces
🟠Лёгкая интеграция с CI/CD


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


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

#библиотеки

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
34👍3🔥1
Self-Healing System Monitor — скрипт, который мониторит загрузку CPU, памяти и диска, автоматически восстанавливает систему (например, перезапуском сервиса или чисткой диска) при превышении заданных порогов, и отправляет email-уведомления. Улучшает стабильность без лишнего контроля.

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

📌 Возможности скрипта:
🟠Мониторит ресурсы (CPU, RAM, диск)
🟠При превышении порога — запускает "лечащие" действия, например: systemctl restart your_service или rm -rf /tmp/*
🟠Отправляет предупреждение по email — сразу знаешь, что было не так
🟠Позволяет автоматизировать восстановление без вмешательства человека


😱 Пример использования (CLI):
python self_healing_monitor.py \
--cpu-threshold 85 \
--disk-threshold 90 \
--memory-threshold 80 \
--heal-cmd "systemctl restart nginx" \
--email you@example.com


👨‍💻 Код скрипта:
import psutil, smtplib, time, argparse, subprocess
from email.message import EmailMessage

def send_alert(email, subject, content):
msg = EmailMessage()
msg.set_content(content)
msg["Subject"] = subject
msg["From"] = email
msg["To"] = email
with smtplib.SMTP_SSL("smtp.gmail.com", 465) as smtp:
smtp.login(email, "YOUR_APP_PASSWORD")
smtp.send_message(msg)

def monitor(cpu_th, mem_th, disk_th, heal_cmd, email, interval):
while True:
cpu = psutil.cpu_percent(interval=1)
mem = psutil.virtual_memory().percent
disk = psutil.disk_usage('/').percent

if cpu > cpu_th or mem > mem_th or disk > disk_th:
subject = "⚠️ System Alert"
body = f"CPU: {cpu}%, MEM: {mem}%, DISK: {disk}%\nRunning heal command..."
print(body)
if heal_cmd:
subprocess.run(heal_cmd, shell=True)
if email:
send_alert(email, subject, body)
time.sleep(interval)

if __name__ == "__main__":
p = argparse.ArgumentParser("Self-Healing System Monitor")
p.add_argument("--cpu-threshold", type=int, default=80)
p.add_argument("--memory-threshold", type=int, default=80)
p.add_argument("--disk-threshold", type=int, default=80)
p.add_argument("--heal-cmd", default=None, help="Command to run when threshold reached")
p.add_argument("--email", default=None, help="Email to send alerts to")
p.add_argument("--interval", type=int, default=60, help="Check interval in seconds")
args = p.parse_args()
monitor(args.cpu_threshold, args.memory_threshold, args.disk_threshold, args.heal_cmd, args.email, args.interval)


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


Также должен быть настроен SMTP (например, GMail с app password) — для email-уведомлений.

#скрипты

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

yaspin

📌 yaspin — лёгкая и удобная библиотека для отображения анимированных спиннеров в терминале. Подходит для CLI-инструментов, где нужно красиво и понятно уведомлять пользователя о процессе выполнения.PyPI

📌 Особенности библиотеки:
🟠 Не требует внешних зависимостей, работает на всех версиях CPython и PyPy
🟠 Поддерживает свыше 70 видов спиннеров из cli-spinners и цветовые оформления через termcolor
🟠 Интуитивный API: можно использовать как контекстный менеджер, декоратор функции или вручную управлять состояниями (start, stop, succeed, fail)
🟠 Устойчив к перенаправлению вывода — корректно работает при выводе в .log или через grep


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


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

#библиотеки

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
15🔥3👍2
Rotator UA + Proxy — скрипт, случайно чередующий User-Agent и прокси для каждого запроса, чтобы обойти блокировки и ограничители при массовом сборе данных.

📱 Python 3.8+
💾 Модули: requests, random, itertools, (опционально) fake_useragent, proxy list

📌 Возможности скрипта:
🟠С рандомным User-Agent из списка для каждого HTTP-запроса
🟠Использует список прокси, отдавая по одному на каждый запрос
🟠Повышает анонимность: меняется IP + заголовки
🟠Полезен для OSINT, скрейпинга, разведки и обхода банов


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


👨‍💻 Код скрипта — rotator.py:
import requests, random
from itertools import cycle
import argparse

def load_list(path):
with open(path, encoding='utf-8') as f:
return [l.strip() for l in f if l.strip()]

def main(urls_file, ua_file, proxy_file, delay=1):
urls = load_list(urls_file)
uas = cycle(load_list(ua_file))
proxies = cycle(load_list(proxy_file))

for url in urls:
ua = next(uas)
proxy = next(proxies)
headers = {'User-Agent': ua}
proxy_dict = {'http': proxy, 'https': proxy}
try:
resp = requests.get(url, headers=headers, proxies=proxy_dict, timeout=10)
print(f"[{resp.status_code}] {url} — UA: {ua[:30]}... via {proxy}")
except Exception as e:
print(f" {url} — fail: {e}")
time.sleep(delay)

if __name__ == '__main__':
p = argparse.ArgumentParser("UA + Proxy Rotator")
p.add_argument("urls", help="File with URLs list")
p.add_argument("uas", help="File with User-Agent strings")
p.add_argument("proxies", help="File with proxies (host:port)")
p.add_argument("--delay", type=int, default=1, help="Delay between requests (s)")
args = p.parse_args()
main(args.urls, args.uas, args.proxies, args.delay)


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


#скрипты

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

NApy

📌 NApy — это высокопроизводительная библиотека для статистического анализа больших и разнотипных данных с пропущенными значениями. Она использует ускорение на основе Numba и C++ с OpenMP, позволяя выполнять статистические расчеты масштабно и быстро — особенно полезно для интерактивного анализа в условиях ограниченных ресурсов.

📌 Особенности библиотеки:
🟢Оптимизированные статистические тесты с параллелизацией на уровне C++/OpenMP для больших наборов данных
🟢Автоматическая обработка гетерогенных столбцов и пропущенных значений
🟢Работа в интерактивных приложениях и потоках — моментальные результаты без задержек
🟢Превосходит по скорости и потреблению памяти аналоги на чистом Python


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


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

#библиотеки

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍2🔥2
ASCII-Video-Player — скрипт, который превращает кадры видео в ASCII-арт и воспроизводит видео прямо в терминале.
Плюс можно регулировать скорость воспроизведения — удобный способ добавить ретро-эффект или наблюдать видео, даже если нет GUI.

📱 Python 3.8+
💾 Модули: ascii-magic, PIL, opencv-python

📌 Возможности скрипта:
🟠 Извлекает кадры из видео с помощью OpenCV (cv2)
🟠 Преобразует каждый кадр в ASCII-арт через ascii-magic и Pillow
🟠 Выводит видео как последовательность ASCII-картинок в терминал
🟠 Можно менять скорость воспроизведения
🟠 Совместим с Windows (там работает стабильно)


👨‍💻 Пример использования (CLI):
python main.py path_to_video.mp4
# Впиши + или - для управления скоростью, q — выйти


👨‍💻 Код скрипта (main.py):
from ascii_magic import from_image
from PIL import Image
import cv2
import sys
import time

def play_ascii_video(path, fps=10):
cap = cv2.VideoCapture(path)
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
image = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
ascii_frame = from_image(image, columns=80, char="#")
print("\033c", end="") # очистка терминала
print(ascii_frame)
time.sleep(1 / fps)
cap.release()


(это упрощённый пример, библиотека ascii-magic обеспечивает основное преобразование и управляет выводом на экран)

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


#скрипты

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

pyWATTS

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

📌 Особенности библиотеки:
🟠Поддержка непоследовательных (не-sequential) пайплайнов: можно комбинировать модули и выстраивать сложные цепочки обработки данных
🟠Чёткие интерфейсы и возможность повторного использования шагов ("subpipelining"), что упрощает повторимость экспериментов и качественное структурирование задач
🟠Возможность загрузки/сохранения пайплайнов, что облегчает воспроизводимость результатов
🟠Интеграция с популярными ML-фреймворками: scikit-learn, PyTorch, Keras, без лишних конвертаций и костылей


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


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

#библиотеки

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
14👍2🔥2