anichi 2.6.0 → 2.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +385 -132
- package/dist/index.js +1 -1
- package/dist/player.js +1 -1
- package/dist/player.js.map +1 -1
- package/dist/ui.js +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,15 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
<div align="center">
|
|
4
4
|
|
|
5
|
-

|
|
6
|
+

|
|
7
7
|

|
|
8
|
+

|
|
8
9
|
|
|
9
|
-
**Streaming Anime
|
|
10
|
+
**A Modern, Interactive CLI for Discovering, Streaming, and Managing Anime Directly from the Terminal**
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
Built by Aditya K.
|
|
12
13
|
|
|
13
|
-
[Features](#-features) • [Installation](#-installation) • [Usage](#-usage) • [
|
|
14
|
+
[Features](#-features) • [Installation](#-installation) • [Usage](#-usage) • [Development](#-development) • [License](#-license)
|
|
14
15
|
|
|
15
16
|
</div>
|
|
16
17
|
|
|
@@ -18,61 +19,97 @@ Your modern, feature-rich, and interactive command-line tool for Anime streaming
|
|
|
18
19
|
|
|
19
20
|
## 🌟 Features
|
|
20
21
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
Anichi is built to provide a premium experience right from your terminal.
|
|
22
|
+
Anichi brings the anime streaming experience to your terminal with a modern, interactive interface:
|
|
24
23
|
|
|
25
|
-
- **🎨 Modern UI**: Gradient banners,
|
|
24
|
+
- **🎨 Premium Modern UI**: Gradient banners, elegant tables, ASCII art banners, and vibrant color themes powered by `chalk`, `boxen`, `figlet`, and `gradient-string`
|
|
26
25
|
- **📂 Comprehensive Browsing**:
|
|
27
|
-
- **Ongoing
|
|
28
|
-
- **
|
|
29
|
-
- **
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
26
|
+
- **Ongoing Anime**: Browse currently airing anime with release day and latest episode information
|
|
27
|
+
- **Completed Anime**: Explore finished series with scores and ratings
|
|
28
|
+
- **Popular Anime**: Discover trending and popular titles
|
|
29
|
+
- **Search by Genre**: Filter anime by categories (Action, Adventure, Comedy, Drama, etc.)
|
|
30
|
+
- **Anime Schedule**: View broadcast schedule by day of the week
|
|
31
|
+
- **🔍 Smart Search**: Instantly search for anime by title with detailed metadata
|
|
32
|
+
- **📺 Streaming**: Play episodes directly using MPV or fallback to browser playback
|
|
33
|
+
- **⬇️ Downloads**:
|
|
34
|
+
- Single episode downloads with multiple quality options
|
|
35
|
+
- Batch downloads with format, quality, and provider selection
|
|
36
|
+
- **⚡ Performance**: Lightning-fast caching system to eliminate redundant API calls
|
|
37
|
+
- **⚙️ Configuration**: Easily customize player paths, arguments, and playback preferences
|
|
38
|
+
- **🔄 Cache Management**: Clear cached data on demand
|
|
39
|
+
- **📊 Pagination Support**: Navigate through large lists with ease
|
|
35
40
|
|
|
36
41
|
---
|
|
37
42
|
|
|
38
43
|
## 🛠️ Tech Stack
|
|
39
44
|
|
|
40
|
-
|
|
45
|
+
Anichi is built with modern, battle-tested libraries:
|
|
41
46
|
|
|
42
47
|
- **Language**: TypeScript 5.x
|
|
43
|
-
- **Runtime**: Node.js
|
|
44
|
-
- **CLI Framework**: Commander.js
|
|
45
|
-
- **HTTP Client**: Axios
|
|
46
|
-
- **Styling
|
|
47
|
-
- `chalk`
|
|
48
|
-
- `cli-table3`
|
|
49
|
-
- `boxen`
|
|
50
|
-
- `gradient-string`
|
|
51
|
-
- `figlet`
|
|
52
|
-
-
|
|
53
|
-
- **
|
|
54
|
-
- `
|
|
55
|
-
- `
|
|
56
|
-
-
|
|
57
|
-
- **
|
|
48
|
+
- **Runtime**: Node.js 18+
|
|
49
|
+
- **CLI Framework**: Commander.js 11.x
|
|
50
|
+
- **HTTP Client**: Axios 1.6.x
|
|
51
|
+
- **UI/Styling**:
|
|
52
|
+
- `chalk` - Terminal color styling
|
|
53
|
+
- `cli-table3` - Data table rendering
|
|
54
|
+
- `boxen` - Text boxes with borders
|
|
55
|
+
- `gradient-string` - Gradient text effects
|
|
56
|
+
- `figlet` - ASCII art banners
|
|
57
|
+
- `chalk-animation` - Animated text
|
|
58
|
+
- **User Interaction**:
|
|
59
|
+
- `inquirer` - Interactive CLI prompts
|
|
60
|
+
- `terminal-kit` - Terminal utilities
|
|
61
|
+
- `readline` - Command-line input
|
|
62
|
+
- **Performance**:
|
|
63
|
+
- `node-cache` - Fast in-memory caching
|
|
64
|
+
- `log-symbols` - Standard symbols (✓, ✗, ℹ, ⚠)
|
|
65
|
+
- `ora` - Loading spinners
|
|
66
|
+
- **Utilities**:
|
|
67
|
+
- `open` - Cross-platform URL/file opening
|
|
68
|
+
- `update-notifier` - Update notifications
|
|
69
|
+
- `string-width` - Text width calculation
|
|
70
|
+
- `wrap-ansi` - ANSI text wrapping
|
|
71
|
+
- **Cross-Platform**: Optimized for Windows, macOS, and Linux
|
|
58
72
|
|
|
59
73
|
---
|
|
60
74
|
|
|
61
75
|
## 📦 Supported Video Players
|
|
62
76
|
|
|
63
|
-
Anichi
|
|
77
|
+
Anichi automatically detects and uses the best available video player on your system:
|
|
78
|
+
|
|
79
|
+
### Primary Player: MPV (Recommended)
|
|
80
|
+
|
|
81
|
+
**Why MPV?** Lightweight, supports virtually all formats, highly customizable, and perfect for streaming.
|
|
82
|
+
|
|
83
|
+
**Installation Locations:**
|
|
84
|
+
|
|
85
|
+
- **Windows**:
|
|
86
|
+
- Scoop: `~/scoop/apps/mpv/current/mpv.exe`
|
|
87
|
+
- Program Files: `C:\Program Files\mpv\mpv.exe`
|
|
88
|
+
- Program Files (x86): `C:\Program Files (x86)\mpv\mpv.exe`
|
|
89
|
+
- Chocolatey: `C:\ProgramData\chocolatey\bin\mpvio.install\tools\mpv.exe`
|
|
90
|
+
- AppData: `%APPDATA%\Local\Programs\mpv\mpv.exe`
|
|
91
|
+
- **macOS**:
|
|
92
|
+
- Homebrew: `/opt/homebrew/bin/mpv`
|
|
93
|
+
- MacPorts: `/opt/local/bin/mpv`
|
|
94
|
+
- App Bundle: `/Applications/mpv.app/Contents/MacOS/mpv`
|
|
95
|
+
- **Linux**:
|
|
96
|
+
- Snap: `/snap/bin/mpv`
|
|
97
|
+
- Flatpak: `/var/lib/flatpak/exports/bin/io.github.mpv.mpv`
|
|
98
|
+
- Package Manager: `/usr/bin/mpv` or `/usr/local/bin/mpv`
|
|
99
|
+
|
|
100
|
+
### Fallback: Browser
|
|
101
|
+
|
|
102
|
+
If no compatible player is found, streams automatically open in your default web browser.
|
|
64
103
|
|
|
65
|
-
|
|
66
|
-
- Windows: `mpv.exe`
|
|
67
|
-
- Linux/macOS: `mpv`
|
|
68
|
-
- _Why? Lightweight, supports almost all formats, highly customizable._
|
|
69
|
-
2. **VLC Media Player** (Fallback)
|
|
70
|
-
- Windows: `vlc.exe` (or `vlc`)
|
|
71
|
-
- Linux: `vlc`
|
|
72
|
-
- macOS: `VLC.app`
|
|
73
|
-
- _Why? Very common, supports almost all formats._
|
|
104
|
+
### Important: yt-dlp Requirement
|
|
74
105
|
|
|
75
|
-
|
|
106
|
+
MPV requires **yt-dlp** to extract direct streaming URLs from various sources. Without it, some streams may fail to play.
|
|
107
|
+
|
|
108
|
+
**Install yt-dlp:**
|
|
109
|
+
|
|
110
|
+
- Windows: `choco install yt-dlp`
|
|
111
|
+
- macOS: `brew install yt-dlp`
|
|
112
|
+
- Linux: `sudo apt install yt-dlp` or `sudo pacman -S yt-dlp`
|
|
76
113
|
|
|
77
114
|
---
|
|
78
115
|
|
|
@@ -80,216 +117,432 @@ If no player is found, the app will automatically open the stream in your defaul
|
|
|
80
117
|
|
|
81
118
|
### Prerequisites
|
|
82
119
|
|
|
83
|
-
|
|
120
|
+
- **Node.js 18.0.0** or higher
|
|
121
|
+
- **npm** or **yarn** package manager
|
|
122
|
+
- **MPV player** (recommended) - See [Supported Video Players](#-supported-video-players)
|
|
123
|
+
- **yt-dlp** (required for streaming) - See [Supported Video Players](#-supported-video-players)
|
|
84
124
|
|
|
85
|
-
### Install Globally
|
|
86
|
-
|
|
87
|
-
To run `anichi` from anywhere in your terminal, install it globally using npm:
|
|
125
|
+
### Install Globally via NPM
|
|
88
126
|
|
|
89
127
|
```bash
|
|
90
128
|
npm install -g anichi
|
|
91
129
|
```
|
|
92
130
|
|
|
93
|
-
|
|
131
|
+
### Install Globally via Yarn
|
|
94
132
|
|
|
95
133
|
```bash
|
|
96
134
|
yarn global add anichi
|
|
97
135
|
```
|
|
98
136
|
|
|
137
|
+
### Verify Installation
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
anichi --version
|
|
141
|
+
# Output: 2.6.1
|
|
142
|
+
|
|
143
|
+
anichi --help
|
|
144
|
+
# Shows available commands
|
|
145
|
+
```
|
|
146
|
+
|
|
99
147
|
---
|
|
100
148
|
|
|
101
149
|
## 💻 Usage
|
|
102
150
|
|
|
103
151
|
### Launch Interactive Menu
|
|
104
152
|
|
|
105
|
-
|
|
153
|
+
Start the application with:
|
|
106
154
|
|
|
107
155
|
```bash
|
|
108
|
-
|
|
156
|
+
an home
|
|
109
157
|
```
|
|
110
158
|
|
|
111
|
-
|
|
159
|
+
or
|
|
112
160
|
|
|
113
161
|
```bash
|
|
114
162
|
anichi home
|
|
115
163
|
```
|
|
116
164
|
|
|
117
|
-
|
|
165
|
+
This launches the main menu with beautiful ASCII banners and gradient text. Navigate using number inputs (1-7) or keywords.
|
|
118
166
|
|
|
119
|
-
|
|
167
|
+
### Menu Options
|
|
120
168
|
|
|
121
|
-
|
|
169
|
+
#### 1. 🔄 Ongoing Anime
|
|
122
170
|
|
|
123
|
-
|
|
171
|
+
Browse currently airing anime series:
|
|
124
172
|
|
|
125
|
-
|
|
173
|
+
- View release day and latest episode information
|
|
174
|
+
- Pagination support (25 items per page)
|
|
175
|
+
- Navigate: `n` for next, `p` for previous
|
|
176
|
+
- Select anime by number to view details and streaming options
|
|
126
177
|
|
|
127
|
-
####
|
|
178
|
+
#### 2. ✅ Completed Anime
|
|
128
179
|
|
|
129
|
-
|
|
180
|
+
Explore finished anime series:
|
|
130
181
|
|
|
131
|
-
|
|
182
|
+
- View completion status and ratings/scores
|
|
183
|
+
- Pagination support
|
|
184
|
+
- Access to all completed episodes
|
|
132
185
|
|
|
133
|
-
####
|
|
186
|
+
#### 3. 🌟 Popular Anime
|
|
134
187
|
|
|
135
|
-
|
|
188
|
+
Discover trending and popular titles:
|
|
136
189
|
|
|
137
|
-
|
|
190
|
+
- See what the community is watching
|
|
191
|
+
- Ratings and current status
|
|
192
|
+
- Pagination support
|
|
138
193
|
|
|
139
|
-
|
|
194
|
+
#### 4. 🔍 Search Anime
|
|
140
195
|
|
|
141
|
-
|
|
142
|
-
- **By Name**: Type "Senin", "Selasa", or "Minggu" to filter.
|
|
196
|
+
Find anime by title:
|
|
143
197
|
|
|
144
|
-
|
|
198
|
+
```bash
|
|
199
|
+
# When prompted, enter anime title
|
|
200
|
+
Enter keyword: Naruto
|
|
201
|
+
```
|
|
145
202
|
|
|
146
|
-
|
|
203
|
+
- Displays all matching results
|
|
204
|
+
- Shows status and score
|
|
205
|
+
- Select to view details
|
|
147
206
|
|
|
148
|
-
|
|
207
|
+
#### 5. 🎬 Search by Genre
|
|
149
208
|
|
|
150
|
-
|
|
209
|
+
Filter anime by category:
|
|
151
210
|
|
|
152
|
-
|
|
211
|
+
- Browse available genres (Action, Adventure, Comedy, Drama, etc.)
|
|
212
|
+
- Select genre to view paginated anime list
|
|
213
|
+
- Search within genre results
|
|
153
214
|
|
|
154
|
-
####
|
|
215
|
+
#### 6. 📅 Schedule Anime
|
|
155
216
|
|
|
156
|
-
|
|
217
|
+
View anime broadcast schedule:
|
|
157
218
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
```
|
|
219
|
+
- Organized by day of the week (Senin - Minggu)
|
|
220
|
+
- Shows airing time when available
|
|
161
221
|
|
|
162
|
-
####
|
|
222
|
+
#### 7. ❓ FAQ
|
|
163
223
|
|
|
164
|
-
|
|
224
|
+
Frequently asked questions:
|
|
225
|
+
|
|
226
|
+
- Player installation guides
|
|
227
|
+
- Troubleshooting common issues
|
|
228
|
+
- Performance tips
|
|
229
|
+
- Command reference
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
### 📺 Episode Viewing & Streaming
|
|
234
|
+
|
|
235
|
+
When viewing an anime's episode list, you have several options:
|
|
165
236
|
|
|
166
|
-
```
|
|
167
|
-
|
|
237
|
+
```
|
|
238
|
+
Perintah:
|
|
239
|
+
• [nomor] atau 'latest' - Watch episode
|
|
240
|
+
• 'b' atau 'batch' - Download entire series (if available)
|
|
241
|
+
• 'd' atau 'download' - Download single episode
|
|
242
|
+
• 'back' - Return to anime list
|
|
168
243
|
```
|
|
169
244
|
|
|
170
|
-
|
|
245
|
+
**Example - Watch Episode:**
|
|
171
246
|
|
|
172
|
-
|
|
247
|
+
```
|
|
248
|
+
Peintah: 10
|
|
249
|
+
# Starts streaming episode 10 with MPV player
|
|
173
250
|
|
|
174
|
-
|
|
251
|
+
Peintah: latest
|
|
252
|
+
# Streams the newest episode
|
|
253
|
+
```
|
|
175
254
|
|
|
176
|
-
|
|
255
|
+
**Streaming Process:**
|
|
177
256
|
|
|
178
|
-
|
|
257
|
+
1. Select episode number
|
|
258
|
+
2. Choose video quality
|
|
259
|
+
3. MPV player launches automatically
|
|
179
260
|
|
|
180
|
-
|
|
261
|
+
### 📼 Episode Downloading
|
|
181
262
|
|
|
182
|
-
|
|
263
|
+
Download episodes for offline viewing:
|
|
183
264
|
|
|
184
|
-
```bash
|
|
185
|
-
choco install yt-dlp
|
|
186
265
|
```
|
|
266
|
+
Peintah: d
|
|
267
|
+
# Shows available qualities with file sizes
|
|
268
|
+
# Select quality → Select provider → Opens download link in browser
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### 📦 Batch Downloads
|
|
187
272
|
|
|
188
|
-
|
|
273
|
+
Download entire anime series (if available):
|
|
189
274
|
|
|
190
|
-
|
|
275
|
+
```
|
|
276
|
+
Peintah: b
|
|
277
|
+
# Select format (720p, 1080p, etc.)
|
|
278
|
+
# Select quality within format
|
|
279
|
+
# Select provider (drive, mega, etc.)
|
|
280
|
+
# Opens download link in browser
|
|
281
|
+
```
|
|
191
282
|
|
|
192
283
|
---
|
|
193
284
|
|
|
194
|
-
### Commands
|
|
285
|
+
### ⌨️ Command Line Commands
|
|
195
286
|
|
|
196
|
-
####
|
|
287
|
+
#### Direct Episode Playback
|
|
197
288
|
|
|
198
|
-
Skip the menu and play a specific episode immediately
|
|
289
|
+
Skip the menu and play a specific episode immediately:
|
|
199
290
|
|
|
200
291
|
```bash
|
|
201
292
|
anichi play <slug> <episode>
|
|
202
293
|
```
|
|
203
294
|
|
|
204
|
-
|
|
295
|
+
**Example:**
|
|
205
296
|
|
|
206
297
|
```bash
|
|
207
298
|
anichi play one-piece-sub-indo 1070
|
|
299
|
+
# Directly streams One Piece episode 1070
|
|
208
300
|
```
|
|
209
301
|
|
|
210
|
-
**Options
|
|
302
|
+
**Options:**
|
|
211
303
|
|
|
212
|
-
- `-p, --player <path
|
|
213
|
-
- `-a, --args <args
|
|
304
|
+
- `-p, --player <path>` - Custom player path (e.g., `"C:\mpv\mpv.exe"`)
|
|
305
|
+
- `-a, --args <args>` - Player arguments (e.g., `"--fullscreen --no-audio-display"`)
|
|
214
306
|
|
|
215
|
-
|
|
307
|
+
**Example with Options:**
|
|
216
308
|
|
|
217
|
-
|
|
309
|
+
```bash
|
|
310
|
+
anichi play naruto-shippuden-sub-indo 100 -p "C:\mpv\mpv.exe" -a "--fs --loop"
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
#### Configuration Management
|
|
314
|
+
|
|
315
|
+
Manage your playback preferences:
|
|
218
316
|
|
|
219
317
|
```bash
|
|
220
|
-
# View current
|
|
318
|
+
# View current configuration
|
|
221
319
|
anichi config show
|
|
222
320
|
|
|
223
|
-
# Set default player
|
|
224
|
-
anichi config set
|
|
321
|
+
# Set default player path
|
|
322
|
+
anichi config set playerPath "C:\mpv\mpv.exe"
|
|
225
323
|
|
|
226
|
-
# Set default arguments
|
|
227
|
-
anichi config set playerArgs "--
|
|
324
|
+
# Set default player arguments
|
|
325
|
+
anichi config set playerArgs "--fullscreen --no-border"
|
|
228
326
|
```
|
|
229
327
|
|
|
328
|
+
**Configuration File Location:**
|
|
329
|
+
|
|
330
|
+
- Windows: `%APPDATA%\.config\anichi\config.json`
|
|
331
|
+
- macOS/Linux: `~/.config/anichi/config.json`
|
|
332
|
+
|
|
230
333
|
#### Cache Management
|
|
231
334
|
|
|
232
|
-
Clear
|
|
335
|
+
Clear application cache to force fresh data:
|
|
233
336
|
|
|
234
337
|
```bash
|
|
338
|
+
# Clear all cached anime data
|
|
235
339
|
anichi cache clear
|
|
236
340
|
```
|
|
237
341
|
|
|
342
|
+
**When to clear cache:**
|
|
343
|
+
|
|
344
|
+
- Huge data updates from API
|
|
345
|
+
- Outdated episode information
|
|
346
|
+
- To reset pagination
|
|
347
|
+
|
|
238
348
|
---
|
|
239
349
|
|
|
240
|
-
|
|
350
|
+
### 🛠️ Setup Guide: MPV + yt-dlp
|
|
351
|
+
|
|
352
|
+
#### Windows (Recommended: Chocolatey)
|
|
353
|
+
|
|
354
|
+
**Step 1: Install Chocolatey** (if not already installed)
|
|
355
|
+
|
|
356
|
+
Open PowerShell as Administrator and run:
|
|
357
|
+
|
|
358
|
+
```powershell
|
|
359
|
+
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
**Step 2: Install MPV and yt-dlp**
|
|
363
|
+
|
|
364
|
+
```powershell
|
|
365
|
+
choco install mpv yt-dlp -y
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
**Step 3: Verify Installation**
|
|
369
|
+
|
|
370
|
+
```powershell
|
|
371
|
+
mpv --version
|
|
372
|
+
yt-dlp --version
|
|
373
|
+
```
|
|
241
374
|
|
|
242
|
-
|
|
375
|
+
#### macOS (Homebrew)
|
|
376
|
+
|
|
377
|
+
```bash
|
|
378
|
+
# Install Homebrew (if not installed)
|
|
379
|
+
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|
380
|
+
|
|
381
|
+
# Install MPV and yt-dlp
|
|
382
|
+
brew install mpv yt-dlp
|
|
383
|
+
|
|
384
|
+
# Verify
|
|
385
|
+
mpv --version
|
|
386
|
+
yt-dlp --version
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
#### Linux (Ubuntu/Debian)
|
|
390
|
+
|
|
391
|
+
```bash
|
|
392
|
+
# Update package manager
|
|
393
|
+
sudo apt update
|
|
394
|
+
|
|
395
|
+
# Install MPV and yt-dlp
|
|
396
|
+
sudo apt install mpv yt-dlp -y
|
|
397
|
+
|
|
398
|
+
# Verify
|
|
399
|
+
mpv --version
|
|
400
|
+
yt-dlp --version
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
---
|
|
404
|
+
|
|
405
|
+
## 🐛 Troubleshooting
|
|
406
|
+
|
|
407
|
+
### "MPV not found" Error
|
|
408
|
+
|
|
409
|
+
**Solution 1: Install MPV**
|
|
410
|
+
|
|
411
|
+
- Windows: `choco install mpv`
|
|
412
|
+
- macOS: `brew install mpv`
|
|
413
|
+
- Linux: `sudo apt install mpv`
|
|
414
|
+
|
|
415
|
+
**Solution 2: Set Custom Path**
|
|
416
|
+
|
|
417
|
+
```bash
|
|
418
|
+
anichi config set playerPath "C:\path\to\mpv.exe"
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
### Stream won't load in MPV
|
|
422
|
+
|
|
423
|
+
**Common Cause:** Missing yt-dlp
|
|
424
|
+
|
|
425
|
+
**Solution:**
|
|
426
|
+
|
|
427
|
+
- Windows: `choco install yt-dlp`
|
|
428
|
+
- macOS: `brew install yt-dlp`
|
|
429
|
+
- Linux: `sudo apt install yt-dlp`
|
|
430
|
+
|
|
431
|
+
### Rate Limiting (Too Many Requests)
|
|
432
|
+
|
|
433
|
+
Anichi implements intelligent rate limiting to respect the API:
|
|
434
|
+
|
|
435
|
+
- Minimum 600ms between requests
|
|
436
|
+
- Automatic retry with exponential backoff
|
|
437
|
+
- Integrated caching to minimize requests
|
|
438
|
+
|
|
439
|
+
**Workaround:** Don't rapidly navigate between sections
|
|
440
|
+
|
|
441
|
+
### Pagination Issues
|
|
442
|
+
|
|
443
|
+
If pagination seems stuck:
|
|
444
|
+
|
|
445
|
+
```bash
|
|
446
|
+
anichi cache clear
|
|
447
|
+
```
|
|
448
|
+
|
|
449
|
+
---
|
|
450
|
+
|
|
451
|
+
## 📁 Project Structure
|
|
243
452
|
|
|
244
453
|
```
|
|
245
454
|
anichi/
|
|
246
455
|
├── src/
|
|
247
|
-
│ ├── index.ts # Main logic
|
|
248
|
-
│ ├── api.ts # Axios client
|
|
249
|
-
│ ├── ui.ts #
|
|
250
|
-
│ ├──
|
|
251
|
-
│ ├──
|
|
252
|
-
│ └──
|
|
253
|
-
├──
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
456
|
+
│ ├── index.ts # Main application logic, CLI commands
|
|
457
|
+
│ ├── api.ts # Axios HTTP client, API integration, caching
|
|
458
|
+
│ ├── ui.ts # Terminal UI, tables, colors, formatting
|
|
459
|
+
│ ├── player.ts # External player detection & management
|
|
460
|
+
│ ├── config.ts # Configuration file handling
|
|
461
|
+
│ └── types.ts # TypeScript interfaces & type definitions
|
|
462
|
+
├── bin/
|
|
463
|
+
│ └── anichi # CLI entry point
|
|
464
|
+
├── dist/ # Compiled JavaScript (after build)
|
|
465
|
+
├── package.json # Dependencies & scripts
|
|
466
|
+
├── tsconfig.json # TypeScript configuration
|
|
467
|
+
├── jest.config.js # Test configuration
|
|
468
|
+
├── README.md # This file
|
|
469
|
+
├── CHANGELOG.md # Version history
|
|
470
|
+
└── LICENSE # MIT License
|
|
257
471
|
```
|
|
258
472
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
- `npm run build`: Compiles TypeScript to JavaScript (`dist/`).
|
|
262
|
-
- `npm run test`: (If configured) Run test suites.
|
|
263
|
-
- `npm run lint`: (If configured) Check code style.
|
|
473
|
+
---
|
|
264
474
|
|
|
265
|
-
|
|
475
|
+
## 🛠️ Development
|
|
266
476
|
|
|
267
|
-
|
|
477
|
+
### Local Development Setup
|
|
268
478
|
|
|
269
479
|
```bash
|
|
270
|
-
|
|
480
|
+
# Clone repository
|
|
481
|
+
git clone https://github.com/yourusername/anichi.git
|
|
271
482
|
cd anichi
|
|
483
|
+
|
|
484
|
+
# Install dependencies
|
|
272
485
|
npm install
|
|
486
|
+
|
|
487
|
+
# Start development mode (watches for changes)
|
|
488
|
+
npm run dev
|
|
489
|
+
|
|
490
|
+
# Build project
|
|
273
491
|
npm run build
|
|
492
|
+
|
|
493
|
+
# Link globally for testing
|
|
274
494
|
npm link
|
|
495
|
+
|
|
496
|
+
# Test the CLI
|
|
497
|
+
anichi home
|
|
498
|
+
```
|
|
499
|
+
|
|
500
|
+
### Available NPM Scripts
|
|
501
|
+
|
|
502
|
+
```bash
|
|
503
|
+
npm run build # Compile TypeScript to JavaScript
|
|
504
|
+
npm run dev # Development mode with auto-reload
|
|
505
|
+
npm run test # Run test suite (if configured)
|
|
506
|
+
npm run lint # Check code style with ESLint
|
|
507
|
+
npm start # Run built application
|
|
275
508
|
```
|
|
276
509
|
|
|
510
|
+
### Code Style
|
|
511
|
+
|
|
512
|
+
- **Language**: TypeScript 5.x
|
|
513
|
+
- **Linter**: ESLint
|
|
514
|
+
- **Format**: Automatic via tsconfig.json
|
|
515
|
+
- **Conventions**: camelCase for variables, PascalCase for types/interfaces
|
|
516
|
+
|
|
277
517
|
---
|
|
278
518
|
|
|
279
|
-
##
|
|
519
|
+
## 📝 License
|
|
280
520
|
|
|
281
|
-
This
|
|
521
|
+
This project is licensed under the **MIT License** - see the [LICENSE](LICENSE) file for details.
|
|
282
522
|
|
|
283
|
-
|
|
523
|
+
---
|
|
524
|
+
|
|
525
|
+
## 🙏 Credits & Acknowledgments
|
|
526
|
+
|
|
527
|
+
- **Created By**: Aditya K.
|
|
528
|
+
- **Email**: adityarabbyoka3@gmail.com
|
|
529
|
+
- **Built With**: TypeScript, Node.js, and amazing open-source libraries
|
|
284
530
|
|
|
285
531
|
---
|
|
286
532
|
|
|
287
|
-
##
|
|
533
|
+
## 📞 Support
|
|
534
|
+
|
|
535
|
+
Need help? Check these resources:
|
|
288
536
|
|
|
289
|
-
|
|
537
|
+
1. **FAQ** - Run `anichi` → Select option 7
|
|
538
|
+
2. **Documentation** - See this README for detailed guides
|
|
290
539
|
|
|
291
540
|
---
|
|
292
541
|
|
|
293
542
|
<div align="center">
|
|
294
|
-
|
|
543
|
+
|
|
544
|
+
### Made with ❤️ and ☕ by Aditya K.
|
|
545
|
+
|
|
546
|
+
⭐ If you found this useful, please give it a star! ⭐
|
|
547
|
+
|
|
295
548
|
</div>
|
package/dist/index.js
CHANGED
|
@@ -13,7 +13,7 @@ const player_1 = require("./player");
|
|
|
13
13
|
const config_1 = require("./config");
|
|
14
14
|
const ui_1 = require("./ui");
|
|
15
15
|
const program = new commander_1.Command();
|
|
16
|
-
program.name("anichi").description("Anime streaming for CLI").version("2.6.
|
|
16
|
+
program.name("anichi").description("Anime streaming for CLI").version("2.6.1");
|
|
17
17
|
const ask = (query) => {
|
|
18
18
|
const rl = readline_1.default.createInterface({
|
|
19
19
|
input: process.stdin,
|
package/dist/player.js
CHANGED
package/dist/player.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"player.js","sourceRoot":"","sources":["../src/player.ts"],"names":[],"mappings":";;;;;;AAAA,iDAAoC;AACpC,gDAAwB;AACxB,6BAA4B;AAC5B,4CAAoB;AACpB,gDAAwB;AACxB,4CAAoB;AAEpB,MAAM,cAAc,GAAG;IACrB,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,KAAK;CACb,CAAC;AAEF,MAAM,gBAAgB,GAAG,GAAkB,EAAE;IAC3C,MAAM,KAAK,GAAG;QACZ,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC;QACrE,iCAAiC;QACjC,uCAAuC;QACvC,iEAAiE;QACjE,2CAA2C;QAC3C,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC;QACzE,kBAAkB;KACnB,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,YAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,GAAkB,EAAE;IACvC,MAAM,KAAK,GAAG;QACZ,oBAAoB;QACpB,uBAAuB;QACvB,oBAAoB;QACpB,0CAA0C;QAC1C,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC;KAC/E,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,YAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,GAAkB,EAAE;IACzC,MAAM,KAAK,GAAG;QACZ,eAAe
|
|
1
|
+
{"version":3,"file":"player.js","sourceRoot":"","sources":["../src/player.ts"],"names":[],"mappings":"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"}
|
package/dist/ui.js
CHANGED
|
@@ -31,7 +31,7 @@ const showBanner = () => {
|
|
|
31
31
|
horizontalLayout: "fitted",
|
|
32
32
|
});
|
|
33
33
|
console.log(gradient_string_1.default.pastel.multiline(banner));
|
|
34
|
-
console.log(chalk_1.default.hex(theme.muted)(" v2.6.
|
|
34
|
+
console.log(chalk_1.default.hex(theme.muted)(" v2.6.1 • Streaming Anime CLI By ShDitz\n"));
|
|
35
35
|
console.log(chalk_1.default.hex(theme.muted)(" Butuh bantuan tentang Anichi? ketik 6 untuk 'FAQ'\n"));
|
|
36
36
|
};
|
|
37
37
|
exports.showBanner = showBanner;
|
|
@@ -182,7 +182,7 @@ const printSearchResults = (list) => {
|
|
|
182
182
|
chalk_1.default.bold.white("Status"),
|
|
183
183
|
chalk_1.default.bold.white("Score"),
|
|
184
184
|
],
|
|
185
|
-
colWidths: [5, 50, 15,
|
|
185
|
+
colWidths: [5, 50, 15, 7],
|
|
186
186
|
wordWrap: true,
|
|
187
187
|
style: { head: [], border: [theme.border] },
|
|
188
188
|
});
|