tv_channel_simulator/tv.sh

126 lines
3.1 KiB
Bash

#!/bin/bash
BASE_DIR="$(pwd)"
# ------------------------------
# Function: list channels
# ------------------------------
list_channels() {
CHANNELS=()
i=1
for dir in "$BASE_DIR"/*/; do
dir_name=$(basename "$dir")
CHANNELS+=("$dir_name")
echo " $i) $dir_name"
((i++))
done
}
# ------------------------------
# Function: choose channel by index
# ------------------------------
choose_channel() {
list_channels
echo -n "Select channel number: "
read INDEX
CHANNEL="${CHANNELS[$((INDEX-1))]}"
if [ -z "$CHANNEL" ]; then
echo "Invalid selection."
return 1
fi
return 0
}
# ------------------------------
# Function: play a channel
# ------------------------------
play_channel() {
if choose_channel; then
CHANNEL_DIR="$BASE_DIR/$CHANNEL"
SCRIPT="$CHANNEL_DIR/${CHANNEL,,}.sh" # assuming script is lowercase like animes.sh
if [ -f "$SCRIPT" ]; then
bash "$SCRIPT"
else
echo "No script found for this channel ($SCRIPT)"
fi
fi
}
# ------------------------------
# Function: reset tracking
# ------------------------------
reset_tracking() {
if choose_channel; then
STATE_FILE="$BASE_DIR/$CHANNEL/state.txt"
if [ -f "$STATE_FILE" ]; then
echo 0 > "$STATE_FILE"
echo "Progress for '$CHANNEL' reset."
else
echo "No progress file found for '$CHANNEL'."
fi
fi
}
# ------------------------------
# Function: schedule shows
# ------------------------------
schedule_shows() {
if choose_channel; then
CHANNEL_DIR="$BASE_DIR/$CHANNEL"
# List shows in channel
echo "Available shows in $CHANNEL:"
SHOWS=()
i=1
for dir in "$CHANNEL_DIR"/*/; do
show_name=$(basename "$dir")
SHOWS+=("$show_name")
echo " $i) $show_name"
((i++))
done
# Select two shows
echo -n "Select first show number: "
read S1
echo -n "Select second show number: "
read S2
SHOW1="${SHOWS[$((S1-1))]}"
SHOW2="${SHOWS[$((S2-1))]}"
# Enter times
echo "Enter start and end time for $SHOW1 (format HH:MM AM/PM-HH:MM AM/PM):"
read TIME1
echo "Enter start and end time for $SHOW2 (format HH:MM AM/PM-HH:MM AM/PM):"
read TIME2
SCHED_FILE="$CHANNEL_DIR/schedule.txt"
echo "$TIME1:'$SHOW1'" > "$SCHED_FILE"
echo "$TIME2:'$SHOW2'" >> "$SCHED_FILE"
echo "Schedule saved for channel $CHANNEL."
fi
}
# ------------------------------
# Main menu
# ------------------------------
while true; do
echo ""
echo "===== TV Control Menu ====="
echo "1) Play channel"
echo "2) Reset progress"
echo "3) Schedule shows"
echo "4) Exit"
echo -n "Select an option: "
read OPTION
case $OPTION in
1) play_channel ;;
2) reset_tracking ;;
3) schedule_shows ;;
4) exit 0 ;;
*) echo "Invalid option, try again." ;;
esac
done