pyserial — всё взаимодействие с модемом идёт через последовательный порт. Зависящая утилита: GSMTerm (входит в пакет). 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
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🔥2👍1
os, subprocess, возможно requests или gh для Gist API, плюс Bash для хука. (детали — на странице проекта) #!/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
*(Это адаптированный фрагмент, не точный код из репо, но отражает основную идею.)
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1🥰1
PyPOTS🟠 Обработка нерегулярных временных рядов с отсутствующими наблюдениями (irregular, missing observations).🟠 Несколько стратегий: как статистические, так и нейросетевые подходы.🟠 Хорошо документирована, есть примеры использования, интерфейс сделан удобно для исследований и промышленного применения.🟠 Учитываются производительность и масштабирование.
pip install pypots
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3❤1
data-validation-framework🟠 Требует Python >= 3.9.🟠 Интеграция с Luigi — задачи валидации описываются в коде как Luigi-таски.🟠 Спецификация + код проверки в одном месте — не нужно отдельно поддерживать документацию с правилами и код с проверками, они связаны.🟠 Возвращает детализированные результаты валидации по строкам, колонкам — можно использовать в автоматизации и CI-сценариях.
pip install data-validation-framework
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍3🔥2
🟠 Клонируете репозиторий 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-конфигурации, изменять параметры узлов, модифицировать и повторно использовать.
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3🔥2
Effector🟠 Поддерживает глобальные методы объяснения (feature effect) и автоматически определяет региональные подпространства, где, по статистике, эффект признаков более однороден.🟠 Интерфейс расширяемый — можно добавлять свои методы объяснения и определять регионы через логические правила.🟠 Подходит как для табличных данных, так и для сложных ML-задач; позволяет визуализировать эффекты, сравнивать методы и отчётливо видеть, где признаки влияют по-разному.
pip install effector
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2❤1
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-структуры
Упрощает автоматизацию и обработку командного вывода программно
Подробная информация в репозитории скрипта.
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3🔥2
miniutils🟠 Поддержка Python 3.8+.🟠 Небольшой размер и лёгкость — нет тяжёлых зависимостей, всё утило-код.🟠 Есть декоратор CachedProperty для свойств, вычисляемых один раз, прогресс-бары для итераций и параллельных задач, более интуитивные контракты.🟠 Улучшает читабельность кода: меньше boilerplate-кода, меньше “скелета” вокруг мемоизации, прогресс-индикации и т.д.
pip install miniutils
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤5👍4🔥2
💾 Модули:
FastAPI, aiohttp или requests (для GitHub API), SQLite для локального хранилища, возможно uvicorn как ASGI-сервер.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'ами (создать, изменить)
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍2🔥2
Forwarded from Python_Scripts
HyperNetX🟠 Поддержка гиперграфов с метаданными на узлах, гиперрёбрах и даже на “инцидентных парах” (node-hyperedge pairings).🟠 Есть визуализация через Matplotlib + виджеты для Jupyter, что удобно исследовать структуру гиперграфа визуально.🟠 Подходит для исследовательских задач, где связи сложные: например, биоинформатика, сети взаимодействий, связи в сложных социальных сетях, где проще выразить групповые связи, чем простые пары.
pip install hypernetx
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍2🔥2
os, subprocess, argparse, time) + утилиту rsync как внешнюю зависимость. Требуется, чтобы rsync был установлен на системе. # Пример запуска
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.
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍1
ne2001🟠 Полностью в Python, BSD-лицензия, без сложной компиляции.🟠 Модель близка к оригинальному Fortran-коду, но адаптирована под современные вычисления, с деталями, которыми Fortran-версия может не обладать.🟠 Позволяет вычислять “dispersion measure” и “scattering measure” вдоль заданных направлений по координатам галактической системы.🟠 Есть командная строка + возможность использовать как библиотеку внутри кода.
pip install ne2001
🔢 Документация
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤4😁3🔥1
NApy🟢 Оптимизированные статистические тесты с параллелизацией на уровне C++/OpenMP для больших наборов данных🟢 Автоматическая обработка гетерогенных столбцов и пропущенных значений🟢 Работа в интерактивных приложениях и потоках — моментальные результаты без задержек🟢 Превосходит по скорости и потреблению памяти аналоги на чистом Python
pip install napy
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥3
unique-uncertainty🟢 Работает с Python 3.8-3.12.1 и выше.🟢 Не требует, чтобы ты переписывал модель — достаточно передать данные: признаки, прогнозы модели и, по необходимости, распределения вероятностей или отклонения, и библиотека оценит неопределённость.🟢 Поддержка нескольких метрик оценки неопределенности, визуализации (графики, диаграммы) для сравнения между методами.🟢 Lightweight — нет тяжёлых зависимостей на тренировку моделей, только на ввод-вывод и визуализацию/аналитику.
pip install unique-uncertainty
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍3
requests, argparseimport requests
import argparse
def get_ip_info(ip):
url = f"https://ipinfo.io/{ip}/json"
response = requests.get(url)
if response.status_code == 200:
data = response.json()
for k, v in data.items():
print(f"{k}: {v}")
else:
print("Ошибка запроса")
if name == "__main__":
parser = argparse.ArgumentParser(description="IPinfo Lookup Script")
parser.add_argument("ip", help="IP или домен для проверки")
args = parser.parse_args()
get_ip_info(args.ip)
🟠 Отправляет запрос к ipinfo.io🟠 Получает базовые данные о местоположении, ASN и провайдере🟠 Красиво выводит результат в консоль
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍5🔥2
datedelta🟢 Поддержка Python >= 3.6, <4.0.🟢 Можно создавать объекты datedelta с параметрами years, months, days, вычитание — тоже работает.🟢 Учитывает “неоднозначные” случаи, например, 29 февраля и месяцы с разным числом дней.🟢 Небольшой вес, минимальные зависимости — библиотека просто надстройка над стандартным datetime.
pip install datedelta
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥4👍3
requests (для API-запросов), argparse (для CLI-аргументов), os, logging. Скрипт в составе пакета github-utility на PyPI. # Установка
pip install github-utility
# CLI примеры:
export GITHUB_ACCESS_TOKEN="токен"
# Получить информацию о пользователе
github-utility get-user --username someuser
# Создать issue в репозитории
github-utility create-issue --owner ownername --repo reponame --title "Test issue" --body "Описание issue"
Фрагменты кода внутри скрипта:
import requests
import argparse
import os
def get_user(token, username):
headers = {"Authorization": f"token {token}"}
resp = requests.get(f"https://api.github.com/users/{username}", headers=headers)
return resp.json()
def create_issue(token, owner, repo, title, body):
headers = {"Authorization": f"token {token}"}
data = {"title": title, "body": body}
resp = requests.post(f"https://api.github.com/repos/{owner}/{repo}/issues", headers=headers, json=data)
return resp.json()
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3🔥2
SAPPL🟢 Поддержка основных задач аудио-преобработки: загрузка аудио файлов, трансформации, возможно нормализация, извлечение фич (спектральные, мел-фильтры и др.) — всё, чтобы быстро подготовить данные под ML.🟢 Минимум настроек — “работает из коробки” для простых сценариев.🟢 Хорошо документирована, подходит как для экспериментов, так и для производственного использования, если не требуются экстремальные скорости или супер-оптимизации.
pip install sappl
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍3❤1
subprocess, time, platform, возможно os — внешний вызов системных команд (ping, nmcli, netsh и т.д.).import subprocess
import time
import platform
def is_connected(host="8.8.8.8", count=1, timeout=1):
param = "-n" if platform.system().lower() == "windows" else "-c"
cmd = ["ping", param, str(count), "-W", str(timeout), host]
result = subprocess.run(cmd, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
return result.returncode == 0
def reconnect_wifi(interface_name=None):
system = platform.system().lower()
try:
if system == "linux":
# пример для NetworkManager
subprocess.run(["nmcli", "networking", "off"], check=True)
time.sleep(1)
subprocess.run(["nmcli", "networking", "on"], check=True)
elif system == "windows":
# отключить / включить адаптер
subprocess.run(["netsh", "interface", "set", "interface", interface_name, "disable"], check=True)
time.sleep(1)
subprocess.run(["netsh", "interface", "set", "interface", interface_name, "enable"], check=True)
else:
print("OS не поддерживается для авто-переподключения")
except Exception as e:
print("Ошибка при переподключении:", e)
def watch_loop(interval=10, interface=None):
while True:
if is_connected():
print("Связь OK")
else:
print("Связь пропала — переподключаем...")
reconnect_wifi(interface)
time.sleep(interval)
if __name__ == "__main__":
# Можно передать название интерфейса через аргументы
watch_loop(interval=15, interface="Wi-Fi")
🟠 Периодически пингует внешний хост (по умолчанию 8.8.8.8)🟠 Если пинг не проходит — считает, что связь потеряна🟠 Пытается переподключить сеть, в зависимости от ОС🟠 Логирует состояние в консоль
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍8🔥7❤5
invisible-watermark🟢 Не требует оригинального изображения (standalone watermarking) — можно встраивать метку даже если нет “эталона”.🟢 Работает как библиотека и как командная строка (CLI-инструмент) — удобно использовать в пайплайнах или скриптах для обработки изображений.🟢 Поддерживает разные алгоритмы внедрения водяных знаков, устойчивые к некоторым трансформациям (сжатие, изменение оттенков).🟢 Лёгкая зависимостями — типичный стек: PIL/Pillow или аналогичные библиотеки обработки изображений.
pip install invisible-watermark
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤3🔥1