summaryrefslogtreecommitdiff
path: root/ar/.local/bin/mpvplay
diff options
context:
space:
mode:
authorTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2025-06-28 19:03:01 +0900
committerTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2025-06-28 19:03:01 +0900
commitcbd1d349a511da7a861540a5d6ea954d4d06871b (patch)
tree92b932d351a9474e7fd0f12c6c973274daaaa0d9 /ar/.local/bin/mpvplay
parent74cb5de14fc06fe97b6fc306f6176f7d6b467b6b (diff)
updates
Diffstat (limited to 'ar/.local/bin/mpvplay')
-rwxr-xr-xar/.local/bin/mpvplay98
1 files changed, 49 insertions, 49 deletions
diff --git a/ar/.local/bin/mpvplay b/ar/.local/bin/mpvplay
index 61c613e..08d43ed 100755
--- a/ar/.local/bin/mpvplay
+++ b/ar/.local/bin/mpvplay
@@ -1,11 +1,11 @@
#!/bin/sh
-MOUNT_SCRIPT="${XDG_SCRIPTS_HOME:-${HOME}/.local/bin}/ecrypt"
-DB_PATH="$HOME/.local/share/history/mpv.sqlite"
+mount_script="${XDG_SCRIPTS_HOME:-${HOME}/.local/bin}/ecrypt"
+db_path="$HOME/.local/share/history/mpv.sqlite"
-check_mount() { findmnt "$HOME/Private" >/dev/null || $MOUNT_SCRIPT; }
+check_mount() { findmnt "$HOME/Private" >/dev/null || $mount_script; }
-check_unmount() { findmnt "$HOME/Private" >/dev/null && $MOUNT_SCRIPT; }
+check_unmount() { findmnt "$HOME/Private" >/dev/null && $mount_script; }
loginurl() {
notify-send "🔑 Authentication required"
@@ -36,12 +36,12 @@ play_media() {
if grep -q "/home/$USER/Private" "$playlist_file"; then
mpv "$@" && check_unmount || exit
else
- $MOUNT_SCRIPT && mpv "$@" || exit
+ $mount_script && mpv "$@" || exit
fi
elif echo "$1" | grep -q "/home/$USER/Private"; then
mpv "$@" && check_unmount || exit
else
- $MOUNT_SCRIPT && mpv "$@" || exit
+ $mount_script && mpv "$@" || exit
fi
}
@@ -61,8 +61,8 @@ tmp_playlist() {
list_and_play() {
dir=$1
- CHOICE=$(printf "List files\nEnter filenames" | dmenu -i -p "Choose an option:")
- case "$CHOICE" in
+ choice=$(printf "List files\nEnter filenames" | dmenu -i -p "Choose an option:")
+ case "$choice" in
"Enter filenames")
search_term=$(echo | dmenu -i -p "File names:")
[ -z "$search_term" ] && echo "Invalid search term \"$search_term\"" && exit
@@ -82,11 +82,11 @@ list_and_play() {
files_with_paths=$(find "$dir" -mindepth 1 -maxdepth 1 \
-type f \( -iname "*.mp4" -o -iname "*.mkv" -o -iname "*.mov" -o -iname "*.flv" -o -iname "*.wmv" -o -iname "*.webm" -o -iname "*.mpeg" -o -iname "*.mpg" -o -iname "*.avi" -o -iname "*.ts" -o -iname "*.3gp" -o -iname "*.rmvb" \) |
sort)
- SELECTED_FILE=$(printf "All files\n%s" "$files_with_paths" | sed 's|.*/||' | dmenu -i -l 21 -p "Select a file:")
- [ -z "$SELECTED_FILE" ] && echo "No file selected." && exit
- [ "$SELECTED_FILE" = "All files" ] && tmp_playlist "$dir" && return
- FULL_PATH="$(echo "$files_with_paths" | grep -F "$SELECTED_FILE")"
- [ -f "$FULL_PATH" ] && play_media "$FULL_PATH" && return
+ selected_file=$(printf "All files\n%s" "$files_with_paths" | sed 's|.*/||' | dmenu -i -l 21 -p "Select a file:")
+ [ -z "$selected_file" ] && echo "No file selected." && exit
+ [ "$selected_file" = "All files" ] && tmp_playlist "$dir" && return
+ full_path="$(echo "$files_with_paths" | grep -F "$selected_file")"
+ [ -f "$full_path" ] && play_media "$full_path" && return
;;
*) return ;;
esac
@@ -94,14 +94,14 @@ list_and_play() {
history_play() {
# Check if the database exists
- if [ ! -f "$DB_PATH" ]; then
- echo "Error: SQLite database not found at $DB_PATH" >&2
+ if [ ! -f "$db_path" ]; then
+ echo "Error: SQLite database not found at $db_path" >&2
exit 1
fi
# Query the database for the latest distinct files by path, formatting time_pos as HH:MM:SS
- HISTORY=$(
- sqlite3 "$DB_PATH" <<EOF
+ history=$(
+ sqlite3 "$db_path" <<EOF
WITH LatestFiles AS (
SELECT path, title, time_pos, MAX(date) AS max_date
FROM loaded_items
@@ -130,80 +130,80 @@ EOF
)
# Check if there are any results
- if [ -z "$HISTORY" ]; then
+ if [ -z "$history" ]; then
echo "No history items found in the database." >&2
exit 1
fi
# Create a temporary file for filtered results
- TEMP_FILE=$(mktemp)
+ temp_file=$(mktemp)
# Filter out entries with non-existing files
- echo "$HISTORY" | while IFS= read -r line; do
- FILE_PATH=$(printf '%s\n' "$line" | awk -F ' \\| ' '{print $1}')
- if [ -f "$FILE_PATH" ]; then
- printf '%s\n' "$line" >>"$TEMP_FILE"
+ echo "$history" | while IFS= read -r line; do
+ file_path=$(printf '%s\n' "$line" | awk -F ' \\| ' '{print $1}')
+ if [ -f "$file_path" ]; then
+ printf '%s\n' "$line" >>"$temp_file"
fi
done
# Check if there are valid entries after filtering
- if [ ! -s "$TEMP_FILE" ]; then
+ if [ ! -s "$temp_file" ]; then
echo "No valid history items found (all files missing)." >&2
- rm -f "$TEMP_FILE"
+ rm -f "$temp_file"
exit 1
fi
# Display results in dmenu and get the user's choice
- CHOSEN=$(dmenu -i -l 20 -p "Choose a file to play:" <"$TEMP_FILE")
- rm -f "$TEMP_FILE"
+ chosen=$(dmenu -i -l 20 -p "Choose a file to play:" <"$temp_file")
+ rm -f "$temp_file"
# Check if the user made a selection
- if [ -z "$CHOSEN" ]; then
+ if [ -z "$chosen" ]; then
echo "No file selected." >&2
exit 1
fi
# Extract the file path and formatted time position from the selected item
- FILE_PATH=$(printf '%s\n' "$CHOSEN" | awk -F ' \\| ' '{print $1}')
- FORMATTED_TIME=$(printf '%s\n' "$CHOSEN" | awk -F ' \\| ' '{print $3}')
+ file_path=$(printf '%s\n' "$chosen" | awk -F ' \\| ' '{print $1}')
+ formatted_time=$(printf '%s\n' "$chosen" | awk -F ' \\| ' '{print $3}')
# Convert the formatted time back to seconds for mpv
- TIME_POS=$(printf '%s\n' "$FORMATTED_TIME" | awk -F: '{print ($1 * 3600) + ($2 * 60) + $3}')
+ time_pos=$(printf '%s\n' "$formatted_time" | awk -F: '{print ($1 * 3600) + ($2 * 60) + $3}')
# Play the file with mpv, resuming from the saved time position
- if [ "$TIME_POS" -gt 0 ]; then
- mpv --start="$TIME_POS" "$FILE_PATH"
+ if [ "$time_pos" -gt 0 ]; then
+ mpv --start="$time_pos" "$file_path"
else
- mpv "$FILE_PATH"
+ mpv "$file_path"
fi
}
-CONTENT_CHOICE=$(printf "URL\nLocal Files\nPlaylist\nHistory" | dmenu -i -p "Choose media source:")
-case "$CONTENT_CHOICE" in
+content_choice=$(printf "URL\nLocal Files\nPlaylist\nHistory" | dmenu -i -p "Choose media source:")
+case "$content_choice" in
"URL") play_url ;;
"Playlist")
- PLAYLIST=$(find "$HOME/.config/mpv/playlists" -maxdepth 1 -type f -name "*.m3u" -exec basename {} .m3u \; | dmenu -i -p "Select a playlist:")
- [ -z "$PLAYLIST" ] && exit
- play_playlist "$HOME/.config/mpv/playlists/$PLAYLIST.m3u"
+ playlist=$(find "$HOME/.config/mpv/playlists" -maxdepth 1 -type f -name "*.m3u" -exec basename {} .m3u \; | dmenu -i -p "Select a playlist:")
+ [ -z "$playlist" ] && exit
+ play_playlist "$HOME/.config/mpv/playlists/$playlist.m3u"
;;
"Local Files")
check_mount
printf "%s\n%s\n%s\n%s\n%s\n%s\n" "$HOME/Downloads" "$HOME/Private" "$HOME/Torrents/complete" "$HOME/Videos" "/media/$USER" "/mnt/second" | dmenu -i -p "Choose your initial directory:" | {
read -r init_dir
- [ -z "$init_dir" ] && $MOUNT_SCRIPT && exit
- SELECTED_DIR="$init_dir"
+ [ -z "$init_dir" ] && $mount_script && exit
+ selected_dir="$init_dir"
while true; do
- SUBDIR_OPTIONS="$(find "$SELECTED_DIR" -mindepth 1 -maxdepth 1 -type d ! -name ".*" -printf "%P\n" | sort)"
- [ -z "$SUBDIR_OPTIONS" ] && list_and_play "$SELECTED_DIR" && break
- OPTIONS="All files\n$SUBDIR_OPTIONS"
- SELECTED_RELATIVE_DIR="$(printf "%b" "$OPTIONS" | dmenu -i -p "Select a directory or 'All files':")"
- [ -z "$SELECTED_RELATIVE_DIR" ] && echo "No relative directory." && exit
- [ "$SELECTED_RELATIVE_DIR" = "All files" ] && list_and_play "$SELECTED_DIR" && break
- SELECTED_DIR="$SELECTED_DIR/$SELECTED_RELATIVE_DIR"
+ subdir_options="$(find "$selected_dir" -mindepth 1 -maxdepth 1 -type d ! -name ".*" -printf "%P\n" | sort)"
+ [ -z "$subdir_options" ] && list_and_play "$selected_dir" && break
+ options="All files\n$subdir_options"
+ selected_relative_dir="$(printf "%b" "$options" | dmenu -i -p "Select a directory or 'All files':")"
+ [ -z "$selected_relative_dir" ] && echo "No relative directory." && exit
+ [ "$selected_relative_dir" = "All files" ] && list_and_play "$selected_dir" && break
+ selected_dir="$selected_dir/$selected_relative_dir"
done
}
;;
-"History") history_play ;;
+"history") history_play ;;
*) exit ;;
esac