154 lines
3.5 KiB
Markdown
154 lines
3.5 KiB
Markdown
# Setup Guide
|
|
|
|
## Prerequisites
|
|
|
|
### System Requirements
|
|
- Node.js 18+ and npm
|
|
- Python 3.6+ (for yt-dlp)
|
|
- ffmpeg (for audio conversion)
|
|
|
|
### Installing Dependencies
|
|
|
|
#### macOS
|
|
```bash
|
|
# Install yt-dlp
|
|
brew install yt-dlp
|
|
|
|
# Install ffmpeg
|
|
brew install ffmpeg
|
|
```
|
|
|
|
#### Linux (Ubuntu/Debian)
|
|
```bash
|
|
# Install yt-dlp
|
|
pip3 install yt-dlp
|
|
|
|
# Install ffmpeg
|
|
sudo apt-get update
|
|
sudo apt-get install ffmpeg
|
|
```
|
|
|
|
#### Windows
|
|
```bash
|
|
# Install yt-dlp
|
|
pip install yt-dlp
|
|
|
|
# Install ffmpeg
|
|
# Download from https://ffmpeg.org/download.html
|
|
# Add to PATH
|
|
```
|
|
|
|
## Installation
|
|
|
|
1. **Clone the repository**
|
|
```bash
|
|
git clone <repository-url>
|
|
cd Downlink
|
|
```
|
|
|
|
2. **Install npm dependencies**
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
3. **Verify yt-dlp installation**
|
|
```bash
|
|
yt-dlp --version
|
|
```
|
|
|
|
4. **Verify ffmpeg installation**
|
|
```bash
|
|
ffmpeg -version
|
|
```
|
|
|
|
## Running the Application
|
|
|
|
### Development Mode
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
The application will be available at `http://localhost:3000`
|
|
|
|
### Production Build
|
|
```bash
|
|
npm run build
|
|
npm start
|
|
```
|
|
|
|
## Directory Structure
|
|
|
|
```
|
|
Downlink/
|
|
├── app/ # Next.js app directory
|
|
│ ├── api/ # API routes
|
|
│ │ ├── download/ # Download endpoint
|
|
│ │ └── info/ # Video info endpoint
|
|
│ ├── page.tsx # Main page
|
|
│ └── layout.tsx # Root layout
|
|
├── components/ # React components
|
|
│ └── ui/ # shadcn/ui components
|
|
├── lib/ # Utility functions
|
|
│ ├── types.ts # TypeScript types
|
|
│ └── youtube.ts # YouTube download logic
|
|
├── docs/ # Documentation
|
|
├── downloads/ # Temporary download storage (gitignored)
|
|
└── public/
|
|
└── downloads/ # Served download files (gitignored)
|
|
```
|
|
|
|
## Environment Variables
|
|
|
|
Create a `.env.local` file in the project root (copy from `.env.example`):
|
|
|
|
```bash
|
|
# Required if yt-dlp is not in PATH
|
|
YT_DLP_PATH=/path/to/yt-dlp
|
|
|
|
# Optional: FFmpeg path (if not in PATH)
|
|
# FFMPEG_PATH=/path/to/ffmpeg
|
|
```
|
|
|
|
### Available Variables
|
|
|
|
- **`YT_DLP_PATH`** (optional): Full path to yt-dlp executable if not in PATH
|
|
- Example: `YT_DLP_PATH=/Users/jeff/Desktop/yt-dlp_macos`
|
|
- Example: `YT_DLP_PATH=/opt/homebrew/bin/yt-dlp`
|
|
- If not set, the system will look for `yt-dlp` in PATH
|
|
|
|
- **`FFMPEG_PATH`** (optional): Full path to ffmpeg executable if not in PATH
|
|
- Currently not used but reserved for future use
|
|
|
|
### Future Environment Variables
|
|
- `MAX_FILE_SIZE`: Maximum file size limit
|
|
- `CLEANUP_INTERVAL`: File cleanup interval
|
|
- `ALLOWED_DOMAINS`: Allowed video domains
|
|
|
|
## Troubleshooting
|
|
|
|
### yt-dlp not found
|
|
- Ensure yt-dlp is installed and in your PATH
|
|
- Try: `which yt-dlp` to verify installation
|
|
- Reinstall if needed: `pip3 install --upgrade yt-dlp`
|
|
|
|
### ffmpeg not found
|
|
- Ensure ffmpeg is installed and in your PATH
|
|
- Try: `which ffmpeg` to verify installation
|
|
- Audio conversion (MP3, WAV) will fail without ffmpeg
|
|
|
|
### Download fails
|
|
- Check YouTube URL format
|
|
- Verify internet connection
|
|
- Check server logs for detailed error messages
|
|
- Ensure sufficient disk space in downloads directory
|
|
|
|
### Port already in use
|
|
- Change port: `npm run dev -- -p 3001`
|
|
- Or kill process using port 3000
|
|
|
|
## Next Steps
|
|
|
|
- Read [YouTube Downloader Documentation](./youtube-downloader.md)
|
|
- Read [Transcoding Documentation](./transcoding.md)
|
|
- Check [Agent Instructions](./AGENTS.md) for contributing guidelines
|