A cli application to stream anime with Anilist integration and Discord RPC written in golang. Works on Windows and Linux
Normal mode:
curd-go-demo.mp4
Rofi with Image preview
curd-go-rofi-demo.mp4
- Stream anime online
- Update anime in Anilist after completion
- Skip anime Intro and Outro
- Skip Filler and Recap episodes
- Discord RPC about the anime
- Rofi support
- Image preview in rofi
- Local anime history to continue from where you left off last time
- Save mpv speed for next episode
- Configurable through config file
Note:
Curd
requiresmpv
,rofi
, andueberzugpp
for Rofi support and image preview. These are included in the installation instructions below for each distribution.
Arch Linux / Manjaro (AUR-based systems)
Using Yay:
yay -Sy curd
or using Paru:
paru -Sy curd
Or, to manually clone and install:
git clone https://aur.archlinux.org/curd.git
cd curd
makepkg -si
sudo pacman -S rofi ueberzugpp
Debian / Ubuntu (and derivatives)
sudo apt update
sudo apt install mpv curl rofi ueberzugpp
curl -Lo curd https://github.com/Wraient/curd/releases/latest/download/curd
chmod +x curd
sudo mv curd /usr/bin/
curd
Fedora Installation
sudo dnf update
sudo dnf install mpv curl rofi ueberzugpp
curl -Lo curd https://github.com/Wraient/curd/releases/latest/download/curd
chmod +x curd
sudo mv curd /usr/bin/
curd
openSUSE Installation
sudo zypper refresh
sudo zypper install mpv curl rofi ueberzugpp
curl -Lo curd https://github.com/Wraient/curd/releases/latest/download/curd
chmod +x curd
sudo mv curd /usr/bin/
curd
NixOS Installation
- Add curd as a flake input, for example:
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
curd = {
url = "github:Wraient/curd";
inputs.nixpkgs.follows = "nixpkgs";
};
}
}
- Install the package, for example:
{inputs, pkgs, ...}: {
environment.systemPackages = [
inputs.curd.packages.${pkgs.system}.default
];
}
Generic Installation
# Install mpv, curl, rofi, and ueberzugpp (required for image preview)
curl -Lo curd https://github.com/Wraient/curd/releases/latest/download/curd
chmod +x curd
sudo mv curd /usr/bin/
curd
Uninstallation
sudo rm /usr/bin/curd
For AUR-based distributions:
yay -R curd
Run curd
with the following options:
curd [options]
Note:
- To use rofi you need rofi and ueberzug installed.
- Rofi .rasi files are at default
~/.local/share/curd/
- You can edit them as you like.
- If there are no rasi files with specific names, they would be downloaded from this repo.
Flag | Description | Default |
---|---|---|
-c |
Continue the last episode | - |
-change-token |
Change your authentication token | - |
-dub |
Watch the dubbed version of the anime | - |
-sub |
Watch the subbed version of the anime | - |
-new |
Add a new anime to your list | - |
-e |
Edit the configuration file | - |
-skip-op |
Automatically skip the opening section of each episode | true |
-skip-ed |
Automatically skip the ending section of each episode | true |
-skip-filler |
Automatically skip filler episodes | true |
-skip-recap |
Automatically skip recap sections | true |
-discord-presence |
Enable or disable Discord presence | true |
-image-preview |
Show an image preview of the anime | - |
-no-image-preview |
Disable image preview | - |
-next-episode-prompt |
Prompt for the next episode after completing one | - |
-rofi |
Open anime selection in the rofi interface | - |
-no-rofi |
Disable rofi interface | - |
-percentage-to-mark-complete |
Set the percentage watched to mark an episode as complete | 85 |
-player |
Specify the player to use for playback | "mpv" |
-save-mpv-speed |
Save the current MPV speed setting for future sessions | true |
-score-on-completion |
Prompt to score the episode on completion | true |
-storage-path |
Path to the storage directory | "$HOME/.local/share/curd" |
-subs-lang |
Set the language for subtitles | "english" |
-u |
Update the script | - |
-
Continue the Last Episode:
curd -c
-
Add a New Anime:
curd -percentage-to-mark-complete=90
-
Play with Rofi and Image Preview:
curd -rofi -image-preview
All configurations are stored in a file you can edit with the -e
option.
curd -e
Script is made in a way that you use it for one session of watching.
You can quit it anytime and the resume time would be saved in the history file
more settings can be found at config file.
config file is located at ~/.config/curd/curd.conf
Option | Type | Valid Values | Description |
---|---|---|---|
DiscordPresence |
Boolean | true , false |
Enables or disables Discord Rich Presence integration. |
AnimeNameLanguage |
Enum | english , romaji |
Sets the preferred language for anime names. |
AddMissingOptions |
Boolean | true , false |
Automatically adds missing configuration options with default values to the config file. |
AlternateScreen |
Boolean | true , false |
Toggles the use of an alternate screen buffer for cleaner UI. |
RofiSelection |
Boolean | true , false |
Enables or disables anime selection via Rofi. |
PercentageToMarkComplete |
Integer | 0 to 100 |
Sets the percentage of an episode watched to consider it as completed. |
StoragePath |
String | Any valid path (Environment variables accepted) | Specifies the directory where Curd stores its data. |
SubOrDub |
Enum | sub , dub |
Sets the preferred format for anime audio. |
NextEpisodePrompt |
Boolean | true , false |
Prompts the user before automatically playing the next episode. |
SubsLanguage |
String | english (redundant rn) |
Sets the preferred subtitle language. |
ScoreOnCompletion |
Boolean | true , false |
Automatically prompts the user to rate the anime upon completion. |
SkipOp |
Boolean | true , false |
Automatically skips the opening of episodes when supported. |
SkipEd |
Boolean | true , false |
Automatically skips the ending of episodes when supported. |
SkipRecap |
Boolean | true , false |
Skips recap sections in episodes when supported. |
ImagePreview |
Boolean | true , false |
Enables or disables image previews during anime selection (only for rofi). |
Player |
String | mpv (redundant rn) |
Specifies the media player used for streaming or playing anime. |
SaveMpvSpeed |
Boolean | true , false |
Retains the playback speed set in MPV for next episode. |
SkipFiller |
Boolean | true , false |
Skips filler episodes when supported. |
- mpv - Video player (vlc support might be added later)
- rofi - Selection menu
- ueberzug - Display images in rofi
- Anilist API - Update user data and download user data
- AniSkip API - Get anime intro and outro timings
- AllAnime Content - Fetch anime url
- Jikan - Get filler episode number