#!/bin/bash
if [[ ! -d "temp" ]]; then
mkdir "temp"
fi
declare -A strings
if [[ ! "$(which haruhi-dl)" ]]; then
strings[error]='Could not load video'
source templates/head.sh
source "${cfg[namespace]}/templates/header.shs"
render strings "${cfg[namespace]}/templates/themes/${cfg[template]}/watch_error.t"
return
fi
if [[ "${get_data[v]}" ]]; then
if [[ "${get_data[v]}" == '18l' || "${get_data[v]}" == '5eFdt6Y_34E' ]]; then
strings[uploader]='MyMusicGroup'
strings[title]='█▬█ █ ▀█▀ Jeden Osiem L - Jak Zapomnieć (Oficjalny Teledysk)'
formats='[{
"format_id": "44",
"url": "https://sakamoto.pl/tmp/videoplayback_.webm",
"asr": 44100,
"format_note": "480p",
"fps": 25,
"height": 480,
"tbr": 867,
"width": 640,
"ext": "webm",
"vcodec": "vp8",
"acodec": "vorbis",
"format": "44 - 640x480 (480p)",
"protocol": "https",
"http_headers": {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.54 Safari/537.36",
"Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "en-us,en;q=0.5"
}
}]'
if [[ "${r[host]}" == "${cfg[flash_host]}" ]]; then
url='http://f.sakamoto.pl/videoplayback_.flv'
fi
if [[ ${cfg[template]} == 'default' ]]; then
meta[title]="${strings[title]}"
source templates/head.sh
fi
else
cd temp
video=$(haruhi-dl --ie-key Youtube --write-pages --cookies "${cfg[_cookies]}" -J "http://youtube.com/watch?v=${get_data[v]}")
if [[ $video == '' ]]; then # okay who did this
random_hash=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 24 | head -n 1)
video=$(haruhi-dl --ie-key Youtube --write-pages --cookies ${cfg[_cookies]} -J "http://youtube.com/watch?v=${get_data[v]}" &> output$random_hash.log)
if [[ $video == '' ]]; then # seriously WHO DID THIS
output=$(cat output$random_hash.log)
rm output$random_hash.log
cd ..
if [[ $output == 'ERROR: Video unavailable' ]]; then
strings[error]='Video unavailable'
elif [[ $output == *'ERROR: Incomplete YouTube ID'* ]]; then
strings[error]='Incomplete YouTube ID'
else
strings[error]='Unexpected error has occured'
fi
source templates/head.sh
source "${cfg[namespace]}/templates/header.shs"
render strings "${cfg[namespace]}/templates/themes/${cfg[template]}/watch_error.t"
return
fi
fi
cd ..
#echo "http://youtube.com/watch?v=${get_data[v]}" > /dev/stderr
strings[channel_id]=$(jq -r '.channel_url' <<< "$video" | sed -s 's/http:\/\/www.youtube.com\/channel\///')
strings[uploader]=$(jq -r '.uploader' <<< "$video")
strings[title]=$(jq -r '.title' <<< "$video")
if [[ ${cfg[template]} == 'default' ]]; then
meta[title]="${strings[title]}"
meta[description]="$(jq -r '.description' <<< "$video")"
meta[unsafe]="
"''
source templates/head.sh
fi
formats=$(jq '.formats' <<< "$video")
fi
if [[ "${r[host]}" == "${cfg[flash_host]}" ]]; then
IFS=$'\n'
urls=($(jq -r '.formats[] | select(.format_id == "22" or .format_id == "18").url' <<< "$video"))
unset IFS
if [[ "$url" == '' ]]; then
if [[ ${urls[1]} != '' ]]; then
url=${urls[1]}
else
url=${urls[0]}
fi
fi
strings[player]=$(source "${cfg[namespace]}/webroot/player_flash.shs")
else
strings[player]=$(source "${cfg[namespace]}/webroot/player.shs")
fi
strings[upload_date]=$(date -d "$(echo $video | jq -r '.upload_date' | sed -E 's/..../&-/;s/....-../&-/')" "+%d %B %Y")
strings[view_count]=$(echo $video | jq -r '.view_count' | xargs printf "%'d\n")
like_count=$(echo $video | jq -r '.like_count' | xargs printf "%'d\n")
dislike_count=$(echo $video | jq -r '.dislike_count' | xargs printf "%'d\n")
if [[ ${cfg[template]} == 'default' ]]; then
if [[ $like_count == 'null' && $dislike_count == 'null' ]]; then
strings[like_dislike_count]="Likes are turned off"
else
strings[like_dislike_count]="$like_count likes, $dislike_count dislikes."
fi
fi
strings[sub]=''
#
if [[ ${cookies[sh_session]} ]]; then
if [[ $(grep $(session_get_username "${cookies[sh_session]}") storage/faves | grep "${get_data[v]}") == '' ]]; then
if [[ ${cfg[template]} == 'default' ]]; then
strings[fav]="Add to favourites
"
fi
else
if [[ ${cfg[template]} == 'default' ]]; then
strings[fav]="Remove from favourites
"
fi
fi
if [[ $(grep $(session_get_username "${cookies[sh_session]}") storage/subscribed | grep "${strings[channel_id]}") == '' ]]; then
if [[ ${cfg[template]} == 'default' ]]; then
strings[sub]="Subscribe to ${strings[uploader]}!
"
fi
else
if [[ ${cfg[template]} == 'default' ]]; then
strings[sub]="Unsubscribe from ${strings[uploader]}
"
fi
fi
else
if [[ ${cfg[template]} == 'default' ]]; then
strings[fav]="Log in to add this video to your favourites and/or subscribe to this channel!
"
fi
fi
strings[description]=$(jq -r '.description' <<< "$video" | sed -E 's/$/
/g')
vid="$(cat "temp/${get_data[v]}_https_-_"*"watch"*".dump")"
vid_json="$(tr -d '\n' <<< "$vid" | grep -Poh "ytInitialData.*?" | sed 's/ytInitialData = //;s/<\/script>//')"
strings[recommended]=$(jq -r '.contents.twoColumnWatchNextResults.secondaryResults.secondaryResults.results[] | .compactAutoplayRenderer.contents[0].compactVideoRenderer, .compactVideoRenderer | if .videoId != null then "
${comment_text[$i]}