python-magic🟠 Определение формата по содержимому: magic.from_file("file") или magic.from_buffer(data) — когда файл ещё не записан на диск.🟠 Можно вернуть MIME-тип: mime=True.🟠 Может быть небезопасным для параллельного использования (не потокобезопасен) при некоторых конфигурациях.🟠 Требует установить libmagic (C-библиотека) на систему: на Linux/Unix её обычно устанавливают через менеджер пакетов, на Windows — использовать python-magic-bin с DLL.
pip install python-magic
На Windows:
pip install python-magic-bin
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤4👍2
📱
Python 3.xurllib.request, json, os, subprocess, getopt — используется встроенный HTTP-API GitHub и системные вызовы git clone. import getopt
import json
import os
import subprocess
import sys
from urllib.request import urlopen
def Usage():
print("Usage: %s -u <github user> -d <directory>" % sys.argv[0])
def main():
githubUser = ''
destDirectory = ''
try:
opts, args = getopt.getopt(sys.argv[1:], "u:d:h")
for o, a in opts:
if o == '-u':
githubUser = a
elif o == '-d':
destDirectory = a
elif o == '-h':
Usage()
sys.exit(0)
except getopt.GetoptError as e:
print(str(e))
Usage()
sys.exit(2)
if not githubUser or not destDirectory:
print("Use -u for GitHub user, -d for destination dir")
Usage()
sys.exit(0)
reposLink = f"https://api.github.com/users/{githubUser}/repos?type=all&per_page=100&page=1"
f = urlopen(reposLink)
repos = json.loads(f.readline())
print("Total repos:", len(repos))
os.makedirs(destDirectory, exist_ok=True)
os.chdir(destDirectory)
os.makedirs("repos", exist_ok=True)
os.makedirs("gists", exist_ok=True)
# Скачиваем репозитории
os.chdir("repos")
for repo in repos:
print("Cloning:", repo['html_url'])
subprocess.call(['git', 'clone', repo['html_url']])
# Скачиваем гисты
os.chdir("../gists")
gistsLink = f"https://api.github.com/users/{githubUser}/gists"
f = urlopen(gistsLink)
gists = json.loads(f.readline())
print("Total gists:", len(gists))
for gist in gists:
print("Cloning gist:", gist.get('git_pull_url'))
subprocess.call(['git', 'clone', gist.get('git_pull_url')])
if __name__ == "__main__":
main()
🟢 Получает список репозиториев пользователя через GitHub API🟢 Клонирует каждый репозиторий командой git clone🟢 Получает список гистов и клонирует их как отдельные git-репо🟢 Кладёт всё это в структуру папок: repos/ и gists/ в указанном каталоге
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍3🔥1
yt-dlp, os, sys, ffmpeg — используется для скачивания и обработки медиафайлов.yt-downloader-multi https://www.youtube.com/watch?v=VIDEO_ID --format mp3 --quality 192k
🟢 Скачивает одиночные видео по ссылке🟢 Скачивает все видео из плейлистов🟢 Сохраняет контент в указанную папку, создавая её при необходимости🟢 Поддерживает оффлайн-архивирование медиаконтента
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤4🔥2
pytube🟢 Простота использования — интуитивно понятный интерфейс для скачивания видео и аудио.🟢 Поддержка субтитров — возможность загрузки субтитров в формате .srt.🟢 Получение миниатюр — легкий доступ к URL-адресам миниатюр видео.🟢 Отсутствие сторонних зависимостей — не требует установки дополнительных пакетов.🟢 Поддержка прогрессивных и DASH-потоков — скачивайте видео и аудио в различных качествах.🟢 Загрузка целых плейлистов — скачивайте все видео из плейлиста с помощью одной команды.🟢 Обработка событий — настройка обратных вызовов для отслеживания прогресса загрузки и завершения процесса.
pip install pytube
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍3
✅
FastText-aligned🟢 Поддержка подгонки (alignment) методом Procrustes, Orthogonal Procrustes и др.🟢 Совместимость с эмбедингами fastText (бинарные и текстовые форматы).🟢 API, похожий на оригинальный fastText: load_model, align_to, get_vector.🟢 Работает как вспомогательный инструмент, легко интегрируется в NLP-пайплайны, например для кроссъязыковых задач.
pip install fasttext-aligned
🔢 Документация
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2🔥1
requests, os, re, urllib.parse, bs4 (BeautifulSoup) — используется HTTP-запросы к Google Images, HTML-парсинг ссылок и загрузка файлов. import os
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin, urlparse
def download_images(query, num_images=10, dest_folder="images"):
os.makedirs(dest_folder, exist_ok=True)
search_url = f"https://www.google.com/search?tbm=isch&q={query}"
headers = {"User-Agent": "Mozilla/5.0"}
resp = requests.get(search_url, headers=headers)
soup = BeautifulSoup(resp.text, "html.parser")
img_tags = soup.find_all("img")
count = 0
for img in img_tags:
img_url = img.get("src")
if not img_url:
continue
parsed = urlparse(img_url)
ext = os.path.splitext(parsed.path)[1]
if ext.lower() not in [".jpg", ".png", ".jpeg"]:
continue
filename = f"{query}_{count}{ext}"
filepath = os.path.join(dest_folder, filename)
try:
img_data = requests.get(img_url, timeout=5).content
with open(filepath, "wb") as f:
f.write(img_data)
print("Downloaded:", filename)
count += 1
if count >= num_images:
break
except Exception as e:
print("Error:", e)
continue
if __name__ == "__main__":
download_images("sunset", num_images=5)
🟢 Делает запрос Google Images с ключевым словом🟢 Парсит HTML и находит теги <img>🟢 Отбирает ссылки с допустимыми расширениями🟢 Скачивает изображения и сохраняет в папку, пока не наберёт нужное число
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤5
TabPFN🟢 Работает без необходимости обучать модель с нуля — готова к применению на новых табличных данных.🟢 Использует трансформерный подход, обученный на синтетических данных, чтобы понимать паттерны в табличных данных.🟢 Поддерживает как классификацию, так и регрессию.🟢 Подходит для “малых данных”, когда классические deep learning методы часто переобучаются.🟢 Открытая лицензия Apache-2.0, исходники на GitHub, пакет доступен на PyPI.
pip install tabpfn
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥3
os, csv, json, argparse и др.import os
import csv
import argparse
def merge_columns(input_files, output_file, column_index):
with open(output_file, 'w', newline='', encoding='utf-8') as out:
writer = csv.writer(out)
for infile in input_files:
with open(infile, newline='', encoding='utf-8') as f:
reader = csv.reader(f)
for row in reader:
if len(row) > column_index:
writer.writerow([row[column_index]])
else:
writer.writerow([''])
print("Merged into", output_file)
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('inputs', nargs='+', help='Input CSV files')
parser.add_argument('-o', '--output', required=True, help='Output file')
parser.add_argument('-c', '--col', type=int, default=0, help='Column index to merge')
args = parser.parse_args()
merge_columns(args.inputs, args.output, args.col)
🟢 Читает несколько CSV файлов🟢 Выбирает одну колонку (индекс) из каждой строки🟢 Объединяет эти колонки в один выходной файл🟢 Полезно при аналитике, когда нужно “собрать” один показатель из разных источников
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍4🔥2
Plotnine🟢 Поддерживает широкий спектр статистических графиков, включая гистограммы, диаграммы рассеяния, линейные графики и др.🟢 Позволяет легко комбинировать различные элементы графиков, такие как оси, легенды, заголовки и т.д.🟢 Обеспечивает высококачественные визуализации, которые легко интегрируются с другими библиотеками Python.🟢 Идеально подходит для анализа и визуализации данных в научных и исследовательских проектах.
pip install plotnine
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤3👍3
subprocess, time, csv, возможно datetime — скрипт периодически пингует выбранный IP/хост и логирует статус и задержки. import subprocess
import time
import csv
from datetime import datetime
HOST = "8.8.8.8"
INTERVAL = 60 # секунда
LOG_FILE = "connectivity_log.csv"
def ping(host):
# ping для Linux/macOS; под Windows может быть другой ключ
result = subprocess.run(["ping", "-c", "1", host], capture_output=True)
return result.returncode == 0, result
def log_status(timestamp, status, latency):
with open(LOG_FILE, "a", newline="") as f:
writer = csv.writer(f)
writer.writerow([timestamp, status, latency])
def extract_latency(output):
# пробуем парсить строку ping-ответа
out = output.decode('utf-8', errors='ignore')
# строка вида: time=12.345 ms
for part in out.split():
if part.startswith("time="):
try:
return float(part.split("=")[1])
except:
pass
return None
def main():
# заголовок CSV, если файл новый
try:
with open(LOG_FILE, "x") as f:
writer = csv.writer(f)
writer.writerow(["timestamp", "status", "latency_ms"])
except FileExistsError:
pass
while True:
ts = datetime.now().isoformat()
ok, res = ping(HOST)
latency = None
if ok:
latency = extract_latency(res.stdout)
status = "online"
else:
status = "outage"
log_status(ts, status, latency)
print(f"{ts} — {status} — {latency}")
time.sleep(INTERVAL)
if name == "__main__":
main()
🟢 Пингует указанный хост (по умолчанию 8.8.8.8) с интервалом🟢 Определяет, отвечает ли хост (если нет — “outage”)🟢 Если ответ — парсит задержку (ms)🟢 Записывает лог в формате CSV: временная метка, статус, задержка🟢 Выводит в консоль текущее состояние
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥5👍1
rembg🟢 Использует предобученные модели — не нужно самому тренить что-то тяжелое🟢 Работает быстро: может обрабатывать отдельные изображения или батчами🟢 Поддерживает разные форматы изображений (PNG, JPG и др.)🟢 Может быть использована в скриптах, приложениях или на сервере🟢 Легко интегрируется с PIL/Pillow или OpenCV
pip install rembg
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍2
os, subprocess, time и работу с устройствами USB в UNIX-подобных системах.import time
import subprocess
WHITELIST = ["Device1_ID", "Device2_ID"]
CHECK_INTERVAL = 1 # секунда
def list_usb_devices():
# команда lsusb — показывает USB-устройства на Linux
output = subprocess.check_output(["lsusb"]).decode()
return output.splitlines()
def monitor():
while True:
devices = list_usb_devices()
for d in devices:
# простая проверка: если строка не содержит ни одного whitelist ID
if all(w not in d for w in WHITELIST):
# небелое устройство — активируем защиту
print("Unknown USB device detected:", d)
# Пример действия: выключить систему
subprocess.call(["shutdown", "now", "-h"])
return
time.sleep(CHECK_INTERVAL)
if __name__ == "__main__":
monitor()
🟢 Мониторит список USB-устройств🟢 Сравнивает с белым списком🟢 При обнаружении “чужого” устройства — выполняет “жёсткое” действие (shutdown, удаление, очистка)🟢 Полезен как антифизическая защита при чувствительных данных
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤7👍7
HOTTBOX🟢 Поддержка операций над тензорами: умножения, срезы, перестановки, транспонирование и др.🟢 Алгоритмы декомпозиции тензоров: CP, Tucker и др.🟢 Методы для многоклассовой классификации и объединения данных на основе тензорных представлений — например, Support Tensor Machine и Tensor Ensemble Learning🟢 API, упрощающий интеграцию с другими библиотеками научного стека (NumPy, SciPy и др.)🟢 Встроенные инструменты визуализации тензоров и их разложения — помогает лучше понять структуру данных и результаты анализа🟢 Сконцентрирована на масштабируемости и интерактивном использовании (например в Jupyter)
pip install hottbox
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍3🔥3
Pillow (PIL) и os — используется для обработки изображений и работы с файловой системой. from PIL import Image
import os
def images_to_pdf(img_folder, output_pdf_path, paper_size=(595, 842)):
# paper_size в пунктах — примерно A4 (в зависимости от DPI)
imgs = []
for fname in sorted(os.listdir(img_folder)):
if fname.lower().endswith(('.png', '.jpg', '.jpeg')):
img_path = os.path.join(img_folder, fname)
img = Image.open(img_path).convert('RGB')
img = img.resize(paper_size) # подгонка под формат
imgs.append(img)
if not imgs:
print("Нет изображений для конвертации")
return
first, rest = imgs[0], imgs[1:]
first.save(output_pdf_path, save_all=True, append_images=rest)
print(f"Создан PDF: {output_pdf_path}")
if __name__ == "__main__":
images_to_pdf("input_images", "out.pdf")
🟢 Сканирует папку с изображениями (JPG, PNG и др.)🟢 Подгоняет каждый кадр под заданный размер (например, формат страницы)🟢 Объединяет все изображения в один PDF-файл🟢 Сохраняет PDF с указанным именем
#скрипт
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍2
nselib🟢 Работает с Python 3.8+ — совместимость гарантируется.🟢 Зависимости: requests, beautifulsoup, numpy, scipy, pandas, lxml и др.🟢 Лёгкий старт: установка одной командой, изучение функций быстрое благодаря хорошему списку API.
pip install nselib
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍1
watchdog (для отслеживания изменений в папке), os, time, logging и др. import time
import os
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class RansomwareHandler(FileSystemEventHandler):
def __init__(self):
self.modified_files = set()
self.deleted_files = set()
def on_modified(self, event):
if not event.is_directory:
self.modified_files.add(event.src_path)
print("Modified:", event.src_path)
def on_deleted(self, event):
if not event.is_directory:
self.deleted_files.add(event.src_path)
print("Deleted:", event.src_path)
def monitor(path_to_watch, check_interval=10):
event_handler = RansomwareHandler()
observer = Observer()
observer.schedule(event_handler, path=path_to_watch, recursive=True)
observer.start()
try:
while True:
time.sleep(check_interval)
# Простая логика: если за интервал изменилось или удалилось слишком много файлов
if len(event_handler.modified_files) > 100 or len(event_handler.deleted_files) > 10:
print("Warning: Potential ransomware activity detected!")
# Можно логировать события
event_handler.modified_files.clear()
event_handler.deleted_files.clear()
except KeyboardInterrupt:
observer.stop()
observer.join()
if name == "__main__":
path = "/path/to/watch"
monitor(path, check_interval=10)
🟢 Мониторит указанную директорию на события изменения и удаления файлов🟢 Логирует эти события в консоль и файл (например ransomware_detection.log)🟢 Периодически проверяется, если много изменений/удалений — вывод предупреждения о потенциальной атаке
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2🔥2
glasbey🟢 Можно создавать палитры с произвольным количеством цветов: glasbey.create_palette(palette_size=15) — и цвета будут стараться быть максимально отличимыми визуально.🟢 Можно расширять существующие палитры, или “с нуля” задавать seed цвета, чтобы новая палитра дополняла прежнюю (чтобы цвета не пересекались сильно).🟢 Поддержка ограничений: можно задавать границы яркости, хромности (chroma), чтобы цвета не были слишком яркими или слишком блеклыми.🟢 Можно создавать “блочные” палитры — когда есть иерархии категорий, вложенные группы.🟢 Легко использовать в связке с matplotlib / seaborn и др. визуализациями — просто генерируешь цвета и передаёшь библиотеке визуализации.
pip install glasbey
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍4
Forwarded from Python_Scripts
CompressImages.py — скрипт для пакетной обработки изображений: сжатия и изменения размераPIL (Pillow), os, sys, argparse — используется для обработки изображения и работы с файловой системой. CompressImages.py — утилита, которую запускаешь в папке с изображениями (или указываешь исходную папку), скрипт изменяет размер изображений до заданных лимитов (максимальная ширина/высота), сжимает качество (JPEG или др.), переименовывает по шаблону, и сохраняет в output-папку. Полезно, когда надо оптимизировать папки с фотографиями, иконками, медиа-контентом. import os
import sys
from PIL import Image
from argparse import ArgumentParser
def process_images(input_dir, output_dir, max_width, max_height, quality=70, rename_template=None):
os.makedirs(output_dir, exist_ok=True)
count = 0
for fname in os.listdir(input_dir):
if fname.lower().endswith(('.jpg', '.jpeg', '.png')):
path = os.path.join(input_dir, fname)
img = Image.open(path)
# изменение размера с сохранением пропорций
img.thumbnail((max_width, max_height))
base_name, ext = os.path.splitext(fname)
if rename_template:
out_name = rename_template.replace("{count}", str(count)) + ext
else:
out_name = fname
out_path = os.path.join(output_dir, out_name)
img.save(out_path, quality=quality)
print(f"Saved: {out_path}")
count += 1
def main():
parser = ArgumentParser()
parser.add_argument("input_dir")
parser.add_argument("output_dir")
parser.add_argument("--max_width", type=int, default=800)
parser.add_argument("--max_height", type=int, default=600)
parser.add_argument("--quality", type=int, default=70)
parser.add_argument("--rename", help="template, e.g. img_{count}")
args = parser.parse_args()
process_images(args.input_dir, args.output_dir, args.max_width, args.max_height, args.quality, args.rename)
if name == "__main__":
main()
🟢 Идёт по всем изображениям в папке с разрешениями .jpg, .jpeg, .png🟢 Изменяет их размер до заданных максимальных ширины/высоты, сохраняя пропорции🟢 Сжимает качество (для JPG например), чтобы уменьшить размер файлов🟢 Опционально переименовывает файлы по шаблону с номером🟢 Сохраняет всё в выходную папку, чтобы не перезаписывать оригиналы
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤6
py-irt🟢 Масштабируемость — работает с большими наборами данных, использует PyTorch и Pyro под капотом для ускорения вычислений.🟢 Байесовский подход — поддерживает обучение с априорными распределениями и вывод параметров через стохастические методы.🟢 GPU-поддержка — если данные большие, можно ускорить обучение.🟢 Чистый API — удобно интегрировать в образовательные платформы или аналитические пайплайны.
pip install py-irt
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥2
qrcode, Pillow import qrcode
import sys
def make_qr(data, output_file="qrcode.png", version=1, box_size=10, border=4):
qr = qrcode.QRCode(
version=version,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=box_size,
border=border,
)
qr.add_data(data)
qr.make(fit=True)
img = qr.make_image(fill_color="black", back_color="white")
img.save(output_file)
print(f"QR saved to {output_file}")
if name == "__main__":
if len(sys.argv) < 2:
print("Usage: python qr_gen.py <text_or_url>")
sys.exit(1)
data = sys.argv[1]
make_qr(data)
🟢 Принимает строку (URL, текст и т.д.)
🟢 Генерирует QR-код с заданными параметрами (размер, граница)
🟢 Сохраняет в файл (PNG)
🟢 Можно встроить в GUI или веб-интерфейс
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2❤1
nixnet🟢 Поддержка CAN и LIN — взаимодействие с сетями транспортных сообщений через NI-XNET оборудование🟢 Возможность читать кадры, сигналы, преобразовывать данные между физическим и представлением (unit conversion)🟢 Использует API NI-XNET / NI hardware — фактически “Python на железо” решение🟢 Поддержка Windows и взаимодействие с runtime NI-XNET
pip install nixnet
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍3