mirror of
				https://gitea.invidious.io/iv-org/youtube-utils.git
				synced 2024-08-15 00:53:16 +00:00 
			
		
		
		
	api-helper: Move client data assembly logic to a separate function
This commit is contained in:
		
							parent
							
								
									fd743bcc80
								
							
						
					
					
						commit
						d45d85391e
					
				
					 1 changed files with 62 additions and 56 deletions
				
			
		|  | @ -309,6 +309,57 @@ endpoint_select() | |||
| } | ||||
| 
 | ||||
| 
 | ||||
| # | ||||
| # Function to craft the client data | ||||
| # | ||||
| 
 | ||||
| make_request_data() | ||||
| { | ||||
| 	client="\"hl\":\"${hl}\",\"gl\":\"${gl}\"" | ||||
| 
 | ||||
| 	client="${client},\"deviceMake\":\"${client_extra_device_make}\"" | ||||
| 	client="${client},\"deviceModel\":\"${client_extra_device_model}\"" | ||||
| 
 | ||||
| 	if ! [ -z "$screen" ]; then | ||||
| 		client="${client},\"clientScreen\":\"${screen}\"" | ||||
| 	fi | ||||
| 
 | ||||
| 	client="${client},\"clientName\":\"${client_name}\"" | ||||
| 	client="${client},\"clientVersion\":\"${client_vers}\"" | ||||
| 
 | ||||
| 	if ! [ -z "$client_extra_os_name" ]; then | ||||
| 		client="${client},\"osName\":\"${client_extra_os_name}\"" | ||||
| 	fi | ||||
| 
 | ||||
| 	if ! [ -z "$client_extra_os_vers" ]; then | ||||
| 		client="${client},\"osVersion\":\"${client_extra_os_vers}\"" | ||||
| 	fi | ||||
| 
 | ||||
| 	if ! [ -z "$client_extra_platform" ]; then | ||||
| 		client="${client},\"platform\":\"${client_extra_platform}\"" | ||||
| 	fi | ||||
| 
 | ||||
| 	if ! [ -z "$client_extra_form_factor" ]; then | ||||
| 		client="${client},\"clientFormFactor\":\"${client_extra_form_factor}\"" | ||||
| 	fi | ||||
| 
 | ||||
| 
 | ||||
| 	data="{\"context\":{\"client\":{$client}},$endpoint_data}" | ||||
| 
 | ||||
| 	# Basic debug | ||||
| 	if [ $debug = true ]; then | ||||
| 		if command -v jq >&2 >/dev/null; then | ||||
| 			printf "\nSending: %s\n\n" "$data" | jq . >&2 | ||||
| 		else | ||||
| 			printf "\nSending: %s\n\n" "$data" | sed 's/{/{\n/g; s/}/\n}/g; s/,/,\n/g' >&2 | ||||
| 		fi | ||||
| 	fi | ||||
| 
 | ||||
| 	# Return data | ||||
| 	printf "{\"context\":{\"client\":{%s}},%s}\n" "$client" "$endpoint_data" | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| # | ||||
| # Parameters init | ||||
| # | ||||
|  | @ -323,7 +374,7 @@ data="" | |||
| 
 | ||||
| 
 | ||||
| # | ||||
| # Interactive client selection | ||||
| # Parse arguments | ||||
| # | ||||
| 
 | ||||
| while :; do | ||||
|  | @ -449,7 +500,7 @@ fi | |||
| 
 | ||||
| 
 | ||||
| # | ||||
| # Client selection | ||||
| # Required parameters. Ask if not provided | ||||
| # | ||||
| 
 | ||||
| if [ -z "$client_option" ]; then | ||||
|  | @ -461,13 +512,6 @@ if [ -z "$client_option" ]; then | |||
| 	fi | ||||
| fi | ||||
| 
 | ||||
| client_select "$client_option" | ||||
| 
 | ||||
| 
 | ||||
| # | ||||
| # Endpoint selection | ||||
| # | ||||
| 
 | ||||
| if [ -z "$endpoint_option" ]; then | ||||
| 	if [ $interactive = true ]; then | ||||
| 		print_endpoints | ||||
|  | @ -480,63 +524,25 @@ fi | |||
| # new line | ||||
| echo >&2 | ||||
| 
 | ||||
| endpoint_select "$endpoint_option" | ||||
| 
 | ||||
| 
 | ||||
| # | ||||
| # Interactive language/region selection | ||||
| # | ||||
| 
 | ||||
| if [ $interactive = true ]; then | ||||
| 	hl=$(query_with_default "Enter content language (hl)" "en") | ||||
| 	gl=$(query_with_default "Enter content region (gl)"   "US") | ||||
| 
 | ||||
| 	client="\"hl\":\"${hl}\",\"gl\":\"${gl}\"" | ||||
| 
 | ||||
| 	client="${client},\"deviceMake\":\"${client_extra_device_make}\"" | ||||
| 	client="${client},\"deviceModel\":\"${client_extra_device_model}\"" | ||||
| 
 | ||||
| 	if ! [ -z "$screen" ]; then | ||||
| 		client="${client},\"clientScreen\":\"${screen}\"" | ||||
| 	fi | ||||
| 
 | ||||
| 	client="${client},\"clientName\":\"${client_name}\"" | ||||
| 	client="${client},\"clientVersion\":\"${client_vers}\"" | ||||
| 
 | ||||
| 	if ! [ -z "$client_extra_os_name" ]; then | ||||
| 		client="${client},\"osName\":\"${client_extra_os_name}\"" | ||||
| 	fi | ||||
| 
 | ||||
| 	if ! [ -z "$client_extra_os_vers" ]; then | ||||
| 		client="${client},\"osVersion\":\"${client_extra_os_vers}\"" | ||||
| 	fi | ||||
| 
 | ||||
| 	if ! [ -z "$client_extra_platform" ]; then | ||||
| 		client="${client},\"platform\":\"${client_extra_platform}\"" | ||||
| 	fi | ||||
| 
 | ||||
| 	if ! [ -z "$client_extra_form_factor" ]; then | ||||
| 		client="${client},\"clientFormFactor\":\"${client_extra_form_factor}\"" | ||||
| 	fi | ||||
| 
 | ||||
| 
 | ||||
| 	data="{\"context\":{\"client\":{$client}},$endpoint_data}" | ||||
| 
 | ||||
| 	# Basic debug | ||||
| 	if [ $debug = true ]; then | ||||
| 		if command -v jq >&2 >/dev/null; then | ||||
| 			printf "\nSending: %s\n\n" "$data" | jq . >&2 | ||||
| 		else | ||||
| 			printf "\nSending: %s\n\n" "$data" | sed 's/{/{\n/g; s/}/\n}/g; s/,/,\n/g' >&2 | ||||
| 		fi | ||||
| 	fi | ||||
| fi | ||||
| 
 | ||||
| 
 | ||||
| # | ||||
| # Final command | ||||
| # Run the request | ||||
| # | ||||
| 
 | ||||
| client_select "$client_option" | ||||
| endpoint_select "$endpoint_option" | ||||
| 
 | ||||
| if [ $interactive = true ]; then | ||||
| 	data=$(make_request_data) | ||||
| fi | ||||
| 
 | ||||
| 
 | ||||
| url="https://www.youtube.com/${endpoint}?key=${apikey}" | ||||
| 
 | ||||
| # Headers | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue