time, csv, datetime, argparseКаждую заданную минуту спрашивает (CLI), чем вы заняты.
Записывает метку времени и описание задачи в CSV.
В конце дня автоматически выводит краткую таблицу: сколько времени ушло на каждую задачу.
Полезно, чтобы увидеть, куда уходит время, и перестать терять минуты зря.
python time_tracker.py --interval 60 --output time_log.csv
import time
import csv
from datetime import datetime
import argparse
from collections import Counter
def track(interval, output):
with open(output, 'a', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
while True:
now = datetime.now()
task = input(f"[{now.strftime('%H:%M')}] Что вы сейчас делаете? ")
writer.writerow([now.isoformat(), task])
if task.lower() in ('выход', 'exit', 'quit'):
break
time.sleep(interval * 60)
def summarize(output):
tasks = []
with open(output, newline='', encoding='utf-8') as f:
for row in csv.reader(f):
if len(row) >= 2:
tasks.append(row[1])
counts = Counter(tasks)
print("⏳ Итоги дня:")
for task, cnt in counts.items():
print(f"{task[:30]:30} — {cnt} отметок")
if __name__ == '__main__':
parser = argparse.ArgumentParser("Hourly Time Tracker")
parser.add_argument("--interval", type=int, default=60, help="Интервал опроса (в минутах)")
parser.add_argument("--output", default="time_log.csv", help="CSV файл для логов")
parser.add_argument("--summary", action="store_true", help="Показать итог за день и выйти")
args = parser.parse_args()
if args.summary:
summarize(args.output)
else:
track(args.interval, args.output)
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥8❤4👍2
intelx 🟠 Поиск в утечках (email, пароли, домены, IP и др.)🟠 Доступ к API IntelligenceX🟠 Получение и скачивание найденных записей
pip install intelx-sdk
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤3
pydub, argparse, os, scipy.signal (только если нужен алгоритм кластеризации пауз)🟠 Загружает аудиофайл (.mp3, .wav и др.)🟠 Находит паузы длиннее заданного порога (например, тишина ≥ 2 секунды)🟠 Делит трек на сегменты между этими паузами🟠 Сохраняет каждый сегмент как отдельный файл с порядковым номером🟠 Подходит для подкастов, интервью, лекций — автоматизирует разделение аудио
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 — убедись, что установлен!
🟠 Разбивка подкастов, лекций или интервью на главы🟠 Подготовка аудио к конвертации, генерации транскрипта по части🟠 Автоматизация медиа-обработки для подкастеров и создателей контента
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤4👍3🔥1
NicheCompass🟢 Поддерживает Python 3, пакет опубликован на PyPI: версия 0.3.0 на 7 августа 2025.🟢 Использует фреймворки для графовых данных (например, PyG) и AnnData — удобно, если работаешь с биоинформатикой или анализом клеточных микросред.
pip install nichecompass
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍1
requests, os, zipfile, возможно GitHub API (через токен) — по описанию.Скрипт, который позволяет скачать архивом все ваши репозитории GitHub (включая приватные, если есть токен), чтобы держать офлайн-копии ваших проектов. Идея: не полагаться полностью на GitHub-хостинг, а иметь локальный архив.
🟢 Получает список репозиториев пользователя через GitHub API, используя токен, если указан.🟢 Под каждый репо создаёт архив (.zip или .tar.gz) или клонирует его.🟢 Сохраняет в указанную папку локально с именем репо и датой.🟢 Может запускаться периодически как бэкап-утилита.
🟢 Собирает все репозитории пользователя (public + приватные)🟢 Скачивает как архив или клонирует, чтобы сохранить копию🟢 Удобна для сохранения резервных копий проектов, особенно если много маленьких хобби-репо🟢 Простая идея, но реально полезная при потере данных или закрытии аккаунта
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2
EZPubSub🟢 Работает с Python 3.8+.🟢 Ноль внешних зависимостей — чистый Python.🟢 Поддержка синхронных сигналов и асинхронных событий (async/await) через единый API.🟢 Строгая типизация: сигналы могут быть параметризованы типами данных, которые публикуются и подписываются.🟢 Потоко-безопасность: подписчики могут регистрироваться/отписываться безопасно в многопоточном окружении.
pip install ezpubsub
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
pytesseract (Tesseract OCR обёртка в Python), Pillow, clipboard (или аналог для захвата из буфера), os, sys.import pytesseract
from PIL import Image
import os, sys
def extract_text_from_image(image_path, lang="eng"):
image = Image.open(image_path)
text = pytesseract.image_to_string(image, lang=lang)
return text
if __name__ == "__main__":
folder = sys.argv[1] # папка с изображениями или файл пути
for fname in os.listdir(folder):
if fname.lower().endswith((".jpg", ".png", ".jpeg", ".tiff")):
path = os.path.join(folder, fname)
txt = extract_text_from_image(path, lang="eng")
print(f"=== {fname} ===")
print(txt)
# можно дополнительно: сохранять txt в файл или копировать
🟢 Принимает файл изображения или папку с изображениями🟢 Использует Tesseract OCR через pytesseract для извлечения текста🟢 Поддерживает указание языка OCR и опционально настройку параметров🟢 Выводит текст в консоль, может сохранять в .txt файл или копировать в буфер обмена🟢 Удобно автоматизировать: пакет документов, извлечение текста из сто-снимков, “менеджмент документов”
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤5🔥3
psutil, subprocess, argparse, time🟠 Проверяет состояние заданной службы (через psutil.win_service_get)🟠 Если служба не работает — делает попытку перезапуска через sc start🟠 Логирует результат: статус до/после🟠 Можно указать таймаут между проверками и автоматический перезапуск — минималистично и эффективно (stackoverflow.com, gist.github.com)
python service_watchdog.py --service "Spooler" --interval 30
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 по умолчанию.
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
requests, tqdm, urllib3.Retry, bs4/BeautifulSoup, threading, queue, pathlib и др. # Упрощённый псевдокод
from wbmdownloader import WaybackDownloader
down = WaybackDownloader(
url="http://example.com",
output_folder="output/example.com",
from_date="200703",
to_date="200704",
threads=8
)
down.run()
🟢 Получает список снимков сайта на web.archive.org за указанный диапазон дат.🟢 Скачивает файлы (HTML, изображения, CSS, JS и другие ресурсы) с параллельными потоками (--threads параметр) для ускорения.🟢 Сохраняет файлы в структуре: output/{домен}/{дата}/{файлы} — удобно навигировать по временам.🟢 Поддерживает фильтрацию (например, только HTML), проверку наличия файлов чтобы не перекачивать заново, логирование и рестарт.
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3🔥2
molecule 🟠 Поддержка Docker, Vagrant, Podman, EC2 и других драйверов🟠 Интеграция с Ansible, Testinfra, Goss🟠 Автоматические проверки, линтинг и CI🟠 Подходит для TDD в инфраструктуре
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
PyPDF2, argparse, os🟠 Ищет все файлы .pdf в указанной директории🟠 Объединяет их в порядке сортировки по имени в единственный PDF🟠 Сохраняет итоговое объединение в указанное имя файла🟠 Полезен для сбора статей, отчетов, документов или презентаций
python pdf_merger.py --input-dir ./pdfs --output merged_all.pdf
import os
import argparse
from PyPDF2 import PdfMerger
def merge_pdfs(input_dir, output_file):
merger = PdfMerger()
pdf_files = sorted([
f for f in os.listdir(input_dir)
if f.lower().endswith('.pdf')
])
for pdf in pdf_files:
path = os.path.join(input_dir, pdf)
merger.append(path)
print(f"✅ Appended: {pdf}")
merger.write(output_file)
merger.close()
print(f"📄 Merged into: {output_file}")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Bulk PDF Merger")
parser.add_argument('--input-dir', required=True, help='Папка с PDF')
parser.add_argument('--output', required=True, help='Имя итогового PDF')
args = parser.parse_args()
merge_pdfs(args.input_dir, args.output)
pip install PyPDF2
🟠 Компиляция серии отчетов или документов в единый PDF-файл🟠 Автоматизация сборки документации🟠 Удобное решение для подготовки больших PDF из множества файлов
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍4
lesserapi🟢 Совместима с Python 3.🟢 Размер пакета небольшой (~2.5 MB для версии 1.1.20) — удобно для лёгких сервисов без тяжёлого фреймворка.🟢 Может служить быстрым решением для создания API-слоя над вашим кодом: внутри проекта, автоматизации, MVP или в скрипте, где нужен “REST интерфейс” без развёртывания полноценного фреймворка.🟢 Хороший выбор, если хотите написать свой скрипт-сервис, малую веб-службу или внутренняя утилита с доступом по HTTP.
pip install lesserapi
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥3👍1
# Импортируется интерфейс конвертера
from py2jn import convert
# Конвертировать скрипт в ноутбук
convert(
input_path="script.py",
output_path="script_converted.ipynb",
split_markers=True
)
🟢 Читает Python-скрипт (.py)🟢 Находит многострочные строки (тройные кавычки) и превращает их в Markdown-ячейки🟢 Остальной код разбивает и вставляет как код-ячейки🟢 Сохраняет конечный файл .ipynb, который сразу можно открыть в Jupyter / Colab🟢 Упрощает превращение рабочих скриптов в учебные ноутбуки или демонстрации
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍3
DobotTCP🟢 Поддержка Python 3.8+.🟢 Обеспечивает простой API: Dobot(ip="…", port=…), методы Connect(), Move(), SetIO().🟢 Малознакомая — шанс внедрить под задачи автоматизации физического устройства без сложной установки.🟢 Особо полезна, если работаешь с робототехникой, автоматикой, DIY-проектами с ардуино/роборуками.
pip install DobotTCP
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤2
scapy, python-nmap (опционально), ipaddress — минимально настроенные зависимости.from reconic import Reconic
r = Reconic(network="192.168.1.0/24")
hosts = r.discover()
r.scan_ports(hosts, ports=[22,80,443])
r.save("netmap.json")
🟢 Обнаруживает живые устройства в указанной подсети🟢 Выполняет порт-сканирование для заданного списка портов (по умолчанию часто используемых)🟢 Составляет структурированный результат (например, JSON или CSV)🟢 Позволяет быстро получить “карту” сети и вести инвентаризацию устройств🟢 Упрощает стартовую фазу автоматизации безопасности или сетевого аудита
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7🔥4😁1
ArviZ🟠 Unified InferenceData: Структурированный способ организации posteriors, предсказаний, наблюдений и логов в одном объекте.🟠 Расширенные визуализации: traceplots, diagnostics (R-hat, ESS), posterior_predictive checks через Matplotlib и Bokeh.🟠 Интеграция с популярными инструментами: поддержка PyMC, Pyro, Stan и xarray.🟠 Поддержка аналитики Bayes-моделей: summarization, posterior checks, model comparison и diagnostics удобны и понятны.🟠 Открытый проект, активно развивается, лицензия Apache 2.0.
pip install arviz
🧑💻 Пример использования:
import arviz as az
import pymc as pm
with pm.Model() as model:
α = pm.Normal("α", 0, 1)
β = pm.Normal("β", 0, 1)
σ = pm.HalfNormal("σ", 1)
μ = α + β * pm.Data("x", [1,2,3,4,5])
y = pm.Normal("y", μ, σ, observed=[1.2,1.9,2.8,4.1,4.9])
idata = pm.sample(return_inferencedata=True)
# Cводка результатов
print(az.summary(idata, var_names=["α", "β", "σ"]))
# Трассировка параметров и автокорреляции
az.plot_trace(idata, var_names=["α", "β"])
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥2
from pentestgpt import PentestGPT
tool = PentestGPT(target="https://example.com")
tool.brainstorm()
tool.run_scan()
tool.discuss_results()
🟢 Позволяет подключить LLM (ChatGPT API) и автоматизировать работу по разведке / анализа уязвимостей🟢 Интерактивный режим: “brainstorm”, “discuss”, “run_scan” и т.д.🟢 Помогает связать результаты инструментов с логикой LLM🟢 Подходит для тех, кто хочет сделать часть пентеста “умнее”, а не только вручную
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2
pywinauto🟢 Поддержка Windows GUI API: работает с Win32, UI Automation и UWP-приложениями.🟢 Эмуляция действий пользователя — клики, ввод текста, навигация, получение текста элементов.🟢 Не требует сложной настройки: работает “из коробки” на Windows.🟢 Полезна для тестирования программ, автоматизации рутины, создания ботов и утилит.🟢 Поддержка Python 3.6+ и открытый исходный код.
pip install pywinauto
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍3
# Примерный вызов (адаптирован)
from daily import file_organizer
file_organizer.run(src="/Users/user/Downloads", mode="by_extension")
🟢 В комплекте: скрипт «FileOrganizer» — перемещает файлы по расширениям. (пример из списка)🟢 Скрипты для отправки писем, переименования, скачивания, обработки изображений, работы с PDF и т.д.🟢 Модули организованы как «выбери нужный скрипт → настрой → запусти».🟢 Хорошее стартовое решение, если хочешь не писать с нуля, а подправить готовый.
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1😁1
hybridmethod🟢 Поддержка Python 3.x — версия 1.0.1, загружена 25 июня 2025 года.🟢 Минимум зависимостей — почти “чистый” Python, облегчает внедрение в проекты.🟢 Декоратор @hybridmethod позволяет методу работать как на экземпляре класса, так и как асинхронная версия при необходимости — удобно для библиотек, которые хотят поддерживать оба режима. (описание в docs пакета)🟢 Подходит для проектов, где часть кода асинхронная (async/await), часть синхронная, и хочется единый API без “два метода”: sync и async.
pip install hybridmethod
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM