#!/bin/sh
# needs search_query as $*
## Scrape data and store video information in videos_data ( and thumbnails )

scrape_yt () {
    search=$1
    [ "$search" = ":help" ] && print_info "Scrape youtube without invidious\n" && return 100
    output_json_file=$2
    _tmp_html="${session_temp_dir}/yt-search.html"
    _tmp_json="${session_temp_dir}/yt-search.json"

    printf "%s\n" "Scraping Youtube (with https://www.youtube.com) ($search)"

    _get_request "https://www.youtube.com/results" \
		    -G --data-urlencode "search_query=$search" \
		    -H "User-Agent: $4" \
		    -H 'Accept-Language: en-US,en;q=0.9' \
		    --compressed > "$_tmp_html" || exit "$?"
    sed -n '/var *ytInitialData/,$p' < "$_tmp_html" |
	   tr -d '\n' |
	   sed -E ' s_^.*var ytInitialData ?=__ ; s_;</script>.*__ ;' > "$_tmp_json"

    #gets a list of videos
    {
	jq '[ .contents|
	..|.videoRenderer? |
	select(. !=null) |
		{
			scraper: "youtube_search",
			url: "'"${yt_video_link_domain}"'/watch?v=\(.videoId)",
			title: .title.runs[0].text,
			channel: .longBylineText.runs[0].text,
			duration:.lengthText.simpleText,
			views: .shortViewCountText.simpleText,
			date: .publishedTimeText.simpleText,
			description: .detailedMetadataSnippets[0].snippetText.runs[0].text,
			ID: .videoId,
			thumbs: .thumbnail.thumbnails[0].url
		}
	]'

	 jq '[ .contents|
	..|.playlistRenderer? |
	select(. !=null) |
		{
			scraper: "youtube_search",
			url: "'"${yt_video_link_domain}"'/playlist?list=\(.videoId)",
			title: "[Playlist] \(.title.simpleText)",
			channel: .longBylineText.runs[0].text,
			duration: "\(.videoCount) videos",
			views: "playlist",
			date: "playlist",
			ID: .playlistId,
			thumbs: .thumbnails[0].thumbnails[0].url,
			action: "scrape type=invidious-playlist search='"${yt_video_link_domain}"'/playlist?list=\(.playlistId)"
		}
	]'
    } < "$_tmp_json" >> "$output_json_file"
}
