Constructor-Telegram-Bots-master.zip
129.3 KB
django postgresql #telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍24🔥12👏4❤2
ubelt🟠 Расширенный Path с методами expand, ensuredir, augment, delete, plus удобные функции для работы с кэшем и конфигами (appdir).🟠 Функции-хелперы: hash_data/ hash_file для быстрого хеширования, Timer, Cacher/CacheStamp для кэширования и замера скорости выполнения.🟠 CLI-инструменты: прогресс-бар ProgIter, скачивание с download, выполнение shell-команд через cmd.🟠 Дополнительные классы: UDict (расширенные словари), SetDict, urepr (человекочитаемая строка для структуры), color_text — печатает текст с ANSI-цветами.🟠 Ничего лишнего: все функции чисто-Python, почти без зависимостей, с хорошим тестовым покрытием и документацией.
pip install ubelt
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2
shutil, os, argparse, datetime, (опционально) schedule🟠 Копирует содержимое папки source в архивную папку destination/YYYY-MM-DD_HHMMSS/🟠 Автоматически создаёт имя папки с таймстампом🟠 Можно запускать вручную или по расписанию (например, ежедневно)🟠 Простой, надёжный, без лишних зависимостей — идеально для резервной заботы
python backup_scheduler.py --src /home/user/docs --dst /home/user/backups --schedule 24
👨💻 Код скрипта (backup_scheduler.py):
import os
import shutil
import argparse
from datetime import datetime
import time
def backup(src, dst):
timestamp = datetime.now().strftime("%Y-%m-%d_%H%M%S")
backup_path = os.path.join(dst, timestamp)
os.makedirs(backup_path, exist_ok=True)
for root, dirs, files in os.walk(src):
rel = os.path.relpath(root, src)
dest_dir = os.path.join(backup_path, rel)
os.makedirs(dest_dir, exist_ok=True)
for file in files:
shutil.copy2(os.path.join(root, file), os.path.join(dest_dir, file))
print(f"✅ Backup created at: {backup_path}")
def main():
parser = argparse.ArgumentParser("Directory Backup Scheduler")
parser.add_argument("--src", required=True, help="Source directory to backup")
parser.add_argument("--dst", required=True, help="Destination directory for backups")
parser.add_argument("--schedule", type=int, help="Interval in hours between backups")
args = parser.parse_args()
if args.schedule:
while True:
backup(args.src, args.dst)
time.sleep(args.schedule * 3600)
else:
backup(args.src, args.dst)
if __name__ == "__main__":
main()
Только стандартные модули Python — работает сразу, без
pip.#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🔥4👍3
dask🟠 Масштабирование: от одного ядра до всего кластера.🟠 Совместимый синтаксис: DataFrame, Array, ML API аналогичны знакомым библиотекам.🟠 Отличается удобством и гибкостью: можно начать с локальных расчётов, а затем перенести тот же код в прод.🟠 Используется крупными компаниями: Walmart, Nvidia, NASA, Capital One и другими.
🟠 Открытый исходник, активное развитие, последний релиз был в феврале 2024.
pip install dask[complete]
(пакет с зависимостями для полного функционала — параллельные файловые системы, SQL, ML и др.)
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤6👍1🔥1
📱 Python 3.8+
💾 Модули:
smtplib, email, csv, argparse📌 Возможности скрипта:
Считывает список адресов и сообщений из CSV (столбцы: email, subject, message)
Отправляет письма через SMTP (например, Gmail)
Простая фильтрация: можно выбрать часть списка и режим dry-run для теста
Экономит время, особенно если нужно отправить много писем вручную
👨💻 Пример использования (CLI):
python bulk_emailer.py --csv recipients.csv --smtp_host smtp.gmail.com --port 587 --user you@example.com --password ****
👨💻 Код скрипта (bulk_emailer.py):
import smtplib
import csv
import argparse
from email.message import EmailMessage
def send_bulk(csv_path, smtp_host, port, user, password, dry=False):
with open(csv_path, newline='', encoding='utf-8') as f:
reader = csv.DictReader(f)
with smtplib.SMTP(smtp_host, port) as smtp:
smtp.starttls()
smtp.login(user, password)
for row in reader:
msg = EmailMessage()
msg["From"] = user
msg["To"] = row["email"]
msg["Subject"] = row["subject"]
msg.set_content(row["message"])
if dry:
print(f"DRY RUN → To: {row['email']}, Subject: {row['subject']}")
else:
smtp.send_message(msg)
print(f"Sent to {row['email']}")
if __name__ == "__main__":
p = argparse.ArgumentParser("Bulk Email Sender")
p.add_argument("--csv", required=True, help="CSV file with email,subject,message columns")
p.add_argument("--smtp_host", default="smtp.gmail.com")
p.add_argument("--port", type=int, default=587)
p.add_argument("--user", required=True, help="SMTP username")
p.add_argument("--password", required=True, help="SMTP password or app-password")
p.add_argument("--dry", action="store_true", help="Dry run (dont actually send)")
args = p.parse_args()
send_bulk(args.csv, args.smtp_host, args.port, args.user, args.password, args.dry)
📌 Где пригодится:
Рассылка обновлений, приглашений, опросов, уведомлений большую аудиторию
Режим dry-run позволяет проверить письма перед реальной отправкой
Экономия десятков минут на рутинной отправке писем — особенно для OSINT или бизнеса
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🔥2
Featuretools🟠 Automated Feature Engineering — строит фичи типа средних, максимумов, counts и даже временных окон для больших наборов данных без ручного кода.🟠 Особенно эффективна для темпоральных и реляционных сцен: может создавать признаки «на основе истории» (например, средняя стоимость заказов за последние 7 дней).🟠 Значительно ускоряет создание признаков и снижает руки коду — полезно для быстрого прототипирования и экспериментов.
pip install featuretools
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2🔥1
secrets, string, argparse🟠 Генерирует пароль, используя буквы (все регистры), цифры и спецсимволы🟠 Криптографически стойкий — идеально подходит для безопасных паролей🟠 Простая CLI: указываешь длину — получаешь новый пароль на выходе
python gen_pass.py --length 20
import secrets
import string
import argparse
def generate_password(length):
alphabet = string.ascii_letters + string.digits + string.punctuation
# можно исключить потенциально проблемные символы вроде '\' или '"' по желанию
return ''.join(secrets.choice(alphabet) for _ in range(length))
if __name__ == '__main__':
parser = argparse.ArgumentParser("Secure Password Generator")
parser.add_argument("--length", type=int, default=12, help="Password length")
args = parser.parse_args()
pwd = generate_password(args.length)
print(pwd)
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥4👍2
autofeat🟠 Автоматическая генерация фичей — создаёт множество потенциально полезных комбинаций и трансформаций признаков, освобождая от ручного труда.🟠 Отбор значимых признаков — применяет L1-регуляризацию, чтобы оставить только те, что действительно влияют на модель.🟠 Понятность и прозрачность — результат пригоден для линейных моделей, которые легко интерпретировать и объяснить.
pip install autofeat
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍3🔥2
subprocess, argparse, datetime🟠 Выполняет добавление всех изменений (git add .)🟠 Составляет коммит-сообщение с временной меткой (например: Auto commit 2025-08-19 · Обновления)🟠 Делает git commit и git push, используя default-ветку🟠 Позволяет один раз запускать скрипт и забыть про многострочные команды—автоматизация на максималках
python git_auto.py
import subprocess
import argparse
from datetime import datetime
def auto_git():
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
msg = f"Auto commit {timestamp}"
try:
subprocess.run(["git", "add", "."], check=True)
subprocess.run(["git", "commit", "-m", msg], check=True)
subprocess.run(["git", "push"], check=True)
print(f"✅ Changes pushed with message: '{msg}'")
except subprocess.CalledProcessError as e:
print(f"❌ Git operation failed: {e}")
if __name__ == "__main__":
parser = argparse.ArgumentParser("Automate Git Operations")
args = parser.parse_args()
auto_git()
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍6🔥3
msgspec🟠 Очень быстрая сериализация/десериализация JSON или MessagePack🟠 Встроенный механизм msgspec.Struct — легкая альтернатива Pydantic для валидации🟠 Отличается компактным двоичным представлением (MessagePack)🟠 Подходит для межпроцессного обмена, сетевого взаимодействия, микросервисов с минимальными накладными расходами
⚙️ Установка:
pip install msgspec
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1🥰1
🟠 Каждую минуту проверяет содержимое указанного сайта.🟠 Если сайт изменился — выводит сообщение "Сайт обновился!".
Код:
import requests
import hashlib
import time
URL = 'https://example.com' # замени на нужный сайт
CHECK_INTERVAL = 60 # интервал проверки в секундах
def get_hash(url):
try:
response = requests.get(url, timeout=10)
response.raise_for_status()
return hashlib.md5(response.text.encode('utf-8')).hexdigest()
except Exception as e:
print("Ошибка при запросе:", e)
return None
def monitor_site(url):
print(f"Следим за сайтом: {url}")
old_hash = get_hash(url)
if old_hash is None:
print("Не удалось получить начальное состояние.")
return
while True:
time.sleep(CHECK_INTERVAL)
new_hash = get_hash(url)
if new_hash is None:
continue
if new_hash != old_hash:
print(f"[{time.ctime()}] Сайт обновился!")
old_hash = new_hash
else:
print(f"[{time.ctime()}] Без изменений.")
monitor_site(URL)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤5🔥5
package-smoke-test🟠 Простая командная утилита: python3 -m package_smoke_test --module your_module — выдаёт статус установки, путь и версию.🟠 Подходит для smokescreen-тестов: быстро проверить наличие необходимых пакетов перед запуском скриптов или сервисов.🟠 Минимум зависимостей и максимум пользы — удобно допилить в CI пайплайн без лишних телодвижений.
pip install package-smoke-test
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥1🤩1
os, time (стандартные), cv2 sqlite3🟠 Берёт видео с камеры (или файла).🟠 Сравнивает текущий кадр с предыдущим.🟠 Если есть движение (>1% пикселей изменилось) → сохраняет кадр в папку motion_frames.🟠 Выводит сообщение о сохранении.🟠 Работает в цикле, пока не остановишь (Ctrl+C).
import cv2
import time
import os
VIDEO_SOURCE = 0 # 0 = вебкамера, или URL/IP камеры, или путь к видеофайлу
SAVE_DIR = "motion_frames"
os.makedirs(SAVE_DIR, exist_ok=True)
cap = cv2.VideoCapture(VIDEO_SOURCE)
_, prev_frame = cap.read()
prev_frame = cv2.cvtColor(prev_frame, cv2.COLOR_BGR2GRAY)
prev_frame = cv2.GaussianBlur(prev_frame, (21, 21), 0)
frame_id = 0
print("📹 Запущен анализ. Ctrl+C для остановки.")
try:
while True:
ret, frame = cap.read()
if not ret:
break
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray, (21, 21), 0)
diff = cv2.absdiff(prev_frame, gray)
thresh = cv2.threshold(diff, 25, 255, cv2.THRESH_BINARY)[1]
motion_percent = (cv2.countNonZero(thresh) / thresh.size) * 100
if motion_percent > 1.0:
filename = f"{SAVE_DIR}/motion_{frame_id}.jpg"
cv2.imwrite(filename, frame)
print(f"📸 Движение! Сохранил кадр: {filename}")
prev_frame = gray
frame_id += 1
time.sleep(0.2)
except KeyboardInterrupt:
print("🛑 Остановлено пользователем.")
finally:
cap.release()
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤7👍5🔥4
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❤10👏4👍1
Autoflake🟠 Удаляет неиспользуемые импорты и переменные — работает быстрее flake8 + ручное удаление.🟠 Интегрируется в CI/CD или pre-commit — держите репозитории без мусора, не задумываясь.🟠 Поддерживает массовую автоматизацию: сразу для всех файлов проекта.
pip install autoflake
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤7👍1
watchdog, requests, argparse, loggingИспользует ntfy.sh для уведомлений — никаких регистраций, просто отправляет сообщение HTTP запросом.
🟠 Реагирует на события — создание, удаление, переименование или изменение файлов в папке🟠 Отправляет уведомление через ntfy.sh — всплывает на вашем устройстве мгновенно🟠 Поддерживает фильтрацию по расширениям, рекурсивный обход и кастомные настройки через CLI
python folder_monitor.py --path /путь/к/папке --topic mytopic --recursive
import time, argparse, logging, os, requests
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(message)s")
class FileChangeHandler(FileSystemEventHandler):
def __init__(self, topic, include_extensions=None):
self.topic = topic
self.include_ext = include_extensions
def notify(self, msg):
requests.post(f"https://ntfy.sh/{self.topic}", data=msg)
def dispatch(self, event):
if self.include_ext:
if os.path.splitext(event.src_path)[1].lower() not in self.include_ext:
return
super().dispatch(event)
def on_any_event(self, event):
msg = f"{event.event_type.upper()}: {event.src_path}"
logging.info(msg)
self.notify(msg)
def main():
parser = argparse.ArgumentParser("Folder Monitor with ntfy.sh notifications")
parser.add_argument("--path", required=True, help="Folder path to monitor")
parser.add_argument("--topic", required=True, help="ntfy.sh topic")
parser.add_argument("--extensions", help="Filter extensions, comma-separated (e.g. .txt,.pdf)")
parser.add_argument("--recursive", action="store_true", help="Watch subdirectories")
args = parser.parse_args()
exts = [e.lower() for e in args.extensions.split(",")] if args.extensions else None
handler = FileChangeHandler(args.topic, include_extensions=exts)
observer = Observer()
observer.schedule(handler, args.path, recursive=args.recursive)
observer.start()
logging.info(f"Monitoring: {args.path} (recursive={args.recursive})")
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
if __name__ == "__main__":
main()
pip install watchdog requests
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
11❤7🔥3👍1
os, shutilimport os
import shutil
def organize_folder(path):
extensions = {
"Images": [".jpg", ".jpeg", ".png", ".gif"],
"Documents": [".pdf", ".docx", ".txt"],
"Music": [".mp3", ".wav", ".flac"],
"Videos": [".mp4", ".avi", ".mkv"],
}
for filename in os.listdir(path):
filepath = os.path.join(path, filename)
if os.path.isfile(filepath):
for folder, exts in extensions.items():
if any(filename.lower().endswith(ext) for ext in exts):
target_folder = os.path.join(path, folder)
os.makedirs(target_folder, exist_ok=True)
shutil.move(filepath, os.path.join(target_folder, filename))
print(f"Переместил {filename} -> {folder}")
break
if __name__ == "__main__":
organize_folder("C:/Users/user/Downloads")
📌 Что делает:
🟠 Сканирует папку🟠 Определяет расширение файла🟠 Перемещает файл в подпапку по типу (создаёт папку, если нужно)
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7😁5🔥3❤2
pzp🟠 Абсолютно на Python — не требуется установка fzf или прочих сторонних инструментов, всё само по себе.🟠 Интерфейс по умолчанию — полноэкранный режим; при необходимости доступен вывод под курсором (fullscreen=False) и ограничение высоты окна (height=...).🟠 Несколько layout-режимов
pip install pzp
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍3🔥2
Bot-EveryDay-master.zip
78.7 KB
aiogram postgresql #telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
5❤9🔥4👍3
requests, BeautifulSoup), а также автоматизацию браузера через Selenium (используется geckodriver + Firefox).git clone https://github.com/TheRealDalunacrobate/DaProfiler.git
cd DaProfiler
pip install -r requirements.txt
Для работы требуется установленный Firefox и geckodriver.
Структура запуска (пример, обсуждается в документации проекта):
python profiler.py -n ИМЯ -ln ФАМИЛИЯ -l True -O output.txt
где:
-n, --name — имя цели
-ln, --lastname — фамилия цели
-l, --logging — включить логгирование в терминале
-O, --output — вывести результаты в output.txt
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
5❤7👍5🔥2