UniversalTool/app/README.md
2026-07-07 18:19:47 +05:00

94 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# nexdex.space
локальный веб-инструмент — качает музыку/видео, конвертирует файлы, редактирует
метаданные треков, форматирует py/lua скрипты. открывается сам в браузере на
`localhost`, тёмная тема, гугл-минимализм.
---
## что внутри
**загрузчик** — вставляешь ссылку (youtube / soundcloud / apple music / spotify /
yandex music) или ищешь по названию (видно обложку+автора перед скачиванием),
выбираешь формат — качает и вшивает обложку+теги. для spotify/apple music метаданные
берутся с официальных публичных api, а само аудио ищется и качается с youtube —
без взлома drm. история последних скачиваний сохраняется локально.
**конвертер** — картинки (webp, png, jpg, ico и генерация иконок из любой картинки),
pdf, pptx, аудио (flac/wav/mp3/m4a/ogg/opus/aac), видео (mp4/avi/mov/mkv/webm/gif).
честно: pptx → картинка/pdf не поддерживается (нужен libreoffice/powerpoint для
рендера слайдов — тяжёлая внешняя зависимость, спорит с идеей лёгкого инструмента).
**метаданные** — редактор тегов для mp3/flac/wav/m4a/ogg/opus: название, исполнитель,
альбом, год, номер трека, обложка. есть массовый режим — применить одного исполнителя/
альбом/обложку сразу на несколько файлов.
**скрипты** — форматирование `.py` (black) и `.lua` (stylua, качается сам при первом
использовании), подсветка синтаксических ошибок.
---
## что нужно
- python 3.10+
- ffmpeg — уже лежит в `ffmpeg\`, ничего доп. качать не надо
## установка
```
pip install -r requirements.txt
```
## запуск
```
python app.py
```
или просто дважды кликнуть `start.bat`. браузер откроется сам на
`http://127.0.0.1:5000`. порт меняется через `PORT=8080 python app.py`.
---
## форматы загрузчика
| # | формат | качество |
|---|--------|----------|
| 1 | MP3 | 320 / 256 / 192 / 128 kbps |
| 2 | FLAC | lossless |
| 3 | WAV | lossless |
| 4 | M4A | best |
| 5 | ALAC | lossless |
| 6 | OGG | best |
| 7 | OPUS | best |
| 8 | MP4 | видео + аудио |
---
## структура
```
app.py — flask entrypoint, сам открывает браузер
backend/
downloader.py — detect_platform, download_track (youtube/spotify/apple/yandex/vk)
jobs.py — фоновые задачи скачивания + прогресс
search.py — поиск по youtube/soundcloud/apple music
history.py — история скачанных треков (data/history.json)
converter.py — картинки/pdf/pptx/аудио/видео
metadata.py — чтение/запись тегов+обложки
scripts_format.py — black + stylua
templates/index.html
static/css/style.css
static/js/app.js
ffmpeg/ — ffmpeg.exe, ffprobe.exe
bin/ — сюда качается stylua.exe при первом форматировании lua
data/history.json
downloads/ uploads/ outputs/
```
---
UDP: часть про поиск/скачивание работает через публичные api и youtube — если
ссылка "не режимного" сервиса не отдаёт данные без логина, так и напишет в ошибке.
pptx рендер слайдов — эксперимент на будущее, если приспичит тащить libreoffice.
made by savsis with ♥