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

Ваши предложения📝 @cmd_dark @CMD_Vega
Download Telegram
auto_vpn_connect

📱 Python 3.10+
💾 Модули: pyotp, argparse, плюс взаимодействие с внешним VPN-CLI (например, Pritunl, Global Protect) через subprocess. (GitHub репозиторий)

📌 auto_vpn_connect — скрипт-утилита, которая автоматизирует подключение к VPN-клиентам с минимальным участием пользователя. Поддерживаются Pritunl и Palo Alto Global Protect. Можно автоматически ввести PIN, TOTP-код, токен и подключиться к нужному VPN-профилю. Очень полезно, если VPN надо поднимать вручную или через GUI.

👨‍💻 Код и установка:
git clone https://github.com/Dhi13man/auto_vpn_connect.git
cd auto_vpn_connect
pip install pyotp


Файл vpn_data.json должен содержать конфигурацию VPN-профилей:
{
"config": {
"PRITUNL": {
"vpn_type": "PRITUNL",
"cli_path": "/path/to/pritunl-client"
},
"GLOBAL_PROTECT": {
"vpn_type": "GLOBAL_PROTECT",
"service_load_command": "...",
"service_unload_command": "..."
}
},
"vpn_list": [
{
"vpn_id": "<vpn_id_1>",
"vpn_type": "PRITUNL",
"pin": "<vpn_pin>",
"totp_url": "<totp_url_if_any>",
"token": "<vpn_token_if_any>"
},
{
"vpn_id": "GlobalProtect",
"vpn_type": "GLOBAL_PROTECT"
}
]
}


Запуск:
python auto_vpn_connect/__main__.py


Опции позволяют:
🟠Выбирать VPN-профиль по vpn_id
🟠Автоматически обрабатывать PIN, TOTP и токены
🟠Перезапускать VPN при падении соединения


#скрипты

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

PySnooper

📌 PySnooper — это «декоратор-лупа» для отладки кода. Он автоматически логирует выполнение функций: входные аргументы, строки кода, изменения переменных и возвращаемое значение. Работает без сложных настроек и показывает понятный трейс прямо в консоли или в файл.

📌 Особенности библиотеки:
🟠 Используется как простой декоратор @pysnooper.snoop() — минимальный порог входа.
🟠 Поддержка логирования в файл (@pysnooper.snoop("log.txt")).
🟠 Подсветка изменений переменных: видно старые и новые значения.
🟠 Удобна для обучения, отладки алгоритмов и сложных функций.


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


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

#библиотеки

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍3🔥3
PortScannerLite — скрипт на Python, который проверяет открытые порты на заданном хосте.

📱 Python 3.9+
💾 Модули: socket, argparse

📌 PortScannerLite — упрощённый аналог nmap, написанный на чистом Python. Подходит для админов и тестировщиков безопасности: быстро проверить, какие порты доступны у сервера или локальной машины.

👨‍💻 Код:
import socket
import argparse

def scan_ports(host, ports):
print(f"Сканирование {host}...")
for port in ports:
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(0.5)
result = sock.connect_ex((host, port))
if result == 0:
print(f"[+] Порт {port} открыт")
sock.close()
except Exception as e:
print(f"Ошибка при проверке порта {port}: {e}")

if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Простой сканер портов")
parser.add_argument("host", help="IP или домен для проверки")
parser.add_argument("--ports", nargs="+", type=int, default=[21,22,80,443,3306],
help="Список портов через пробел (по умолчанию: 21 22 80 443 3306)")
args = parser.parse_args()

scan_ports(args.host, args.ports)


📌 Что делает:
🟠 Принимает домен или IP и список портов
🟠 Проверяет соединение через socket.connect_ex
🟠 Выводит список открытых портов
🟠 Легковесная альтернатива nmap для быстрых проверок


#скрипты

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

PyHHMM

📌 PyHHMM — библиотека для реализации heterogeneous hidden Markov models (разнородных скрытых марковских моделей). Подходит, когда в скрытых состояниях модели наблюдаются разные типы данных (не просто вещественные или категорийные), включая смешанные наблюдения и отсутствующие данные.

📌 Особенности библиотеки:
🟠 Поддержка смешанных наблюдений (continuous, multinoulli и др.), что дает гибкость в реальных задачах с разнородными данными.
🟠 Возможность semi-supervised обучения и выбора порядка модели.
🟠 Удобная объектно-ориентированная архитектура: легко задавать разные типы наблюдений, алгоритмы инициализации и критерии выбора порядка.
🟠 Зависимости: numpy, scipy, scikit-learn, seaborn.


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


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

#библиотеки

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍3🔥2
processwatchdog.py
7.1 KB
ProcessWatchdog — скрипт на Python для мониторинга и автоматического восстановления процессов/сервисов при утечках памяти, зависаниях или потреблении CPU выше порога.

📱 Python 3.8+
💾 Модули: psutil, subprocess, time, argparse, logging, опционально requests (для Webhook/Telegram) или smtplib (для email). Установить: pip install psutil requests (requests — если нужно уведомление через HTTP).

📌 ProcessWatchdog — лёгкий демон/утилита, которая периодически проверяет выбранный процесс (по имени или PID), и если его потребление памяти или CPU превышает заданные пороги, пытается аккуратно перезапустить процесс (через systemd / сервисный скрипт / команду рестарта). Полезен на серверах, где один долгоживущий процесс может постепенно съесть всё ОЗУ или зависнуть, а автоматический откат предотвращает простои.

📌 Что делает:
🟠 Регулярно сканирует цель (по имени или PID).
🟠 Измеряет потребление памяти (RSS) и загрузку CPU.
🟠 Если пороги превышены — пытается рестартовать сервис самым безопасным способом (systemctl → start_cmd → kill+start).
🟠 Отправляет уведомление на указанный Webhook (например, Telegram/Slack) при рестарте.
🟠 Поддерживает cooldown, чтобы избежать петли рестартов.


#скрипты

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73🔥3
🔥 AutoPilot (stream.py) — скрипт-утилита, которая позволяет запускать «хабы» автоматизации через Streamlit-интерфейс. Это удобный лайф-хак — собрать несколько мелких автоматизационных скриптов в одну визуальную панель и запускать их из браузера.

📱 Python 3.8+
💾 Модули: streamlit, pyperclip, requests, yt_dlp, Pillow, opencv-python и др. — зависимости указаны в requirements.txt репо.

📌 AutoPilot / stream.py — простой подход к объединению и запуску автоматических задач: downloader'ы, QR-генераторы, клипборд-менеджеры, resource-мониторы — всё можно запускать через Streamlit-кнопки. Хорошо подходит для тех, кому лень открывать терминал и хотят интерфейс для своих скриптов.

👨‍💻 Пример использования (адаптация):
import streamlit as st
import pyperclip
import requests
from yt_dlp import YoutubeDL

st.title("AutoPilot Hub")

if st.button("YouTube Download"):
url = st.text_input("YouTube URL")
if url:
with YoutubeDL({}) as ydl:
info = ydl.download([url])
st.write("Download complete")

if st.button("Copy Snippet"):
snippet = st.text_area("Snippet text")
if snippet:
pyperclip.copy(snippet)
st.write("Copied to clipboard")

if st.button("Fetch RSS News"):
feed_url = st.text_input("RSS feed URL")
if feed_url:
resp = requests.get(feed_url)
st.write(resp.text[:500]) # первые 500 символов


Репозиторий: AutoPilot / stream.py

#скрипты

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

geojson_pydantic

📌 geojson_pydantic — библиотека-валидатор, которая помогает работать с GeoJSON-данными и гарантировать, что JSON соответствует спецификации GeoJSON. Она основана на Pydantic и автоматически создаёт модели для точек, линий, полигонов, Feature, FeatureCollection и т.п., проверяя типы и структуру на лету. Особенно полезна, если ты работаешь с геоданными в API, даёшь пользователю JSON или сохраняешь Geo-объекты.

📌 Особенности библиотеки:
🟠 Автоматическая генерация Pydantic-моделей GeoJSON-сущностей: Point, MultiPolygon, Feature, FeatureCollection и др.
🟠 Встроенные проверки: координаты как list[float], допустимый диапазон, обязательные поля, вложенность объектов.
🟠 Полная типизация и автокомплит для IDE — удобно при разработке API или при десериализации внешних источников.
🟠 Можно легко создавать “schema” для FastAPI / Pydantic, сразу принимать геоданные и доверять, что они валидны.
🟠 Независимая и узкоспециализированная — минималистичная, не дублирует функции GIS-библиотек, а просто “сделай модель и проверяй GeoJSON”.


⚙️ Установка:
pip install geojson-pydantic


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

#библиотеки

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

versions

📌 versions — библиотека для разбора, сравнения и работы с версиями в стиле SemVer и PEP-440. Предназначена для удобной работы с версиями пакетов, release-кандидатами, dev-build’ами и метаданными сборок. Отличается строгим API и способностью «понимать» все тонкости реальных версионных строк.

📌 Особенности библиотеки:
🟠 Поддерживает Python 3.8+.
🟠 Функция parse_version() позволяет разобрать строку версии на структуру: релиз, dev-часть, локальные билды, метаданные и даже pre-релизы.
🟠 Версии поддерживают упорядочение (<, >, == и т.д.) в соответствии с SemVer/PEP-440 — можно сравнивать, сортировать и фильтровать версии.
🟠 Удобно использовать когда нужно анализировать историю версий, фильтровать “beta” или “rc”-версии, собирать CI/CD-pipeline по версии пакета, либо автоматически находить последний стабильный релиз.


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


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

#библиотеки

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥2
python-gsmmodem-2025

📱 Python 3.3+
💾 Модули: pyserial — всё взаимодействие с модемом идёт через последовательный порт. Зависящая утилита: GSMTerm (входит в пакет). 

📌 python-gsmmodem-2025 — форк классического python-gsmmodem, обновлённый под современные Python и с доработками под GSM-модемы типа SIM800. Предоставляет удобный API для отправки SMS, обработки входящих сообщений, USSD-запросов и звонков через GSM-модем. Это инструмент автo-автоматики для IoT-устройств, SMS-уведомлений или удалённого управления через GSM.

🔧 Код-пример использования:
from gsmmodem.modem import GsmModem

PORT = '/dev/ttyUSB0'
BAUDRATE = 115200
PIN = None # если есть PIN-код SIMкарты

def handle_sms(sms):
print(f"New SMS from {sms.number}: {sms.text}")

def main():
modem = GsmModem(PORT, BAUDRATE, incomingCallCallback=None, smsReceivedCallback=handle_sms)
modem.connect(PIN)
modem.sendSms('<номер телефона>', 'Привет от python-gsmmodem-2025!')
print("SMS отправлено, ждём входящие…")
modem.run()

if __name__ == "__main__":
main()


⚙️ Установка:
pip install python-gsmmodem-2025


#скрипты

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥2👍1
sync-gists — скрипт из репозитория “osteele/scripts”, написанный на Python и Bash, который автоматически синхронизирует локальные файлы-скрипты/заметки с GitHub Gists.

📱 Python 3.8+
💾 Модули: os, subprocess, возможно requests или gh для Gist API, плюс Bash для хука. (детали — на странице проекта)

📌 sync-gists — помогает держать репозитории заметок/скриптов в актуальном виде: когда ты правишь локальные файлы, скрипт автоматически или по команде пушит изменения в соответствующие GitHub Gists. Удобно, если используешь Gist как резервное хранилище быстро-доступного кода или заметок.

🔧 Код и использование (примерная логика):
#!/usr/bin/env bash
# bash wrapper + python

LOCAL_DIR="$HOME/gists"
GIST_API_TOKEN="your_token_here"

for file in "$LOCAL_DIR"/*; do
# получить соответствующий gist ID из маппинга
gist_id=$(basename "$file" .py)
# проверка, есть ли изменения
git diff --quiet "$file" || \
curl -X POST -H "Authorization: token $GIST_API_TOKEN" \
-d "{\"files\": {\"$(basename "$file")\":{\"content\":\"$(sed 's/\"/\\\"/g' "$file")\"}}}" \
"https://api.github.com/gists/$gist_id"
done

*(Это адаптированный фрагмент, не точный код из репо, но отражает основную идею.)

#скрипты

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

PyPOTS

📌 PyPOTS — библиотека-toolbox для анализа и работы с частично наблюдаемыми временными рядами (partially-observed time series). То есть данные, где не все точки измерений есть, есть пропуски, нерегулярная выборка. Библиотека поддерживает методы заполнения пропусков (imputation), классификации, кластеризации и прогнозирования таких временных рядов.

📌 Особенности библиотеки:
🟠 Обработка нерегулярных временных рядов с отсутствующими наблюдениями (irregular, missing observations).
🟠 Несколько стратегий: как статистические, так и нейросетевые подходы.
🟠 Хорошо документирована, есть примеры использования, интерфейс сделан удобно для исследований и промышленного применения.
🟠 Учитываются производительность и масштабирование.


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


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

#библиотеки

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

data-validation-framework

📌 data-validation-framework — библиотека для создания рабочих процессов (workflows) валидации данных. Основана на Luigi: ты описываешь задачи, правила, и библиотека помогает запускать проверки данных, которые соответствуют этим правилам. Хорошо подходит для ETL-пайплайнов, где надо регулярно проверять, что новые данные удовлетворяют стандартам (например, диапазон, наличие колонок, типы данных и т.п.).

📌 Особенности библиотеки:
🟠 Требует Python >= 3.9.
🟠 Интеграция с Luigi — задачи валидации описываются в коде как Luigi-таски.
🟠 Спецификация + код проверки в одном месте — не нужно отдельно поддерживать документацию с правилами и код с проверками, они связаны.
🟠 Возвращает детализированные результаты валидации по строкам, колонкам — можно использовать в автоматизации и CI-сценариях.


⚙️ Установка:
pip install data-validation-framework


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

#библиотеки

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍3🔥2
ComfyUI-to-Python-Extension

📱 Python 3.8+
ℹ️ Модули: зависит от ComfyUI (framework для визуальной сборки нейросетей и потоков); использует модули Python скриптов внутри ComfyUI, обработку JSON / API, стандартные библиотеки. Требуется, чтобы ComfyUI версии, использующей “workflow API”,

📌 ComfyUI-to-Python-Extension — утилита-скрипт, которая преобразовывает визуальные workflow-конфигурации, созданные через интерфейс ComfyUI, в исполняемый Python код. То есть ты строишь узлы и связи в ComfyUI через UI, а скрипт экспортирует это в .py: удобно для автоматизации генерации, запуска без UI, сохранения версий конфигураций. (GitHub репозиторий скрипта)

👨‍💻 Код и установка (обзор):
🟠 Клонируете репозиторий pydn/ComfyUI-to-Python-Extension с GitHub.
🟠 Устанавливаете зависимости, указанные в requirements.txt.
🟠 Запускаете ComfyUI, загружаешь workflow в UI, затем используете “Save As Script” / “Save (API Format)” → получаете JSON.
🟠 Потом запускаете скрипт вроде comfyui_to_python.py --input_file workflow.json --output_file my_workflow.py.

Подробная информация в репозитории скрипта.

📌 Что делает:
🟠 Преобразует визуальную конфигурацию узлов (Nodes / workflow) в Python код, что позволяет:
запускать workflow программно, без UI,
делать версии сценариев, ставить автоматические тесты / CI,
масштабировать или создавать батчи генерации, где UI был бы неудобен.
🟠 Позволяет адаптировать workflow-конфигурации, изменять параметры узлов, модифицировать и повторно использовать.


#скрипты

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

Effector

📌 Effector — библиотека, опубликованная на PyPI, предназначенная для региональных объяснений (regional feature effects) моделей интерпретируемого ML. Она помогает понять, как разные признаки влияют на прогноз модели не только в глобальном масштабе, но и в конкретных подпространствах (региональных субпространствах), что особенно важно, когда поведение модели неоднородно в зависимости от признаков.

📌 Особенности библиотеки:
🟠 Поддерживает глобальные методы объяснения (feature effect) и автоматически определяет региональные подпространства, где, по статистике, эффект признаков более однороден.
🟠 Интерфейс расширяемый — можно добавлять свои методы объяснения и определять регионы через логические правила.
🟠 Подходит как для табличных данных, так и для сложных ML-задач; позволяет визуализировать эффекты, сравнивать методы и отчётливо видеть, где признаки влияют по-разному.


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


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

#библиотеки

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍21
jc — CLI-утилита и библиотека на Python

📱 Python 3.6+
ℹ️ Модули: внутри использует стандартные модули + пакеты парсеров; работает как командная строка, но также можно подключать как библиотеку из Python-кода.

📌 jc — инструмент, который принимает вывод популярных команд в терминале (например, dig, netstat, ls, ps и др.), преобразует его в структурированный формат (JSON, YAML или Python-словарь). Это полезно, когда скрипты хотят обработать такие данные дальше программно — делать фильтрацию, агрегацию и т.п.

👨‍💻 Код и установка:
# Установка
pip install jc

# Пример команд:
dig example.com | jc --dig
ls -la | jc --ls
# и т.д.

# Использование как библиотеки в Python:
from jc import parse
# parse.<имя парсера>(строка_вывода)


📌 Что делает:
Слушает вывод команд в консоли
Использует соответствующий парсер (например, --dig, --ls и др.)
Преобразует строковый вывод в JSON / YAML / Python-структуры
Упрощает автоматизацию и обработку командного вывода программно


Подробная информация в репозитории скрипта.

#скрипты

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

miniutils

📌 miniutils — компактная коллекция утилитарных функций и декораторов, которые облегчают повседневную разработку на Python. Отличается минимализмом и набором “простейших, но раздражающих” задач, которые обычно дублируешь в каждом проекте (например, кеш-свойства, “ленивая” вычисления, прогресс-бары, кольцевая зависимость, и др.).

📌 Особенности библиотеки:
🟠 Поддержка Python 3.8+.
🟠 Небольшой размер и лёгкость — нет тяжёлых зависимостей, всё утило-код.
🟠 Есть декоратор CachedProperty для свойств, вычисляемых один раз, прогресс-бары для итераций и параллельных задач, более интуитивные контракты.
🟠 Улучшает читабельность кода: меньше boilerplate-кода, меньше “скелета” вокруг мемоизации, прогресс-индикации и т.д.


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


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

#библиотеки

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
15👍4🔥2
Ai-Gist — скрипт / приложение для управления GitHub Gists через API, с помощью Python + FastAPI.

📱 Python 3.9+
💾 Модули: FastAPI, aiohttp или requests (для GitHub API), SQLite для локального хранилища, возможно uvicorn как ASGI-сервер.

📌 Ai-Gist — веб-приложение/утилита, которая позволяет создавать, обновлять и просматривать Gist'ы на GitHub, используя простой API и локальную базу данных SQLite. Есть возможность связать с LLM-моделями: давать команды вроде “сгенерируй Gist по этому тексту” или “обнови Gist, добавив этот код”. Удобно, если часто работаешь с Gist и хочешь автоматизацию управления сниппетами.

👨‍💻 Код и установка (пример/как начать):
git clone https://github.com/ruvnet/ai-gist
cd ai-gist
pip install aigist

# Пример использования внутри приложения
from aigist import GistManager

gm = GistManager(token="твой_GITHUB_TOKEN")
# Создать новый Gist
gm.create_gist(title="MySnippet", content="print('Hello World')", public=False)
# Обновить существующий
gm.update_gist(gist_id="ID_GIST", content="print('Изменённый код')")


Запуск сервера (FastAPI/uvicorn):
aigist
# или
uvicorn aigist.main:app --reload


📌 Что делает:
🟠 Управляет Gist'ами: создание, обновление, список
🟠 Сохраняет сведения локально в SQLite, чтобы помнить какие Gist'ы ты создавал/обновлял, может кэшировать или отображать историю изменений
🟠 Поддержка AI-интеграций: если у проекта есть API для LLM, можно давать естественные команды и они переводятся в операции над Gist'ами (создать, изменить)


📱 GitHub репозиторий скрипта.

#скрипты

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

HyperNetX

📌 HyperNetX (HNX) — библиотека для моделирования и анализа гиперграфов (graphs, где ребра могут соединять более двух вершин), с поддержкой визуализации и метаданных. Подходит, если работаешь с сетями сложных связей: суперсетями, множественными связями, структурами данных, где “обычный граф” — слишком упрощённо.

📌 Особенности библиотеки:
🟠 Поддержка гиперграфов с метаданными на узлах, гиперрёбрах и даже на “инцидентных парах” (node-hyperedge pairings).
🟠 Есть визуализация через Matplotlib + виджеты для Jupyter, что удобно исследовать структуру гиперграфа визуально.
🟠 Подходит для исследовательских задач, где связи сложные: например, биоинформатика, сети взаимодействий, связи в сложных социальных сетях, где проще выразить групповые связи, чем простые пары.


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


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

#библиотеки

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2🔥2
IncrementalBackup (rsync wrapper) — скрипт на Python для создания инкрементальных резервных копий с контролем числа сохранённых бэков.

📱 Python 3.6+
ℹ️ Модули: использует стандартные модули (os, subprocess, argparse, time) + утилиту rsync как внешнюю зависимость. Требуется, чтобы rsync был установлен на системе.

📌 IncrementalBackup — обёртка поверх rsync, упрощающая создание безопасных резервных копий. Позволяет указать несколько исходных директорий, исключения, лимит на количество копий (--keep). Если хранилище заполнится — старые копии удаляются или перераспределяются, чтобы освободить место. Полезно на серверах, домашнем NAS, или просто для автоматической безопасной архивации проектов.

👨‍💻 Код и использование:
# Пример запуска
python3 IncrementalBackup.py --src /data --dst /backup --keep 5 --exclude /data/temp


Пример внутренней логики:
import subprocess
import os
import time
from argparse import ArgumentParser

def run_backup(src_dirs, dst, keep, exclude=[]):
# Проверки директорий
for src in src_dirs:
if not os.path.exists(src):
raise ValueError(f"Source {src} не найден")
if not os.path.exists(dst):
os.makedirs(dst)
# Формируем команду rsync с параметром --link-dest для инкрементальных бэков
cmd = [
"rsync", "-a", "--delete"
]
# добавляем исключения
for ex in exclude:
cmd += ["--exclude", ex]
# указываем link-dest как предыдущую резервную копию
# создаём папку с датой или идентификатором
backup_name = time.strftime("%Y%m%d-%H%M%S")
dst_path = os.path.join(dst, backup_name)
prev_backup = os.path.join(dst, sorted(os.listdir(dst))[-1]) if keep and os.listdir(dst) else None
if prev_backup:
cmd += ["--link-dest="+prev_backup]
cmd += src_dirs + [dst_path]
subprocess.run(cmd)
# Удаление старых бэков, если их больше чем keep
backups = sorted(os.listdir(dst))
if len(backups) > keep:
for old in backups[:-keep]:
old_path = os.path.join(dst, old)
# удаляем старую папку
subprocess.run(["rm", "-rf", old_path])

if __name__ == "__main__":
parser = ArgumentParser()
parser.add_argument("--src", nargs="+", required=True, help="Пути исходных директорий")
parser.add_argument("--dst", required=True, help="Директория назначения")
parser.add_argument("--keep", type=int, default=3, help="Сколько копий хранить")
parser.add_argument("--exclude", nargs="*", default=[], help="Что исключать")
args = parser.parse_args()
run_backup(args.src, args.dst, args.keep, args.exclude)


📌 Что делает:
Проверяет, существуют ли исходные и целевые директории.
Поддерживает несколько исходных путей и исключения.
Создаёт новую резервную копию с таймстампом.
Использует rsync --link-dest для инкрементальности: файлы, которые не изменились, не дублируются (сохраняются через hard link).
Удаляет старые копии, когда их становится больше, чем заданно в --keep.
Ссылка на репозиторий: Andreas-Menzel/IncrementalBackup на GitHub.


📱 Ссылка на репозиторий: GitHub.

#скрипты

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

ne2001

📌 ne2001 — Python-реализация модели NE2001 Кордеса-Лацио (Cordes-Lazio) для оценки электронной плотности в межзвёздной среде Млечного Пути. Используется в астрофизике: при работе с пульсарами, радиосигналами, для оценки задержки (dispersion), рассеяния (scattering) и других эффектов при прохождении радиоволн сквозь межзвёздную плазму. (PyPI — ne2001)

📌 Особенности библиотеки:
🟠 Полностью в Python, BSD-лицензия, без сложной компиляции.
🟠 Модель близка к оригинальному Fortran-коду, но адаптирована под современные вычисления, с деталями, которыми Fortran-версия может не обладать.
🟠 Позволяет вычислять “dispersion measure” и “scattering measure” вдоль заданных направлений по координатам галактической системы.
🟠 Есть командная строка + возможность использовать как библиотеку внутри кода.


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


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

#библиотеки

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

NApy

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

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


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


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

#библиотеки

🖥 Python_Scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥3