Try wget https://bash.commongrounds.cc/uploads/1747808379_ytgram.sh
from the console
#!/bin/bash # Check dependencies command -v yt-dlp >/dev/null 2>&1 || { echo "yt-dlp is required but not installed. Aborting."; exit 1; } command -v mpv >/dev/null 2>&1 || { echo "mpv is required but not installed. Aborting."; exit 1; } echo "ytgram 1.0 Provided by Page Telegram Volunteer Services 2025." # Main loop while true; do # Get query if no previous results if [ -z "${videos+x}" ]; then if [ -z "$1" ]; then read -p "Enter search query: " query else query="$*" # Clear command-line args after first use set -- fi # Search and store top 10 results echo "Searching YouTube for: $query" mapfile -t videos < <(yt-dlp "ytsearch10:$query" --print "%(title)s|||%(webpage_url)s" --no-warnings) if [ "${#videos[@]}" -eq 0 ]; then echo "No results found." continue fi fi # Display results echo echo "Top 10 Results:" for i in "${!videos[@]}"; do title=$(echo "${videos[$i]}" | cut -d '|' -f 1) echo "[$i] $title" done echo echo "Select an option:" echo " - Press 0–9 to stream at 360p" echo " - Press d0–d9 or D0–D9 to download and play" echo " - Press s or S for a new search" echo " - Press q or Q to quit" read -n 2 -p "> " input echo # Input parsing if [[ "$input" =~ ^[dD]([0-9])$ ]]; then download=true index="${BASH_REMATCH[1]}" elif [[ "$input" =~ ^[0-9]$ ]]; then download=false index="$input" elif [[ "$input" =~ ^[sS]$ ]]; then unset videos continue elif [[ "$input" =~ ^[qQ]$ ]]; then echo "Exiting." exit 0 else echo "Invalid input." continue fi # Validate index if [ "$index" -ge "${#videos[@]}" ]; then echo "Invalid video selection." continue fi # Get URL video_entry="${videos[$index]}" url=$(echo "$video_entry" | awk -F '\\|\\|\\|' '{print $2}' | xargs) if [ -z "$url" ]; then echo "Could not extract video URL." continue fi # Format string for 360p (best 360p MP4 or fallback) format="bestvideo[height<=360][ext=mp4]+bestaudio[ext=m4a]/best[height<=360]" if [ "$download" = true ]; then echo "Downloading..." # Use a temporary filename to avoid issues with special characters temp_output="ytvideo_%(id)s.%(ext)s" # Download the video yt-dlp -f "$format" -o "$temp_output" --no-part "$url" # Check if download was successful if [ $? -ne 0 ]; then echo "Download failed." continue fi # Get the actual filename after download filename=$(yt-dlp -f "$format" -o "$temp_output" --get-filename "$url") if [ -f "$filename" ]; then # Download title and description to a text file echo "Downloading title and description..." title=$(yt-dlp --get-title "$url") description=$(yt-dlp --get-description "$url") text_filename="${filename%.*}.txt" { echo "Title: $title" echo echo "Description:" echo "$description" } > "$text_filename" if [ $? -eq 0 ]; then echo "Saved title and description to: $text_filename" else echo "Failed to save title and description." fi echo "Playing downloaded file: $filename" mpv "$filename" else echo "Downloaded file not found." continue fi else echo "Streaming from YouTube..." mpv --ytdl-format="$format" "$url" fi doneBASH to Home