From 213cd56afcedd0064c23bbd044a6f3a718bd1a55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Ortega=20Froysa?= Date: Wed, 11 Mar 2026 16:21:14 +0100 Subject: [PATCH] Add clipboard flag to copy URL to clipboard instead of print. --- invid-conv | 57 +++++++++++++++++++++++++++++++++++++++++++++--------- yt-conv | 53 ++++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 95 insertions(+), 15 deletions(-) diff --git a/invid-conv b/invid-conv index b03fc51..e3dacfe 100755 --- a/invid-conv +++ b/invid-conv @@ -24,25 +24,64 @@ set -euo pipefail # 3. This notice may not be removed or altered from any source # distribution. -YT_URL="$1" INVID_BASE="${INVID_BASE:-https://inv.nadeko.net}" +CLIP=0 -if [ $# -ne 1 ] +if [ $# -lt 1 ] then - >&2 echo "Usage: $0 " + >&2 echo "Usage: $0 [-c] " exit 1 -elif [ "$1" = "-h" ] -then - echo "Usage: $0 " - exit 0 fi -if [[ $YT_URL == *"youtu.be"* ]] +for arg in "$@" +do + case "$arg" in + -c|--clip) + CLIP=1 + ;; + -h|--help) + echo "Usage: $0 " + exit 0 + ;; + *) + YT_URL="$arg" + ;; + esac +done + +if [ -z "${YT_URL:-}" ] +then + >&2 echo "No URL provided" + exit 1 +elif [[ $YT_URL == *"youtu.be"* ]] then INVID_URL="${INVID_BASE}/watch?v=${YT_URL##*/}" elif [[ $YT_URL == *"www.youtube.com"* ]] then INVID_URL="${INVID_BASE}/${YT_URL##*/}" +else + >&2 echo "Invalid URL: $YT_URL" + exit 1 fi -echo "$INVID_URL" +if [ $CLIP -eq 0 ] +then + echo "$INVID_URL" +else + if [ "$XDG_SESSION_TYPE" = "wayland" ] + then + if ! command -v wl-copy &> /dev/null + then + echo "wl-copy not found, cannot copy to clipboard" + exit 1 + fi + echo "$INVID_URL" | wl-copy + else + if ! command -v xclip &> /dev/null + then + echo "xclip not found, cannot copy to clipboard" + exit 1 + fi + echo "$INVID_URL" | xclip -sel clip + fi +fi diff --git a/yt-conv b/yt-conv index 570b8db..0d14fc6 100755 --- a/yt-conv +++ b/yt-conv @@ -24,16 +24,57 @@ set -euo pipefail # 3. This notice may not be removed or altered from any source # distribution. +CLIP=0 + if [ $# -ne 1 ] then >&2 echo "Usage: $0 " exit 1 -elif [ "$1" = "-h" ] -then - echo "Usage: $0 " - exit 0 fi -URL="$1" +for arg in "$@" +do + case "$arg" in + -c|--clip) + CLIP=1 + ;; + -h|--help) + echo "Usage: $0 [-c] " + exit 0 + ;; + *) + URL="$arg" + ;; + esac +done + +if [ -z "${URL:-}" ] +then + >&2 echo "No URL provided" + exit 1 +fi + YT_URL="${URL//https:\/\/*\//https:\/\/www.youtube.com\/}" -echo "$YT_URL" + +if [ $CLIP -eq 0 ] +then + echo "$YT_URL" +else + if [ "$XDG_SESSION_TYPE" = "wayland" ] + then + if ! command -v wl-copy &> /dev/null + then + >&2 echo "wl-copy not found, cannot copy to clipboard" + exit 1 + fi + echo "$YT_URL" | wl-copy + else + if ! command -v xclip &> /dev/null + then + >&2 echo "xclip not found, cannot copy to clipboard" + exit 1 + fi + echo "$YT_URL" | xclip -sel clip + fi +fi +