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
❤5👍3
This media is not supported in your browser
VIEW IN TELEGRAM
|- -
|
|- -
|
|- -
|
|- -
|
|- -
|
|- -
Все бесплатно❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2❤1👍1
Flask-Obscure🟢 Поддерживает разные схемы шифрования: num, hex, b32, b64 и tame (особый base32-вариант без гласных).🟢 При генерации URL через flask.url_for, автоматически превращает числовые ID в “замаскированную” форму, а при маршрутизации — обратно декодирует.🟢 Интеграция с Jinja2: фильтры доступны в шаблонах — можно прямо выводить “обфусцированные” ID.🟢 Использует 32-битное “соль” (salt), которую можно задать вручную или через конфигурацию Flask (OBSCURE_SALT) для уникального преобразования.
pip install Flask-Obscure
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🔥2
Изоляция рунета ближе, чем ты думаешь
Роскомнадзору дали карт-бланш на блокировки, а «белые списки» сайтов тестируют уже в десятках регионов. И гайки будут закручиваться только сильнее.
Чтобы в одночасье не лишиться доступа к свободному Интернету, просто сохрани Only Hack.
Тут профессиональный хакер делится фишками, с которыми доступ к глобальной сети у тебя будет даже в случае ядерного апокалипсиса.
Не жди момента «Х». Перестрахуйся подпиской.
Loading …
██████████████] 99%
Роскомнадзору дали карт-бланш на блокировки, а «белые списки» сайтов тестируют уже в десятках регионов. И гайки будут закручиваться только сильнее.
Чтобы в одночасье не лишиться доступа к свободному Интернету, просто сохрани Only Hack.
Тут профессиональный хакер делится фишками, с которыми доступ к глобальной сети у тебя будет даже в случае ядерного апокалипсиса.
Не жди момента «Х». Перестрахуйся подпиской.
😁6
soundpython🟢 Поддержка многочисленных аудиоформатов (MP3, WAV, OGG, FLAC).🟢 Возможность простой работы со стерео и моно-аудио: разделение/объединение каналов, извлечение частей по времени, кроссфейды, объединение аудио.🟢 Автоматическая нормализация громкости и управление метаданными.🟢 Лёгковесная и высокоуровневая — можно быстро встроить в скрипты, утилиты, обработку больших коллекций аудио.
pip install soundpython
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🔥3
🟢 Быстрое создание PDF из коллекции изображений.🟢 Удобно для архивации фото-альбомов, сканов, слайдов, проектов.🟢 Лёгкий скрипт — минимум зависимостей, работает из коробки.
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1🔥1
pycopy🟢 Поддержка Python 3, свежий релиз 2025.7.5.🟢 Простой API: pycopy.sync("dir1", "dir2", do_delete=True) — всё, что нужно.🟢 CLI-инструмент: можно установить через pipx и запускать как команду pycopy.🟢 Минимальные зависимости, лёгкий размер — удобно для скриптов и автоматизаций.
pip install pycopy
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍3🔥3
❖ Что делать в случае отключения России от глобального Интернета?
❖ Как не сливать государству гигабайты своих данных?
❖ Как обойти «глушилку» мобильной связи в регионах?
В 2025 году любое государство готово залезть к вам в прямую кишку ради контроля персональных данных. И тендеция только набирает обороты.
Чтобы щупальца РКН, правоохранителей и мошенников не коснулись вашей жизни, держите в подписках «cybr.»
Анонимный хакер из российской группировки рассказывает как обходить ограничения, не оставлять «цифровые следы» и пользоваться топовыми нейронками без ограничений.
Сохраняйте, пока в стране во всю закручивают гайки, такие каналы — на вес золота: @cybr.
❖ Как не сливать государству гигабайты своих данных?
❖ Как обойти «глушилку» мобильной связи в регионах?
В 2025 году любое государство готово залезть к вам в прямую кишку ради контроля персональных данных. И тендеция только набирает обороты.
Чтобы щупальца РКН, правоохранителей и мошенников не коснулись вашей жизни, держите в подписках «cybr.»
Анонимный хакер из российской группировки рассказывает как обходить ограничения, не оставлять «цифровые следы» и пользоваться топовыми нейронками без ограничений.
Сохраняйте, пока в стране во всю закручивают гайки, такие каналы — на вес золота: @cybr.
😁4
requests, bs4 (BeautifulSoup), osimport os
import requests
from bs4 import BeautifulSoup
def download_google_images(query, folder="images", limit=10):
os.makedirs(folder, exist_ok=True)
url = "https://www.google.com/search"
params = {"q": query, "tbm": "isch"}
headers = {"User-Agent": "Mozilla/5.0"}
resp = requests.get(url, params=params, headers=headers)
soup = BeautifulSoup(resp.text, "html.parser")
imgs = soup.find_all("img")[:limit]
for i, img in enumerate(imgs, 1):
src = img.get("src")
if not src:
continue
img_data = requests.get(src).content
path = os.path.join(folder, f"{query.replace(' ', '_')}_{i}.jpg")
with open(path, "wb") as f:
f.write(img_data)
print(f"✅ Скачал: {path}")
if __name__ == "__main__":
download_google_images("cats", limit=5)
🟠 Делает GET-запрос к Google Images с указанным ключевым словом🟠 Парсит HTML через BeautifulSoup, берёт src первых <img>🟠 Скачивает картинки по ссылке и сохраняет их в папку images
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
⚡️ ВАЙБ-КОДИНГ теперь в Telegram!
Ребята сделали крутейший канал, где на наглядных примерах и понятном языке рассказывают как войти в новую эру разработки с ИИ, делятся полезными фишками и инструментами
Подписывайтесь, нас уже 10 тысяч: @vibecoding_tg
Ребята сделали крутейший канал, где на наглядных примерах и понятном языке рассказывают как войти в новую эру разработки с ИИ, делятся полезными фишками и инструментами
Подписывайтесь, нас уже 10 тысяч: @vibecoding_tg
😁6
💾
npm, но для автоматизации используются скрипты на Python + Playwright — подробности в репозитории.🟠 Запускает браузер (Chromium/Firefox) с возможностью управления по API Playwright — выполняет любые действия, как если бы вы делали их вручную, но автоматически.🟠 Работает с профилями и инкогнито режимом (--profile, --incognito) — удобно для тестирования и изолированного использования.🟠 Поддерживает запуск готовых сценариев: помещаете .js или .py скрипты в commands, и обрабатываете их через beachmsg <script-name>.🟠 Можно интегрировать с GUI-расширением — сразу запускать сценарии из браузера одним кликом, с подсветкой текущих команд и hotkeys.
git clone https://github.com/sebastiancarlos/beachpatrol
cd beachpatrol
npm install
make
Запускается командой
beachpatrol, работает как обычный браузер — можно добавить --profile <name> или --incognito.#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍3
NApy🟢 Оптимизированные статистические тесты с параллелизацией на уровне C++/OpenMP для больших наборов данных🟢 Автоматическая обработка гетерогенных столбцов и пропущенных значений🟢 Работа в интерактивных приложениях и потоках — моментальные результаты без задержек🟢 Превосходит по скорости и потреблению памяти аналоги на чистом Python
pip install napy
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
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
🔥2❤1