ONI - Anime Streaming Client
A modern rewrite of jerry in Go with a beautiful TUI powered by Bubble Tea.
Features
- ๐จ Beautiful Terminal UI - Interactive menus powered by Bubble Tea and Lipgloss
- ๐ Tab-Based Interface - Navigate between anime categories with arrow keys
- ๐ Instant Loading - Cached lists load instantly on subsequent visits
- ๐ Smart Scrolling - Clean 5-item view with automatic scroll indicators
- ๐ Async Refresh - Background updates without blocking UI
- ๐บ Multiple Providers - Support for allanime, aniwatch, yugen, hdrezka, and aniworld
- ๐ AniList Integration - Sync your watch progress, scores, and status
- ๐ฎ Discord Presence - Show what you're watching on Discord
- ๐ฌ Multiple Players - Support for mpv, vlc, and iina
- ๐ Watch History - Resume from where you left off
- โ๏ธ Easy Configuration - INI-based config at
~/.oni/config.ini
Installation
Prerequisites
- Go 1.21 or higher
- A video player (mpv, vlc, or iina)
- AniList account (optional, for progress tracking)
Build from Source
git clone https://github.com/pranshuj73/oni
cd oni
go build -o oni
sudo mv oni /usr/local/bin/
Usage
Interactive Mode
Simply run oni to start the interactive TUI:
oni
Command Line Options
oni [options] [query]
Options:
-c Continue watching from list
-e Edit configuration
-d Enable Discord presence
-h Show help
-q <quality> Video quality (e.g., 1080, 720)
-v Show version
-w <provider> Provider (allanime, aniwatch, yugen, hdrezka, aniworld)
--sub-or-dub Audio type (sub, dub)
Examples
# Start interactive menu
oni
# Continue watching from your list
oni -c
# Search and watch anime in 720p
oni -q 720 one piece
# Use a specific provider
oni -w aniwatch demon slayer
# Enable Discord presence
oni -d naruto
Configuration
Configuration is stored at ~/.oni/config.ini. You can edit it directly or use the built-in editor:
oni -e
Default Configuration
[player]
player = mpv
player_arguments =
[provider]
provider = allanime
download_dir =
quality = 1080
[anilist]
no_anilist = false
score_on_completion = false
[ui]
use_external_menu = false
image_preview = false
json_output = false
[playback]
sub_or_dub = sub
subs_language = english
[discord]
discord_presence = false
[advanced]
show_adult_content = false
AniList Setup
- Run oni for the first time
- You'll be prompted to visit: https://anilist.co/api/v2/oauth/authorize?client_id=9857&response_type=token
- Copy the access token and paste it into the terminal
- Your token will be saved at
~/.local/share/jerry/anilist_token.txt
Project Structure
oni/
โโโ main.go # Entry point and app orchestration
โโโ config/ # Configuration management
โ โโโ config.go # INI file handling
โ โโโ types.go # Config structures
โโโ anilist/ # AniList API integration
โ โโโ client.go # GraphQL client
โ โโโ auth.go # Token management
โ โโโ queries.go # GraphQL queries
โ โโโ types.go # Response types
โโโ providers/ # Anime providers
โ โโโ provider.go # Provider interface
โ โโโ allanime.go # AllAnime scraper
โ โโโ aniwatch.go # Aniwatch scraper
โ โโโ yugen.go # Yugen scraper
โ โโโ hdrezka.go # HDRezka scraper
โ โโโ aniworld.go # Aniworld scraper
โโโ player/ # Video player integration
โ โโโ player.go # Player interface
โ โโโ mpv.go # MPV implementation
โ โโโ vlc.go # VLC implementation
โ โโโ history.go # Watch history tracking
โโโ discord/ # Discord Rich Presence
โ โโโ presence.go # Presence management
โโโ ui/ # Bubble Tea UI components
โโโ main_menu.go # Main menu
โโโ anime_search.go # Search interface
โโโ anime_list.go # List viewer
โโโ episode_select.go # Episode selector
โโโ update_progress.go # Progress updater
โโโ config_editor.go # Config editor
โโโ styles.go # UI styling
Providers
AllAnime (Default)
- Fast and reliable
- Good quality streams
- Extensive library
Aniwatch
- High-quality streams
- Multiple subtitle options
- Good for popular anime
Yugen
- Alternative source
- Decent quality
- Good uptime
HDRezka
- Russian-focused provider
- Multiple quality options
- Full decryption support implemented
Aniworld
- German provider
- Good selection
- M3U8 streams
Data Storage
- Config:
~/.oni/config.ini
- AniList Token:
~/.local/share/jerry/anilist_token.txt
- User ID:
~/.local/share/jerry/anilist_user_id.txt
- Watch History:
~/.local/share/jerry/jerry_history.txt
Keyboard Navigation
Main Menu
โ/โ or j/k - Navigate
Enter - Select
q - Quit
Anime List (Tab-Based)
โ/โ or h/l - Switch between tabs (categories)
โ/โ or j/k - Navigate within list (auto-scrolls)
Enter - Select anime
r - Manually refresh list
Esc - Return to main menu
Performance Note: Lists show max 5 items with scroll indicators. First load caches results - subsequent visits are instant!
Search/List
โ/โ or j/k - Navigate
Enter - Select
Backspace - Go back
Esc - Return to main menu
Config Editor
โ/โ or j/k - Navigate
Enter - Edit value
s - Save configuration
Esc - Return to main menu
Pending Tasks
- Download Anime Menu - Create a download menu that allows searching for anime to download
- Download Functionality - Implement download functionality for single episodes and episode ranges
Limitations
- Image preview in TUI is not yet implemented
- Resume from history shows a simple list (could be improved with better UI)
Credits
License
This project maintains compatibility with the original jerry license.
Contributing
Contributions are welcome! Please feel free to submit issues or pull requests.
Disclaimer
This tool is for educational purposes only. Please support official anime streaming services.