246 lines
6.2 KiB
Markdown
246 lines
6.2 KiB
Markdown
# 🎵 Quixotic - Music Search Telegram MiniApp
|
||
|
||
Telegram miniapp для поиска и скачивания музыки (в разработке).
|
||
|
||
## ⚠️ Current Status: UNDER DEVELOPMENT
|
||
|
||
**The app is currently non-functional** due to the following issues:
|
||
|
||
- ❌ **YouTube integration abandoned** - Bot detection blocks all anonymous access
|
||
- ❌ **SoundCloud integration failed** - API restrictions and ID mismatch between frontend/backend
|
||
- 🔄 **TypeScript migration completed** - All code converted from JavaScript to TypeScript
|
||
- 🔄 **Alternative sources being evaluated** - Archive.org, Jamendo, Bandcamp under consideration
|
||
|
||
### What Works:
|
||
- ✅ Telegram Bot setup and Web App integration
|
||
- ✅ Frontend interface (search/UI)
|
||
- ✅ SQLite database functionality
|
||
- ✅ Docker deployment setup with Traefik SSL
|
||
- ✅ Full TypeScript support with proper typing
|
||
|
||
### What's Broken:
|
||
- ❌ Music search (no working backend service)
|
||
- ❌ MP3 conversion (depends on working search)
|
||
- ❌ Download functionality
|
||
|
||
## Планируемые возможности
|
||
|
||
- 🔍 Поиск музыки (источник определяется)
|
||
- 🎵 Конвертация в MP3 с помощью FFmpeg
|
||
- 📱 Telegram Web App интерфейс (✅ готов)
|
||
- 💾 SQLite база данных (✅ готова)
|
||
- 📊 История поиска (✅ готова)
|
||
- 🤖 Telegram Bot интеграция (✅ готова)
|
||
|
||
## Установка
|
||
|
||
### 1. Клонирование и установка зависимостей
|
||
|
||
```bash
|
||
git clone <repository-url>
|
||
cd quixotic
|
||
yarn install
|
||
```
|
||
|
||
### 2. Сборка TypeScript проекта
|
||
|
||
```bash
|
||
# Сборка всего проекта (backend + frontend)
|
||
yarn build
|
||
|
||
# Или раздельно:
|
||
yarn build:backend # компилирует src/*.ts в dist/
|
||
yarn build:frontend # компилирует public/script.ts в public/dist/
|
||
```
|
||
|
||
### 3. Установка FFmpeg
|
||
|
||
**macOS:**
|
||
|
||
```bash
|
||
brew install ffmpeg
|
||
```
|
||
|
||
**Ubuntu/Debian:**
|
||
|
||
```bash
|
||
sudo apt update
|
||
sudo apt install ffmpeg
|
||
```
|
||
|
||
**Windows:**
|
||
Скачайте с [ffmpeg.org](https://ffmpeg.org/download.html)
|
||
|
||
### 4. Создание Telegram бота
|
||
|
||
1. Напишите [@BotFather](https://t.me/BotFather) в Telegram
|
||
2. Создайте нового бота: `/newbot`
|
||
3. Получите токен бота
|
||
4. Настройте Web App: `/newapp`
|
||
|
||
### 5. Настройка окружения
|
||
|
||
```bash
|
||
cp .env.example .env
|
||
```
|
||
|
||
Отредактируйте `.env`:
|
||
|
||
```env
|
||
TELEGRAM_BOT_TOKEN=your_bot_token_here
|
||
WEB_APP_URL=https://your-domain.com
|
||
PORT=3000
|
||
```
|
||
|
||
## Запуск
|
||
|
||
⚠️ **Внимание**: Приложение сейчас не работает из-за проблем с интеграцией музыкальных сервисов
|
||
|
||
### Разработка
|
||
|
||
```bash
|
||
# TypeScript разработка с hot reload
|
||
yarn dev
|
||
|
||
# Ручная сборка при необходимости
|
||
yarn build
|
||
```
|
||
|
||
### Продакшн
|
||
|
||
```bash
|
||
# Сборка проекта
|
||
yarn build
|
||
|
||
# Запуск скомпилированного кода
|
||
yarn start
|
||
```
|
||
|
||
### Docker (рекомендуется)
|
||
|
||
```bash
|
||
# С Traefik и SSL
|
||
docker-compose --env-file .env.docker up -d
|
||
|
||
# Простой запуск
|
||
docker-compose up -d
|
||
```
|
||
|
||
## Структура проекта
|
||
|
||
```bash
|
||
quixotic/
|
||
├── src/ # TypeScript исходники
|
||
│ ├── server.ts # Express сервер (главный)
|
||
│ ├── bot.ts # Telegram бот
|
||
│ ├── soundcloud.ts # SoundCloud API (не работает)
|
||
│ └── database.ts # SQLite база данных
|
||
├── dist/ # Скомпилированный JavaScript
|
||
│ ├── server.js # Готовый к запуску сервер
|
||
│ └── ...
|
||
├── public/
|
||
│ ├── index.html # Web App интерфейс
|
||
│ ├── style.css # Стили
|
||
│ ├── script.ts # TypeScript исходник
|
||
│ └── dist/
|
||
│ ├── script.js # Скомпилированный frontend
|
||
│ └── script.js.map
|
||
├── database/ # SQLite файлы
|
||
├── .serena/memories/ # AI память проекта
|
||
├── tsconfig.json # TypeScript конфиг (backend)
|
||
├── tsconfig.frontend.json # TypeScript конфиг (frontend)
|
||
└── package.json
|
||
```
|
||
|
||
## API Endpoints
|
||
|
||
- `POST /api/search` - Поиск видео
|
||
- `POST /api/convert` - Конвертация в MP3
|
||
- `GET /downloads/:filename` - Скачивание файлов
|
||
- `GET /health` - Проверка здоровья
|
||
|
||
## База данных
|
||
|
||
SQLite с таблицами:
|
||
|
||
- `users` - пользователи Telegram
|
||
- `search_history` - история поиска
|
||
- `downloads` - загруженные файлы
|
||
|
||
## Деплой
|
||
|
||
### Heroku
|
||
|
||
1. Установите [Heroku CLI](https://devcenter.heroku.com/articles/heroku-cli)
|
||
2. Создайте приложение:
|
||
|
||
```bash
|
||
heroku create quixotic-app
|
||
```
|
||
|
||
3. Установите buildpacks:
|
||
|
||
```bash
|
||
heroku buildpacks:add --index 1 https://github.com/jonathanong/heroku-buildpack-ffmpeg-latest.git
|
||
heroku buildpacks:add --index 2 heroku/nodejs
|
||
```
|
||
|
||
4. Настройте переменные:
|
||
|
||
```bash
|
||
heroku config:set TELEGRAM_BOT_TOKEN=your_token
|
||
heroku config:set WEB_APP_URL=https://quixotic-app.herokuapp.com
|
||
```
|
||
|
||
5. Деплой:
|
||
|
||
```bash
|
||
git push heroku main
|
||
```
|
||
|
||
### VPS (Ubuntu)
|
||
|
||
```bash
|
||
# Обновление системы
|
||
sudo apt update && sudo apt upgrade -y
|
||
|
||
# Установка Node.js
|
||
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
|
||
sudo apt-get install -y nodejs
|
||
|
||
# Установка FFmpeg
|
||
sudo apt install ffmpeg -y
|
||
|
||
# Клонирование проекта
|
||
git clone <repository-url>
|
||
cd quixotic
|
||
yarn install
|
||
|
||
# Настройка PM2
|
||
sudo npm install -g pm2
|
||
pm2 start src/server.js --name quixotic
|
||
pm2 startup
|
||
pm2 save
|
||
|
||
# Nginx (опционально)
|
||
sudo apt install nginx -y
|
||
# Настройте reverse proxy на порт 3000
|
||
```
|
||
|
||
## Мониторинг
|
||
|
||
```bash
|
||
# Логи сервера
|
||
pm2 logs quixotic
|
||
|
||
# Статус
|
||
pm2 status
|
||
|
||
# Перезапуск
|
||
pm2 restart quixotic
|
||
```
|
||
|
||
## Лицензия
|
||
|
||
MIT License
|