refactored search code to use haruhi-dl's builtins. Thanks @selfisekai!

18l-fix
Dominika Liberda 2020-12-29 05:56:44 +01:00
parent 0dba83c44e
commit 6ee729be9c
3 changed files with 28 additions and 35 deletions

View File

@ -1,23 +1,23 @@
#!/bin/bash
title=$(curl https://www.youtube.com/feeds/videos.xml?channel_id=${get_data[id]} | grep title | head -n 1 | sed -s 's/ <title>//;s/<\/title>//')
meta[title]=$title
source templates/head.sh
if [[ ${get_data[id]} ]]; then
data=$(haruhi-dl $([[ ${cfg[_cookies]} != "" ]] && echo -n -- "-c ${cfg[_cookies]}") -j --flat-playlist https://www.youtube.com/channel/${get_data[id]})
data=$(haruhi-dl -J --flat-playlist "https://www.youtube.com/channel/${get_data[id]}")
elif [[ ${get_data[name]} ]]; then
data=$(haruhi-dl $([[ ${cfg[_cookies]} != "" ]] && echo -n -- "-c ${cfg[_cookies]}") -j --flat-playlist https://www.youtube.com/user/${get_data[name]})
data=$(haruhi-dl -J --flat-playlist "https://www.youtube.com/user/${get_data[name]}")
else
echo "Please specify either id or name"
return
fi
title=$(jq -r '.title' <<< $data)
meta[title]="$title"
source templates/head.sh
IFS=$'\n'
video_title=($(jq -r '.title' <<< $data))
video_id=($(jq -r '.id' <<< $data))
video_title=($(jq -r '.entries[].title' <<< $data))
video_id=($(jq -r '.entries[].id' <<< $data))
echo "<h1>$title</h1><a href='subscribe.shs?id=${get_data[id]}'>Subscribe!</a><br>"
for (( i=0; i<${#video_id[@]}; i++ )); do
echo "<a href='watch.shs?v=${video_id[$i]}'><img src='http://i.ytimg.com/vi/${video_id[$i]}/mqdefault.jpg'><br>${video_title[$i]}</a><br>"
done
done

View File

@ -6,44 +6,37 @@ source templates/head.sh
# GOOD LUCK FIXING IT WHEN GOOGLE BREAKS IT LOL
cat webroot/yt/webarchive/search_top.htm
#cat webroot/yt/webarchive/search_top.htm
#echo "<form action='${r[url]}/search.shs'>
#<input name='q' type='text'>
#<input type='submit' value='Search'>
#</form>
#"
echo "<form action='${r[url]}/search.shs'>
<input name='q' type='text'>
<input type='submit' value='Search'>
</form>
"
if [[ ${get_data[q]} ]]; then
query=${get_data[q]}
query_nice=$(echo ${get_data[q]} | sed -s 's/+/ /g')
echo "<p>Searching for '$query_nice'</p>"
data=''
while [[ $data == '' ]]; do
data=$(curl -s "https://m.youtube.com/results?search_query=$query&app=m&hl=en" | sed 's/<!-- end of chunk 1 --><div id="initial-data">/\n/g;s/><\/div><script >/\n/' | grep -v div | grep "<\!--" | sed -s 's/<!--//')
done
data=$(haruhi-dl "ytsearch30:${get_data[q]}" --flat-playlist -J | jq '.entries[]')
IFS=$'\n'
id=($(echo $data | jq -r '.contents.sectionListRenderer.contents[0].itemSectionRenderer.contents[1:] | map(.compactVideoRenderer.videoId) | .[]'))
if [[ ${id[0]} == '' ]]; then # I do not care, and neither should you
id=($(echo $data | jq -r '.contents.sectionListRenderer.contents[1].itemSectionRenderer.contents[1:] | map(.compactVideoRenderer.videoId) | .[]'))
title=($(echo $data | jq -r '.contents.sectionListRenderer.contents[1].itemSectionRenderer.contents[1:] | map(.compactVideoRenderer.title.runs[0].text) | .[]'))
runtime=($(echo $data | jq -r '.contents.sectionListRenderer.contents[1].itemSectionRenderer.contents[1:] | map(.compactVideoRenderer.thumbnailOverlays[0].thumbnailOverlayTimeStatusRenderer.text.runs[0].text) | .[]'))
else
title=($(echo $data | jq -r '.contents.sectionListRenderer.contents[0].itemSectionRenderer.contents[1:] | map(.compactVideoRenderer.title.runs[0].text) | .[]'))
runtime=($(echo $data | jq -r '.contents.sectionListRenderer.contents[0].itemSectionRenderer.contents[1:] | map(.compactVideoRenderer.thumbnailOverlays[0].thumbnailOverlayTimeStatusRenderer.text.runs[0].text) | .[]'))
fi
# id=($(echo $data | grep -E "watch\?v\=[A-z0-9_-]{11}" -oh | sed -E 's/watch\?v\=//g;s/" class="yt-uix-tile-link(.*)//g' | uniq))
# title=($( echo $data | sed -s 's/,"width":...,"height":...}]},"title":{"runs":\[{"text":"/TITLE_BEGIN/g;s/accessibility"/\n/g;s/"navigationEndpoint"/\n/g' | grep TITLE_BEGIN | sed -E 's/(.*)TITLE_BEGIN//g'))
id=($(jq -r '.id' <<< "$data"))
title=($(jq -r '.title' <<< "$data"))
runtime=($(jq -r '.duration' <<< "$data"))
views=($(jq -r '.view_count' <<< "$data"))
channel=($(jq -r '.channel' <<< "$data"))
channel_id=($(jq -r '.channel_id' <<< "$data"))
unset IFS
for (( i=0; i<${#id[@]}; i++ )); do
# echo "<a href='/yt/watch.shs?v=${id[$i]}'><img src='https://i.ytimg.com/vi/${id[$i]}/mqdefault.jpg'><br>${title[$i]}</a> | ${runtime[$i]}<br>"
echo "<li><div class='yt-lockup yt-lockup-tile yt-lockup-video clearfix yt-uix-tile'><div class='yt-lockup-thumbnail'><a href='$PREFIX/watch.shs?v=${id[$i]}' class='contains-addto yt-uix-sessionlink spf-link'><div class='video-thumb'><img src='https://i.ytimg.com/vi/${id[$i]}/mqdefault.jpg' width='185' height='104'/></div><span class='video-time'>${runtime[$i]}</span><button class='yt-uix-button yt-uix-button-size-small yt-uix-button-default yt-uix-button-empty yt-uix-button-has-icon addto-button video-actions spf-nolink hide-until-delayloaded addto-watch-later-button-sign-in yt-uix-tooltip' type='button' onclick=';return false;' title='Watch Later' role='button'><span class='yt-uix-button-icon-wrapper'><img src='https://s.ytimg.com/yts/img/pixel-vfl3z5WfW.gif' title='Watch Later' class='yt-uix-button-icon yt-uix-button-icon-addto yt-sprite'></span><img src='https://s.ytimg.com/yts/img/pixel-vfl3z5WfW.gif' class='yt-uix-button-arrow yt-sprite'></button></a></div><div class='yt-lockup-content'><h3 class='yt-lockup-title'><a href='$PREFIX/watch.shs?v=${id[$i]}' class='yt-uix-tile-link yt-ui-ellipsis yt-ui-ellipsis-2 yt-uix-sessionlink spf-link' dir='ltr'>${title[$i]}</a></h3><div class='yt-lockup-meta'><ul class='yt-lockup-meta-info'><li>by <b><a href='/user/PewDiePie' class='yt-uix-sessionlink spf-link g-hovercard'>PewDiePie</a></b></li><li>1 day ago</li><li>2,824,318 views</li></ul></div><div class='yt-lockup-description yt-ui-ellipsis yt-ui-ellipsis-2' dir='ltr'>THE DESCRIPTION GOES HERE!</div><div class='yt-lockup-badges'><ul class='yt-badge-list'><li class='yt-badge-item'><span class='yt-badge'>New</span></li><li class='yt-badge-item'><span class='yt-badge'>HD</span></li></ul></div></div></div></li>"
echo "<a href='/yt/watch.shs?v=${id[$i]}'><img src='https://i.ytimg.com/vi/${id[$i]}/mqdefault.jpg'><br>${title[$i]}</a> | ${runtime[$i]} seconds | ${views[$i]} views<br>Uploaded by <a href='$PREFIX/channel.shs?id=${channel_id[$i]}'>${channel[$i]}</a><br>"
# echo "<li><div class='yt-lockup yt-lockup-tile yt-lockup-video clearfix yt-uix-tile'><div class='yt-lockup-thumbnail'><a href='$PREFIX/watch.shs?v=${id[$i]}' class='contains-addto yt-uix-sessionlink spf-link'><div class='video-thumb'><img src='https://i.ytimg.com/vi/${id[$i]}/mqdefault.jpg' width='185' height='104'/></div><span class='video-time'>${runtime[$i]}</span><button class='yt-uix-button yt-uix-button-size-small yt-uix-button-default yt-uix-button-empty yt-uix-button-has-icon addto-button video-actions spf-nolink hide-until-delayloaded addto-watch-later-button-sign-in yt-uix-tooltip' type='button' onclick=';return false;' title='Watch Later' role='button'><span class='yt-uix-button-icon-wrapper'><img src='https://s.ytimg.com/yts/img/pixel-vfl3z5WfW.gif' title='Watch Later' class='yt-uix-button-icon yt-uix-button-icon-addto yt-sprite'></span><img src='https://s.ytimg.com/yts/img/pixel-vfl3z5WfW.gif' class='yt-uix-button-arrow yt-sprite'></button></a></div><div class='yt-lockup-content'><h3 class='yt-lockup-title'><a href='$PREFIX/watch.shs?v=${id[$i]}' class='yt-uix-tile-link yt-ui-ellipsis yt-ui-ellipsis-2 yt-uix-sessionlink spf-link' dir='ltr'>${title[$i]}</a></h3><div class='yt-lockup-meta'><ul class='yt-lockup-meta-info'><li>by <b><a href='/user/PewDiePie' class='yt-uix-sessionlink spf-link g-hovercard'>PewDiePie</a></b></li><li>1 day ago</li><li>2,824,318 views</li></ul></div><div class='yt-lockup-description yt-ui-ellipsis yt-ui-ellipsis-2' dir='ltr'>THE DESCRIPTION GOES HERE!</div><div class='yt-lockup-badges'><ul class='yt-badge-list'><li class='yt-badge-item'><span class='yt-badge'>New</span></li><li class='yt-badge-item'><span class='yt-badge'>HD</span></li></ul></div></div></div></li>"
done
cat webroot/yt/webarchive/search_bottom.htm
# cat webroot/yt/webarchive/search_bottom.htm
else
echo "search for something will 'ya?"
fi

View File

@ -42,7 +42,7 @@ if [[ ${get_data[v]} ]]; then
</form>
<div><br>"
source webroot/yt/player.shs
source "${cfg[namespace]}/webroot/yt/player.shs"
#<video id='player' src='$url' controls></video>
echo "<h2>$title</h2>