diff --git a/ani-cli b/ani-cli index 9f03df7..652a7c4 100755 --- a/ani-cli +++ b/ani-cli @@ -498,8 +498,7 @@ download_dir="." is_playlist=0 playlist_remove=0 playlist_add=0 -playlist_file="$CFG_DIR/playlists/playlist.txt" -while getopts 'hd:HlpadP:sv' OPT; do +while getopts 'hd:Hlpa:P:sv' OPT; do case "$OPT" in h) help_text @@ -526,10 +525,7 @@ while getopts 'hd:HlpadP:sv' OPT; do a) is_add=1 scrape=add - ;; - d) - is_delete=1 - scrape=delete + playlist_file="${OPTARG/ //}" ;; P) is_playlist=1 @@ -580,16 +576,21 @@ case $scrape in episode_selection ;; history) - # search_results=$(sed -n -E 's/\t[0-9]*//p' "$logfile") stmt="SELECT DISTINCT anime_name FROM watch_history ORDER BY watch_date DESC" search_results=$(printf "%s\n" "$stmt" | sqlite3 -noheader "$HISTORY_DB") [ -z "$search_results" ] && die "History is empty" anime_selection "${search_results[@]}" [ $? -ne 0 ] && die "No anime selection found" - stmt="SELECT episode_number FROM watch_history ORDER BY watch_date DESC LIMIT 1" - run_stmt "$stmt" - ep_choice_start=$? - echo "EPISODE: $ep_choice_start" + [ "$VERBOSE" -eq 1 ] && printf "%s\n" "SELECTION: $selection_id" + + stmt="SELECT episode_number \ + FROM watch_history \ + WHERE anime_name = '$selection_id' \ + ORDER BY watch_date DESC \ + LIMIT 1" + ep_choice_start=$(run_stmt "$stmt") + [ "$VERBOSE" -eq 1 ] && printf "%s\n" "Most recently watched episode: $ep_choice_start" + # search_results=$(sed -n -E 's/\t[0-9]*//p' "$logfile") # ep_choice_start=$(sed -n -E "s/${selection_id}\t//p" "$logfile") ;; playlist) @@ -626,7 +627,6 @@ case $scrape in [ $? -ne 0 ] && die "No anime selection found" episode_selection ;; - delete) ;; sync) printf "%s" "Enter username for remote user: " read -r username @@ -687,7 +687,6 @@ for ep in $episodes; do fi printf "%s\n" "$selection_id $ep" >>"$playlist_file" [ "$VERBOSE" -eq 1 ] && printf "%s\n" "Added to playlist file" - exit 0 else open_episode "$selection_id" "$ep" "$download_dir" if [[ "$is_playlist" -eq 1 ]]; then @@ -695,6 +694,12 @@ for ep in $episodes; do fi fi done + +if [[ "$is_add" -eq 1 ]]; then + printf "%s\n" "Finished adding to playlist file... exiting" + exit 0 +fi + episode=${ep_choice_end:-$ep_choice_start} choice='' diff --git a/aniwrapper b/aniwrapper index 04df99f..1b3270d 100755 --- a/aniwrapper +++ b/aniwrapper @@ -4,8 +4,8 @@ CMD=/usr/local/bin/ani-cli DEFAULT_DOWNLOAD="$HOME/Videos/sauce" -DEFAULT_PLAYLIST="$HOME/Videos/sauce/playlists/playlist.txt" CFG_DIR="$XDG_CONFIG_HOME/aniwrapper" +DEFAULT_PLAYLIST="$CFG_DIR/playlists/playlist.txt" CFG_FILE="meh.rasi" VERBOSE=0 @@ -100,9 +100,9 @@ case "$selection" in [ "$choice" == "$quit" ] && quit selection=$(printf "%s\n" "$choice" | awk '{ print $1 }') if [[ "$selection" == "1." ]]; then - # ----------------------------------------------------------------------- + # ------------------------------------------------------------------ # watch playlist - # ----------------------------------------------------------------------- + # ------------------------------------------------------------------ log "Playlist mode" options="1. From file|2. Streaming|3. Quit" choice=$(printf "%s\n" "${options[@]}" | @@ -113,9 +113,9 @@ case "$selection" in log "Selection: $choice" selection=$(printf "%s\n" "$choice" | awk '{ print $1 }') if [[ "$selection" == "1." ]]; then - # ------------------------------------------------------------------- + # -------------------------------------------------------------- # watch playlist from file (downloaded videos) - # ------------------------------------------------------------------- + # -------------------------------------------------------------- log "Watching playlist from file" PLAYLIST_DIR="$HOME/Videos/sauce" log "Default playlist directory: $PLAYLIST_DIR" @@ -127,24 +127,80 @@ case "$selection" in log "Choice" "$choice" run -P "$PLAYLIST_DIR/$choice" elif [[ "$selection" == "2." ]]; then - # ------------------------------------------------------------------- + # -------------------------------------------------------------- # watch playlist of 'queued' videos to stream - # ------------------------------------------------------------------- + # -------------------------------------------------------------- log "Watching from 'queue'" + choice=$(rofi -dmenu \ + -config "$CFG_DIR/$CFG_FILE" \ + -l 1 -p "Enter path to playlist file (or leave blank for default):") + if [[ "$choice" ]]; then + PLAYLIST_FILE="$choice" + else + PLAYLIST_FILE="$DEFAULT_PLAYLIST" + fi run -p fi elif [[ "$selection" == "2." ]]; then - # ----------------------------------------------------------------------- + # ------------------------------------------------------------------ # add to playlist - # ----------------------------------------------------------------------- + # ------------------------------------------------------------------ log "Add to playlist" - run -a + choice=$(rofi -dmenu \ + -config "$CFG_DIR/$CFG_FILE" \ + -l 1 -p "Enter path to playlist file (or leave blank for default):") + if [[ "$choice" ]]; then + PLAYLIST_FILE="$choice" + else + PLAYLIST_FILE="$DEFAULT_PLAYLIST" + fi + run -a "$PLAYLIST_FILE" elif [[ "$selection" == "3." ]]; then # ----------------------------------------------------------------------- # delete from playlist # ----------------------------------------------------------------------- - log "Not implemented yet" - run -r + log "Delete from playlist" + choice=$(rofi -dmenu \ + -config "$CFG_DIR/$CFG_FILE" \ + -l 1 -p "Enter path to playlist file (or leave blank for default):") + if [[ "$choice" ]]; then + PLAYLIST_FILE="$choice" + else + PLAYLIST_FILE="$DEFAULT_PLAYLIST" + fi + [ "$VERBOSE" -eq 1 ] && log "playlist file: $PLAYLIST_FILE" + lines="" + cnt=0 + while read -r line + do + if [[ "$cnt" -eq 0 ]]; then + lines="$((cnt + 1)). $line" + else + lines="$lines|$((cnt + 1)). $line" + fi + ((cnt++)) + done < "$PLAYLIST_FILE" + choice=$(rofi -dmenu -l 12 \ + -sep '|' \ + -config "$CFG_DIR/$CFG_FILE" -p "Choose episode to delete:" \ + <<< "${lines[*]}") + log "choice: $choice" + selection=$(awk '{print $1}' <<< "$choice") + idx=${selection//\./} + log "index selected: $idx" + log "deleting entry: $idx" + if [[ -z "$idx" ]]; then + log "no entry selected" + exit 1 + fi + sed -ie "$idx"d "$PLAYLIST_FILE" + if [ "$?" -eq 0 ]; then + log "$selection deleted from playlist" + exit 0 + else + log "there was a problem deleting $choice" + exit 1 + fi fi ;; 5.) diff --git a/db.sh b/db.sh index f363c90..36db2fb 100755 --- a/db.sh +++ b/db.sh @@ -80,10 +80,10 @@ while getopts 'cdrqCs' OPT; do ;; C) log "Cleaning up database..." - stmt="DELETE FROM search_history WHERE anime_name IS NULL or anime_name = ''" + stmt="DELETE FROM search_history WHERE anime_name IS NULL OR anime_name = ''" log "Cleaning up search history..." sqlite3 "$DIR/$DB" <<<"$stmt" - stmt="DELETE FROM watch_history WHERE anime_name IS NULL or anime_name = ''" + stmt="DELETE FROM watch_history WHERE anime_name IS NULL OR anime_name = '' OR episode_number = 0" log "Cleaning up watch history..." sqlite3 "$DIR/$DB" <<<"$stmt" ;;