Watch anime using Emacs.
This package is a sort-of elisp re-implementation of ani-cli using the same video scrapping methods but featuring a transient based TUI, because, subjectively, transient is a better UI than a CLI.
This package features:
- Search for anime: up to 100 results can be selected (scroll the list with C-v or equivalent if necessary)
- Play an episode: you can see available episodes and select one for playing
- Anime details: shows an anime cover art and related information
- Anime following: if you want to keep track of an anime’s episodes, and establish some configuration, such as skipping the opening and setting desired video quality
- Playback enhancements: Skip opening, resume episode, automatically advance episode when finishing an episode
As this packages uses mpv.el you can also benefit from all its functionality to control the playback.
This package is not available in any emacs package repository, but you can manually load it as explained bellow.
Enime depends on some packages available on Elpa or Melpa:
- curl
- grep
- mpv
- openssl (for bypassing url obfuscation )
- sed
- Install dependencies
- Clone this repository
- Check if the cloned script
video_scrapping.sh
has executable permissions - Add the new directory to load path (in your init.el):
(add-to-list 'load-path "enime/path")
- Require enime:
(require 'enime)
You can obviously install by other means such as straight.
There are two interactive functions for users:
enime-main-transient
: offers the functionality to search for an anime and to select a followed animeenime-anime-transient
: offers the actions to play, follow/unfollow, and configure the last selected anime (from a search or followed anime).
There are other interactive functions defined but they are part of the TUI and they are not intended to be used directly.
Some variables can be customized:
- enime-base-url (“https://www3.gogoanime.cm/” by default): enime uses gogoanime (as ani-cli) as provider, but the url may vary according to your region. You can check which url you get when visiting the site. This may be improved in the future
- enime-tmp-dir ( “/tmp” by default): Directory to save temporal data like anime cover art
- enime-storage-file (“/tmp/enime.db” by default): File to storage
followed animes data
So a possible minimal configuration for your init.el may be (after requiring enime):
(setq enime-storage-file "~/enime.db")
- As this package (and also ani-cli) uses web scrapping as a way to get anime videos, it is possible, and in fact frequent, that some videos do not load, or even that the main video source stops working as changes in anime CDNs are frequent. I do not plan to actively look for new ways to scrap content in order to fix problems with videos, I will keep, at the time, depending on the ani-cli community for that. This also means that sometimes videos could not be retrieved until solutions are found by the ani-cli community and ported to enime
- Only mpv is supported and there are no plans for supporting other video players in the near future
- For EXWM users: there is a known bug (at the time of this writing) that causes emacs to hang (or don’t properly get input events) when a transient buffer is shown along with an EXWM buffer. This posses a problem when trying to open mpv to play an anime episode, for this reason, when selecting an action that opens mpv, the transient is also automatically quit. Nevertheless, it is suggested to be aware of this problem
- You can see up to 100 animes in search results: this number could be grater for a given search (for example “dragon”) but more results become too impractical to handle. You can always put more details in your search
- You can follow up to 104 animes: I believe this number is already impractical as the selection overflows. You can always unfollow an anime to make room if necessary
request--curl-sync: semaphore never called
: this error occurs in some systems, you can try changing the Emacs request back-end as follows:M-x customize-option RET request-backend
- Change value for:
url-retrieve
- Maybe add episode downloading
This project includes basically the same disclaimer as ani-cli: Disclaimer