bashtube/webroot/channel.shs

88 lines
2.6 KiB
Bash

#!/bin/bash
declare -A strings
if [[ "${params[id]}" ]]; then
data=$(yt-dlp -J --flat-playlist "https://www.youtube.com/channel/${params[id]}")
elif [[ "${params[user]}" ]]; then
data=$(yt-dlp -J --flat-playlist "https://www.youtube.com/user/${params[user]}")
elif [[ "${params[c]}" ]]; then
data=$(yt-dlp -J --flat-playlist "https://www.youtube.com/c/${params[c]}")
elif [[ "${get_data[id]}" ]]; then
data=$(yt-dlp -J --flat-playlist "https://www.youtube.com/channel/${get_data[id]}")
elif [[ "${get_data[name]}" ]]; then
data=$(yt-dlp -J --flat-playlist "https://www.youtube.com/user/${get_data[name]}")
else
echo "Please specify either id or name"
return
fi
if [[ "${get_data[id]}" ]]; then
if [[ "${cookies[sh_session]}" != '' ]]; then
if [[ $(grep $(session_get_username "${cookies[sh_session]}") storage/subscribed | grep "${get_data[id]}") == '' ]]; then
strings[?sub]=true
strings[channel_id]="${get_data[id]}"
else
strings[?unsub]=true
strings[channel_id]="${get_data[id]}"
fi
else
strings[?login]=true
#strings[login_r]=$(sed -s 's/?/___/' <<< "${r[url]}")
strings[login_r]="channel/${get_data[id]}"
fi
elif [[ "${params[id]}" ]]; then
if [[ "${cookies[sh_session]}" != '' ]]; then
if [[ $(grep $(session_get_username "${cookies[sh_session]}") storage/subscribed | grep "${params[id]}") == '' ]]; then
strings[?sub]=true
strings[channel_id]="${params[id]}"
else
strings[?unsub]=true
strings[channel_id]="${params[id]}"
fi
else
strings[?login]=true
#strings[login_r]=$(sed -s 's/?/___/' <<< "${r[url]}")
strings[login_r]="channel/${params[id]}"
fi
fi
#else
#strings[?suberror]=true
#fi
title=$(jq -r '.title' <<< $data)
if [[ ${cfg[template]} != 'retro' ]]; then
meta[title]="Channel \"$(html_encode "$title" | sed -E "s/ - Videos//g" | sed -E "s/Uploads from //g")\""
#source templates/head.sh
source "${cfg[namespace]}/templates/header.shs"
fi
IFS=$'\n'
video_title=($(jq -r '.entries[].title' <<< $data))
video_id=($(jq -r '.entries[].id' <<< $data))
if [[ $title != 'null' ]]; then
strings[?cnnc]=true
strings[subscribe]="$(html_encode "$title" | sed -E "s/ - Videos//g" | sed -E "s/Uploads from //g")"
fi
nested_declare meow
declare -A nyaa
for (( i=0; i<${#video_id[@]}; i++ )); do
nyaa[id]="${video_id[$i]}"
nyaa[title]="${video_title[$i]}"
nested_add meow nyaa
echo "WTF: ${#video_id[@]}" >/dev/stderr
done
strings[_videos]+="meow"
nested_get meow 0
strings[err]=''
if [[ "${res[id]}" == '' ]]; then
strings[err]="Failed to fetch videos."
fi
render strings "${cfg[namespace]}/templates/themes/${cfg[template]}/channel.html"