mirror of
https://github.com/ksyasuda/aniwrapper.git
synced 2024-11-22 03:19:53 -08:00
Compare commits
No commits in common. "e511d03505316b50e3da4dc01d0e9e62b632f442" and "7ae041e95a849f4943dc0438fbe807c6738a3cd0" have entirely different histories.
e511d03505
...
7ae041e95a
76
README.md
76
README.md
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
[**_Setup_**](#setup) | [**_Usage_**](#usage) | [**_Screenshots_**](#screenshots)
|
[**_Setup_**](#setup) | [**_Usage_**](#usage) | [**_Screenshots_**](#screenshots)
|
||||||
|
|
||||||
![Aniwrapper screenshot](https://imgur.com/HFq5gCq.png)
|
![Aniwrapper screenshot](https://imgur.com/Nvd9oJV.png)
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -15,13 +15,13 @@ which itself is a fork of
|
|||||||
pystardust's [old-ani-cli](https://github.com/pystardust/ani-cli/tree/old-ani-cli)
|
pystardust's [old-ani-cli](https://github.com/pystardust/ani-cli/tree/old-ani-cli)
|
||||||
|
|
||||||
This fork is a wrapper around a modified version of ani-cli, which uses [rofi](https://github.com/davatorium/rofi)
|
This fork is a wrapper around a modified version of ani-cli, which uses [rofi](https://github.com/davatorium/rofi)
|
||||||
to gather information and control the program flow.
|
to gather information and control the program.
|
||||||
In addition to `rofi`, I've also changed the way saving history works by
|
In addition to `rofi`, I've also changed the way saving history works by
|
||||||
integrating a local [sqlite3](https://www.sqlite.org/index.html) database with a table for
|
integrating a local [sqlite3](https://www.sqlite.org/index.html) database with a table for
|
||||||
search, watch, and file history
|
search and watch history
|
||||||
|
|
||||||
While this is a fork of a fork of pystardust's old-ani-cli, I would call this more of a light fork of the [the main ani-cli](https://github.com/pystardust/ani-cli).
|
While this is a fork of a fork of pystardust's old-ani-cli, I would call this more of a light fork of the [the main ani-cli](https://github.com/pystardust/ani-cli).
|
||||||
I have implemented most of the main features from the original script and continue to use the same scraping logic
|
I have implemented most of the main features from the main script and continue to use the same scraping logic
|
||||||
|
|
||||||
This tool scrapes the site [gogoanime](https://gogoanime.cm).
|
This tool scrapes the site [gogoanime](https://gogoanime.cm).
|
||||||
|
|
||||||
@ -29,12 +29,15 @@ This tool scrapes the site [gogoanime](https://gogoanime.cm).
|
|||||||
|
|
||||||
**Table of Contents**
|
**Table of Contents**
|
||||||
|
|
||||||
|
- [Aniwrapper](#aniwrapper)
|
||||||
- [Introduction](#introduction)
|
- [Introduction](#introduction)
|
||||||
- [Setup](#setup)
|
- [Setup](#setup)
|
||||||
- [Skip Intro Script](#skip-intro-script)
|
- [Skip Intro Script](#skip-intro-script)
|
||||||
- [Installing](#installing)
|
- [Installing](#installing)
|
||||||
- [Arch Linux](#arch-linux)
|
- [Arch Linux](#arch-linux)
|
||||||
- [Manual Install](#manual-install)
|
- [Manual Install](#manual-install)
|
||||||
|
- [Install the Dependencies](#install-the-dependencies)
|
||||||
|
- [Clone the repo](#clone-the-repo)
|
||||||
- [Run the setup and install the script](#run-the-setup-and-install-the-script)
|
- [Run the setup and install the script](#run-the-setup-and-install-the-script)
|
||||||
- [Aniwrapper Menus](#aniwrapper-menus)
|
- [Aniwrapper Menus](#aniwrapper-menus)
|
||||||
- [Search Anime](#search-anime)
|
- [Search Anime](#search-anime)
|
||||||
@ -48,7 +51,6 @@ This tool scrapes the site [gogoanime](https://gogoanime.cm).
|
|||||||
- [Option 3: Continue](#option-3-continue)
|
- [Option 3: Continue](#option-3-continue)
|
||||||
- [Option 4: Play from File](#option-4-play-from-file)
|
- [Option 4: Play from File](#option-4-play-from-file)
|
||||||
- [Option 5: Sync History](#option-5-sync-history)
|
- [Option 5: Sync History](#option-5-sync-history)
|
||||||
- [Option 6: Choose Theme](#option-6-choose-theme)
|
|
||||||
- [ani-cli](#ani-cli)
|
- [ani-cli](#ani-cli)
|
||||||
- [Screenshots](#screenshots)
|
- [Screenshots](#screenshots)
|
||||||
|
|
||||||
@ -95,7 +97,9 @@ yay -S aniwrapper-git
|
|||||||
|
|
||||||
### Manual Install
|
### Manual Install
|
||||||
|
|
||||||
Install the Dependencies
|
To install manually, make sure the dependencies are installed first
|
||||||
|
|
||||||
|
#### Install the Dependencies
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# Arch
|
# Arch
|
||||||
@ -105,7 +109,9 @@ pacman -S --needed aria2 curl grep mpv rofi sed sqlite3
|
|||||||
apt install aria2 curl grep mpv rofi sed sqlite3
|
apt install aria2 curl grep mpv rofi sed sqlite3
|
||||||
```
|
```
|
||||||
|
|
||||||
Clone and switch into the repo directory
|
#### Clone the repo
|
||||||
|
|
||||||
|
Use the following command to clone the Git repository locally and switch into the cloned directory
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git clone https://github.com/ksyasuda/aniwrapper && cd aniwrapper
|
git clone https://github.com/ksyasuda/aniwrapper && cd aniwrapper
|
||||||
@ -128,7 +134,7 @@ There are several menus used to drive the program forward
|
|||||||
|
|
||||||
The first menu consists of a search box and a list of anime titles corresponding to past valid searches. Choose an option from the menu, or enter in a unique search query to search for a new anime. The result from this will be used to query against `gogoanime` and return similar named anime
|
The first menu consists of a search box and a list of anime titles corresponding to past valid searches. Choose an option from the menu, or enter in a unique search query to search for a new anime. The result from this will be used to query against `gogoanime` and return similar named anime
|
||||||
|
|
||||||
If selecting an anime from the provided list, the [anime selection](#anime-selection) menu will be skipped and the program will move on to [episode selection](#episode-selection) for the chosen anime
|
As of the update on **_2022-01-01_**, if selecting an anime from the search history list, the [anime selection](#anime-selection) menu will be skipped and the program will move on to [episode selection](#episode-selection)
|
||||||
|
|
||||||
### Dealing with conflicting search queries / rofi grabbing from search list
|
### Dealing with conflicting search queries / rofi grabbing from search list
|
||||||
|
|
||||||
@ -147,16 +153,16 @@ The above output was produced by searching: `isekai -`
|
|||||||
|
|
||||||
## Anime Selection
|
## Anime Selection
|
||||||
|
|
||||||
The next menu is where you select the anime to watch from a narrowed down list of candidates. Titles that are highlighed in blue indicate that anime has been selected before
|
The next menu is where you select the anime to watch from a narrowed down list. Elements that have a blue border and text color indicate which anime have been watched before
|
||||||
|
|
||||||
## Episode Selection
|
## Episode Selection
|
||||||
|
|
||||||
> Half-episodes (ex. saihate-no-paladin episode 7.5) are selectable, however they will not show up in the episodes list.
|
> Half-episodes (ex. saihate-no-paladin episode 7.5) are selectable, however they will not show up in the episodes list.
|
||||||
> To select half episodes add 'h' to the beginning for episodes like '7.5' -> 'h7' to select saihate-no-paladin episode 7.5
|
> To select half episodes add 'h' to the beginning for episodes like '7.5' -> 'h7' to select saihate-no-paladin episode 7.5
|
||||||
|
|
||||||
Here you will be prompted to select the episode(s) to watch/download
|
This menu will promt you to select the episode(s) to watch/download
|
||||||
|
|
||||||
Multiple episodes can be downloaded by giving the episode range like so
|
Multiple episodes can be viewed/downloaded by giving the episode range like so
|
||||||
|
|
||||||
```
|
```
|
||||||
Select Episode [1-13]: 1 6
|
Select Episode [1-13]: 1 6
|
||||||
@ -164,6 +170,8 @@ Select Episode [1-13]: 1 6
|
|||||||
|
|
||||||
This would open/download episodes 1 2 3 4 5 6
|
This would open/download episodes 1 2 3 4 5 6
|
||||||
|
|
||||||
|
Like in the previous menu, any element with a blue border and text-color indicates that episode has been watched before
|
||||||
|
|
||||||
# Usage
|
# Usage
|
||||||
|
|
||||||
## aniwrapper
|
## aniwrapper
|
||||||
@ -205,16 +213,11 @@ aniwrapper -d
|
|||||||
|
|
||||||
### Option 1: Streaming
|
### Option 1: Streaming
|
||||||
|
|
||||||
|
- [click here](https://imgur.com/nLjqLCL.gif) for an example showing streaming a new anime
|
||||||
|
- [click here](https://imgur.com/undefined.png) for an example showing streaming a previously watched anime
|
||||||
|
|
||||||
Streaming is the default option for the `aniwrapper` script and will prompt you with each of the menus specified in the _[aniwrapper Menus](#aniwrapper-menus)_ section
|
Streaming is the default option for the `aniwrapper` script and will prompt you with each of the menus specified in the _[aniwrapper Menus](#aniwrapper-menus)_ section
|
||||||
|
|
||||||
<details>
|
|
||||||
|
|
||||||
<summary>Example</summary>
|
|
||||||
|
|
||||||
![example](https://imgur.com/Op9XLcY.gif)
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
### Option 2: Download
|
### Option 2: Download
|
||||||
|
|
||||||
The default download location is `$HOME/Videos/sauce` and will be chosen as the download directory unless otherwise specified
|
The default download location is `$HOME/Videos/sauce` and will be chosen as the download directory unless otherwise specified
|
||||||
@ -229,14 +232,6 @@ The continue option queries the `sqlite3` history databse and pulls the list of
|
|||||||
|
|
||||||
This option prompts you to provide the path to your `Videos` directory. Any path can be provided, but the script will begin the search from the provided path. From there, follow the prompts to select the video you want to watch and it will be opened in `mpv`
|
This option prompts you to provide the path to your `Videos` directory. Any path can be provided, but the script will begin the search from the provided path. From there, follow the prompts to select the video you want to watch and it will be opened in `mpv`
|
||||||
|
|
||||||
<details>
|
|
||||||
|
|
||||||
<summary>Example</summary>
|
|
||||||
|
|
||||||
![example](https://imgur.com/M2MOgso.gif)
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
### Option 5: Sync History
|
### Option 5: Sync History
|
||||||
|
|
||||||
This option allows you to sync your search/watch history across devices. It queries the database on the remote machine and inserts/updates the necessary rows
|
This option allows you to sync your search/watch history across devices. It queries the database on the remote machine and inserts/updates the necessary rows
|
||||||
@ -247,18 +242,6 @@ At the moment, the requirements are as follows:
|
|||||||
- The username must be the same across both devices
|
- The username must be the same across both devices
|
||||||
- The `history.sqlite3` file must be in the default location: `$XDG_CONFIG_HOME/aniwrapper/history.sqlite3`
|
- The `history.sqlite3` file must be in the default location: `$XDG_CONFIG_HOME/aniwrapper/history.sqlite3`
|
||||||
|
|
||||||
### Option 6: Choose Theme
|
|
||||||
|
|
||||||
Allows for changing the aniwrapper theme from the main menu
|
|
||||||
|
|
||||||
<details>
|
|
||||||
|
|
||||||
<summary>Example</summary>
|
|
||||||
|
|
||||||
![example](https://imgur.com/o97YqLe.gif)
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## ani-cli
|
## ani-cli
|
||||||
|
|
||||||
```
|
```
|
||||||
@ -292,16 +275,13 @@ ani-cli -c
|
|||||||
|
|
||||||
# Screenshots
|
# Screenshots
|
||||||
|
|
||||||
<div align="center">
|
<div>
|
||||||
|
|
||||||
Main Menu (default theme)
|
![aniwrapper main menu](https://imgur.com/Nvd9oJV.png)
|
||||||
|
|
||||||
![aniwrapper main menu](https://imgur.com/HFq5gCq.png)
|
- [query anime](https://imgur.com/vSyaoG6.png)
|
||||||
|
- [aniwrapper streaming options](https://imgur.com/7JxvZz8.png)
|
||||||
| | |
|
- [aniwrapper file selection](https://imgur.com/vFTxAgu.png)
|
||||||
| :---------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------: |
|
- [aniwrapper episode selection menu](https://imgur.com/vlOg8uc.png)
|
||||||
| <details><summary>doom-one</summary> ![doomone](https://imgur.com/zMU0i8l.png) </details> | <details><summary>dracula</summary> ![dracula](https://imgur.com/BPdIuX3.png)</details> |
|
|
||||||
| <details><summary>fancy</summary>![fancy](https://imgur.com/CZx73NL.png)</details> | <details><summary>material</summary>![material](https://imgur.com/eTWkxw2.png)</details> |
|
|
||||||
| <details><summary>onedark</summary>![onedark](https://imgur.com/rchqtBm.png)</details> | <details><summary>flamingo (sidebar theme)</summary>![flamingo-theme](https://imgur.com/pxF7hRE.png)</details> |
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
6
ani-cli
6
ani-cli
@ -679,7 +679,7 @@ open_episode() {
|
|||||||
nohup "$player_fn" --http-header-fields="Referer:$dpage_link" "$video_url" > /dev/null 2>&1 &
|
nohup "$player_fn" --http-header-fields="Referer:$dpage_link" "$video_url" > /dev/null 2>&1 &
|
||||||
PID=$!
|
PID=$!
|
||||||
if command -v "notify-send" > /dev/null; then
|
if command -v "notify-send" > /dev/null; then
|
||||||
((SILENT != 1)) && notify-send -i "$ANIWRAPPER_ICON_PATH" "Playing $anime_id - Episode $episode"
|
notify-send -i "$ANIWRAPPER_ICON_PATH" "Playing $anime_id - Episode $episode"
|
||||||
else
|
else
|
||||||
((SILENT != 1)) && printf "${c_green}\nVideo playing"
|
((SILENT != 1)) && printf "${c_green}\nVideo playing"
|
||||||
fi
|
fi
|
||||||
@ -692,9 +692,9 @@ open_episode() {
|
|||||||
mkdir -p "$dl_dir" || die "Could not create directory"
|
mkdir -p "$dl_dir" || die "Could not create directory"
|
||||||
if command -v "notify-send" > /dev/null; then
|
if command -v "notify-send" > /dev/null; then
|
||||||
if aria2c -x 16 -s 16 --referer="$dpage_link" "$video_url" --dir="$dl_dir" -o "$episode.mp4" --download-result=hide; then
|
if aria2c -x 16 -s 16 --referer="$dpage_link" "$video_url" --dir="$dl_dir" -o "$episode.mp4" --download-result=hide; then
|
||||||
((SILENT != 1)) && notify-send -i "$ANIWRAPPER_ICON_PATH" "Download complete for ${anime_id//-/ } - Episode: $episode"
|
notify-send -i "$ANIWRAPPER_ICON_PATH" "Download complete for ${anime_id//-/ } - Episode: $episode"
|
||||||
else
|
else
|
||||||
((SILENT != 1)) && notify-send -i "$MAISAN_ICON_PATH" "Download failed for ${anime_id//-/ } - Episode: $episode. Please retry or check your internet connection"
|
notify-send -i "$MAISAN_ICON_PATH" "Download failed for ${anime_id//-/ } - Episode: $episode. Please retry or check your internet connection"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
if aria2c -x 16 -s 16 --referer="$dpage_link" "$video_url" --dir="$dl_dir" -o "$episode.mp4" --download-result=hide; then
|
if aria2c -x 16 -s 16 --referer="$dpage_link" "$video_url" --dir="$dl_dir" -o "$episode.mp4" --download-result=hide; then
|
||||||
|
91
aniwrapper
91
aniwrapper
@ -22,8 +22,8 @@ IS_ROFI=1
|
|||||||
VERBOSE=0
|
VERBOSE=0
|
||||||
SILENT=0
|
SILENT=0
|
||||||
|
|
||||||
quit="7. Quit"
|
quit="6. Quit"
|
||||||
options="1. Stream|2. Download|3. Continue|4. Play from File|5. Sync History|6. Choose Theme|$quit"
|
options="1. Stream|2. Download|3. Continue|4. Play from File|5. Sync History|$quit"
|
||||||
theme=default
|
theme=default
|
||||||
|
|
||||||
#############
|
#############
|
||||||
@ -123,42 +123,6 @@ generate_span() {
|
|||||||
printf "%s\n" "$span"
|
printf "%s\n" "$span"
|
||||||
}
|
}
|
||||||
|
|
||||||
set_theme() {
|
|
||||||
new_theme="$1"
|
|
||||||
lg "theme: $new_theme"
|
|
||||||
case "$new_theme" in
|
|
||||||
aniwrapper)
|
|
||||||
lg "Default theme chosen... doing nothing"
|
|
||||||
theme=default
|
|
||||||
;;
|
|
||||||
dracula)
|
|
||||||
ROFI_THEME=aniwrapper-dracula.rasi
|
|
||||||
;;
|
|
||||||
doomone | doom-one)
|
|
||||||
ROFI_THEME=aniwrapper-doomone.rasi
|
|
||||||
;;
|
|
||||||
fancy)
|
|
||||||
ROFI_THEME=aniwrapper-fancy.rasi
|
|
||||||
;;
|
|
||||||
flamingo)
|
|
||||||
ROFI_THEME=aniwrapper-flamingo.rasi
|
|
||||||
;;
|
|
||||||
material)
|
|
||||||
ROFI_THEME=aniwrapper-material.rasi
|
|
||||||
;;
|
|
||||||
nord)
|
|
||||||
ROFI_THEME=aniwrapper-nord.rasi
|
|
||||||
;;
|
|
||||||
onedark)
|
|
||||||
ROFI_THEME=aniwrapper-onedark.rasi
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
seppuku "$theme not a valid theme file. Themes: [$THEMES]"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
CFG_FILE="$CFG_DIR/themes/$ROFI_THEME"
|
|
||||||
}
|
|
||||||
|
|
||||||
parse_args() {
|
parse_args() {
|
||||||
while getopts 'vhqcdf:-:t:T:CQ:D:S' OPT; do
|
while getopts 'vhqcdf:-:t:T:CQ:D:S' OPT; do
|
||||||
case "$OPT" in
|
case "$OPT" in
|
||||||
@ -189,7 +153,38 @@ parse_args() {
|
|||||||
;;
|
;;
|
||||||
t)
|
t)
|
||||||
theme="$OPTARG"
|
theme="$OPTARG"
|
||||||
set_theme "$theme"
|
lg "custom theme provided: $theme"
|
||||||
|
case "$theme" in
|
||||||
|
aniwrapper)
|
||||||
|
lg "Default theme chosen... doing nothing"
|
||||||
|
theme=default
|
||||||
|
;;
|
||||||
|
dracula)
|
||||||
|
ROFI_THEME=aniwrapper-dracula.rasi
|
||||||
|
;;
|
||||||
|
doomone | doom-one)
|
||||||
|
ROFI_THEME=aniwrapper-doomone.rasi
|
||||||
|
;;
|
||||||
|
fancy)
|
||||||
|
ROFI_THEME=aniwrapper-fancy.rasi
|
||||||
|
;;
|
||||||
|
flamingo)
|
||||||
|
ROFI_THEME=aniwrapper-flamingo.rasi
|
||||||
|
;;
|
||||||
|
material)
|
||||||
|
ROFI_THEME=aniwrapper-material.rasi
|
||||||
|
;;
|
||||||
|
nord)
|
||||||
|
ROFI_THEME=aniwrapper-nord.rasi
|
||||||
|
;;
|
||||||
|
onedark)
|
||||||
|
ROFI_THEME=aniwrapper-onedark.rasi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
seppuku "$theme not a valid theme file. Themes: [$THEMES]"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
CFG_FILE="$CFG_DIR/themes/$ROFI_THEME"
|
||||||
;;
|
;;
|
||||||
C)
|
C)
|
||||||
lg "Connecting to history database -> $CFG_DIR/history.sqlite3"
|
lg "Connecting to history database -> $CFG_DIR/history.sqlite3"
|
||||||
@ -253,7 +248,7 @@ check_flags() {
|
|||||||
########
|
########
|
||||||
main() {
|
main() {
|
||||||
choice=$(echo "${options[@]}" | rofi -dpi "$DPI" -dmenu -only-match -sep '|' \
|
choice=$(echo "${options[@]}" | rofi -dpi "$DPI" -dmenu -only-match -sep '|' \
|
||||||
-config "$CFG_FILE" -l 7 -i -p "Aniwrapper")
|
-config "$CFG_FILE" -l 6 -i -p "Aniwrapper")
|
||||||
|
|
||||||
[ "$choice" == "$quit" ] && quit
|
[ "$choice" == "$quit" ] && quit
|
||||||
|
|
||||||
@ -325,21 +320,9 @@ main() {
|
|||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
6.)
|
6.)
|
||||||
# -----------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# choose theme
|
|
||||||
# -----------------------------------------------------------------
|
|
||||||
[ -z "$THEMES" ] && seppuku "No themes provided... exiting"
|
|
||||||
choice=$(rofi -dmenu -config "$CFG_FILE" -dpi "$DPI" \
|
|
||||||
-only-match -l 4 -i -p "Choose theme: " -sep '|' \
|
|
||||||
-theme-str 'listview { columns: 2; }' <<< "$THEMES")
|
|
||||||
theme=$(awk '{ print $1 }' <<< "$choice")
|
|
||||||
set_theme "$theme"
|
|
||||||
main
|
|
||||||
;;
|
|
||||||
7.)
|
|
||||||
# -----------------------------------------------------------------
|
|
||||||
# get out
|
# get out
|
||||||
# -----------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
quit
|
quit
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
Loading…
Reference in New Issue
Block a user