aboutsummarylogtreecommitdiffstats
path: root/README.md
blob: 7316e0818a2c13e6a3f4a178b6f43cd5497a0892 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# yt-nerddl

A sleek, hassle-free YouTube downloader built as a **wrapper around `yt-dlp`**, with a clean, interactive inline selector and a Deno-inspired loading bar. Designed for anyone who wants a straightforward way to download audio/video from YouTube without fussing with complex commands.

> Note: only works for YouTube and YouTube Music (for now at least)

---

## Features

- ✅ **Audio & Video downloads**  
  - `-a / --audio` → download audio only (mp3)  
  - Video downloads default to mp4  

- ✅ **Interactive quality selection**  
  - `-q / --quality` → pick video or audio quality via an inline arrow-menu  

- ✅ **Highest quality mode**  
  - `-H / --high` → automatically grab the best available video  

- ✅ **Custom output folder**  
  - `-o / --output <directory>` → choose where to save downloads (default: `~/Videos/Youtube`)  

- ✅ **Playlist support**  
  - Prompts if the URL contains a playlist and allows downloading all videos  

- ✅ **Progress bar inspired by Deno**  
  - Shows percentage, downloaded size, total size, speed, ETA  

- ✅ **Handles YouTube Music URLs**  
  - Normalizes music URLs to regular YouTube format  

- ✅ **Automatic MP3 conversion** (for audio mode)  
  - Supports bitrate selection: 320, 256, 192, 128 kbps, or Best  

- ✅ **Minimal and clean console output**  
  - Color-coded status messages for errors, selections, and progress  

- ✅ **Interrupt handling**  
  - Ctrl+C gracefully cancels downloads at any stage  

---

## Installation

### Dependencies

Make sure you have these installed:

- Python 3.11+  
- `yt-dlp` (`pip install yt-dlp`)  
- `ffmpeg` (for audio extraction/conversion)
- NerdFont (for glyphs to appear correctly)
- Linux terminal (with ANSI color support) 

### From GitHub

```bash
git clone https://github.com/<your-username>/yt-nerddl.git
cd yt-nerddl
chmod +x yt-nerddl.py
sudo mv yt-nerddl.py /usr/local/bin/yt-nerddl
````

### From AUR (when available)

```bash
yay -S yt-nerddl
```

> After installation, you can run it simply with:

```bash
yt-nerddl [options] <youtube-url> 
```

---

## Usage

```bash
yt-nerddl <url> [options]
```

**Options:**

| Option               | Description                                          |
| -------------------- | ---------------------------------------------------- |
| `-a, --audio`        | Download audio only (mp3)                            |
| `-H, --high`         | Fetch highest available quality                      |
| `-o, --output <dir>` | Specify output directory (default: ~/Videos/Youtube) |
| `-q, --quality`      | Interactive quality selector                         |

**Example:**

* Download audio only at best quality:

```bash
yt-nerddl -a -q https://www.youtube.com/watch?v=xxxx
```

* Download a playlist in the highest available quality:

```bash
yt-nerddl -H https://www.youtube.com/playlist?list=xxxx
```

---

## Philosophy

`yt-nerddl` is meant to be **a nice-looking, hassle-free YouTube downloader**. The idea is to make downloading content intuitive, quick, and visually clear without writing complex `yt-dlp` commands. The **progress bar** and inline selector are inspired by Deno’s clean aesthetic.

It’s essentially `yt-dlp`, but with a friendly, interactive wrapper that feels modern, fast, and minimal.

---

## Contribution

* Contributions welcome!
* Open a PR or submit issues for bugs/features.
* Keep the progress bar clean, colors readable, and UX smooth.