Refactor the script so it's more readable. Make image annotation multithreaded
This commit is contained in:
		
							parent
							
								
									8661cf88c7
								
							
						
					
					
						commit
						9dc42f6f90
					
				| @ -12,9 +12,10 @@ get_width(){ | ||||
| 
 | ||||
| 
 | ||||
| annotate_header(){ | ||||
|   header=$1 | ||||
|   echo annotate $1 | ||||
|   filename=$1 | ||||
|   shift; | ||||
|   d=$(date "+%Y-%m-%d__%H_%M_%S") | ||||
|   filename="${d}__$header.png" | ||||
|   #filename="2022-03-10__19_33_55__set-cookie.png" | ||||
|   cropped_filename="${filename}__cropped.png" | ||||
|   overlay_filename="${cropped_filename}__overlay.png" | ||||
| @ -26,7 +27,6 @@ annotate_header(){ | ||||
|   top=330 | ||||
|   width=824 | ||||
|   height=1260 | ||||
|   scrot $filename | ||||
|   vips extract_area "$filename" "$cropped_filename" $left $top $width $height | ||||
| 
 | ||||
|   # prepare overlay canvases | ||||
| @ -83,6 +83,7 @@ annotate_header(){ | ||||
|   convert "$filename" "$overlay_filename" -compose Darken -composite "$annotated_filename.step.png" | ||||
|   convert "$annotated_filename.step.png" "$hardoverlay_filename" -compose src-over -composite "$annotated_filename" | ||||
|   rm "$overlay_filename" "$annotated_filename.step.png" "$hardoverlay_filename" "$cropped_filename" "$filename" | ||||
|   echo "done annotate $filename"; | ||||
| } | ||||
| 
 | ||||
| #annotate_header "set-cookie" "identyfikator internetowy z cookie" "Cookie" "identyfikator internetowy z cookie" | ||||
|  | ||||
							
								
								
									
										180
									
								
								script3.sh
									
									
									
									
									
								
							
							
						
						
									
										180
									
								
								script3.sh
									
									
									
									
									
								
							| @ -2,171 +2,45 @@ | ||||
| 
 | ||||
| source ./ephemeral-x.sh | ||||
| source ./annotate_header.sh | ||||
| source ./utils.sh | ||||
| 
 | ||||
| get_pixel_color(){ | ||||
|   x=$1; | ||||
|   y=$2; | ||||
|   output_path="/tmp/$(mktemp -u XXXXXX).png" | ||||
|   scrot $output_path | ||||
|   magick $output_path -format "%[hex:p{$x,$y}]" info: | ||||
| } | ||||
| start_firefox | ||||
| prepare_firefox | ||||
| load_website "biedronka.pl" | ||||
| open_network_inspector | ||||
| network_inspector_search "method:GET domain:adocean.pl" # can filter with more granularity: https://developer.mozilla.org/en-US/docs/Tools/Network_Monitor/request_list#filtering_by_properties | ||||
| 
 | ||||
| extract_text(){ | ||||
|   output_path="/tmp/$(mktemp -u XXXXXX).png" | ||||
|   cropped_path=$output_path--cropped.png | ||||
|   scrot $output_path | ||||
|   left=$1 | ||||
|   top=$2 | ||||
|   width=$3 | ||||
|   height=$4 | ||||
|   # https://www.libvips.org/API/current/libvips-conversion.html#vips-extract-area | ||||
|   vips extract_area "$output_path" "$cropped_path" $left $top $width $height | ||||
|   tesseract "$cropped_path" stdout -l eng | ||||
| } | ||||
| index=0 | ||||
| 
 | ||||
| click (){ | ||||
|   xdotool mousemove $1 $2 | ||||
|   xdotool click 1 | ||||
| } | ||||
| declare -a pids; | ||||
| pids=() | ||||
| 
 | ||||
| grab (){ | ||||
|   NOTE="$@" | ||||
|   echo $@ | ||||
|   scrot --note "-f '/usr/share/fonts/noto/NotoSansMono-Medium.ttf/40' -c 255,0,0,255 -t '$NOTE'" | ||||
| } | ||||
| 
 | ||||
| keycombo(){ | ||||
|   for key in "$@" | ||||
|   do | ||||
|     xdotool keydown $key | ||||
|     sleep 0.01 | ||||
|   done | ||||
|   for key in "$@" | ||||
|   do | ||||
|     xdotool keyup $key | ||||
|     sleep 0.01 | ||||
|   done | ||||
|   sleep 0.5 | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| rm -rf /root/.mozilla/firefox/bifup8k5.docker/sessionstore-backups | ||||
| #echo 'user_pref("layout.css.devPixelsPerPx", "1.5");' >> /root/.mozilla/firefox/bifup8k5.docker/prefs.js | ||||
| 
 | ||||
| firefox --devtools > /dev/null & | ||||
| 
 | ||||
| # test | ||||
| 
 | ||||
| FIREFOX_PID=$! | ||||
| 
 | ||||
| sleep 3 | ||||
| 
 | ||||
| xdotool key Return # in case there's a "firefox closed unexpectedly" button | ||||
| 
 | ||||
| sleep 1 | ||||
| 
 | ||||
| # click 1424 628 | ||||
| 
 | ||||
| # grab before maximize | ||||
| 
 | ||||
| click 1886 13 #maximize button | ||||
| 
 | ||||
| sleep 1 | ||||
| 
 | ||||
| #grab after maximize before control shift E | ||||
| 
 | ||||
| #keycombo Control_L Shift_L e | ||||
| 
 | ||||
| #sleep 1 | ||||
| 
 | ||||
| # grab before escape | ||||
| 
 | ||||
| #xdotool key Escape | ||||
| sleep 0.1 | ||||
| # grab after escape | ||||
| 
 | ||||
| 
 | ||||
| keycombo Control_L Shift_L e | ||||
| #xdotool key Escape | ||||
| keycombo Shift_L c F5 #profiler | ||||
| keycombo Control_L Shift_L e | ||||
| 
 | ||||
| # grab after control shift e before ctrl L | ||||
| 
 | ||||
| keycombo Control_L l | ||||
| 
 | ||||
| # grab after control L | ||||
| 
 | ||||
| xdotool type "biedronka.pl" | ||||
| 
 | ||||
| xdotool key Return | ||||
| 
 | ||||
| # grab after return | ||||
| 
 | ||||
| sleep 1 | ||||
| 
 | ||||
| # scrot | ||||
| 
 | ||||
| 
 | ||||
| echo "waiting for the website to load..." | ||||
| times=0 | ||||
| while [ $(get_pixel_color 143 122) = "2E3436" ] # the center of the X icon that becomes a "refresh" icon once the website is finished loading | ||||
| while network_inspector_has_more_entries | ||||
| do | ||||
|   sleep 0.5 | ||||
|   printf "." | ||||
|   #scrot | ||||
|   times=$((times + 1)) | ||||
|   if [ $times -eq 10 ] | ||||
|   then | ||||
|     echo "Could not load website in time" | ||||
|     break; | ||||
|   fi | ||||
| done | ||||
| 
 | ||||
| keycombo Shift_L F5 #profiler | ||||
| echo shift f5 | ||||
| sleep 1 | ||||
| echo "sleep 1" | ||||
| keycombo Control_L Shift_L e | ||||
| echo ctrl shift e | ||||
| scrot | ||||
| keycombo Control_L f | ||||
| sleep 0.2 | ||||
| xdotool type "method:GET domain:adocean.pl" # can filter with more granularity: https://developer.mozilla.org/en-US/docs/Tools/Network_Monitor/request_list#filtering_by_properties | ||||
| xdotool key Escape | ||||
| sleep 0.3 | ||||
| scrot | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| seq 28 | xargs -I {} xdotool key Tab | ||||
| xdotool key Down | ||||
| sleep 0.1 | ||||
| xdotool key Up | ||||
| sleep 0.1 | ||||
| #scrot | ||||
| 
 | ||||
| while [ $(get_pixel_color 1267 1572) = "F9F9FA" ] | ||||
| do | ||||
|   annotate_header \ | ||||
|   filename="${index}.png" | ||||
|   scrot "$filename" | ||||
|   annotate_header "$filename" \ | ||||
|     "set-cookie" "identyfikator internetowy z cookie" \ | ||||
|     "Cookie" "identyfikator internetowy z cookie" \ | ||||
|     "Referer" "Część mojej historii przeglądania" | ||||
|   xdotool key Tab | ||||
|   sleep 0.05 | ||||
|   xdotool key Down | ||||
|   sleep 0.2 | ||||
|   # use python script ^here to annotate the cropped png | ||||
|   # scrot | ||||
|   # echo "########## EXTRACTED TEXT: " | ||||
|   # extract_text 2056 330 824 1260 | grep cookie | ||||
|     "Referer" "Część mojej historii przeglądania" & | ||||
|   pids+=($!) | ||||
|   network_inspector_next_entry | ||||
|   ((index++)) | ||||
| done | ||||
| 
 | ||||
| echo "starting wait..." | ||||
| 
 | ||||
| jobs -l | ||||
| 
 | ||||
| for PID in "${pids[@]}" | ||||
| do | ||||
|      wait $PID | ||||
| done | ||||
| 
 | ||||
| echo "Done!" | ||||
| 
 | ||||
| kill -2 %%; | ||||
| 
 | ||||
| cleanup | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| echo "Done!" | ||||
|  | ||||
							
								
								
									
										124
									
								
								utils.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										124
									
								
								utils.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,124 @@ | ||||
| #!/bin/bash | ||||
| 
 | ||||
| get_pixel_color(){ | ||||
|   x=$1; | ||||
|   y=$2; | ||||
|   output_path="/tmp/$(mktemp -u XXXXXX).png" | ||||
|   scrot $output_path | ||||
|   magick $output_path -format "%[hex:p{$x,$y}]" info: | ||||
| } | ||||
| 
 | ||||
| extract_text(){ | ||||
|   output_path="/tmp/$(mktemp -u XXXXXX).png" | ||||
|   cropped_path=$output_path--cropped.png | ||||
|   scrot $output_path | ||||
|   left=$1 | ||||
|   top=$2 | ||||
|   width=$3 | ||||
|   height=$4 | ||||
|   # https://www.libvips.org/API/current/libvips-conversion.html#vips-extract-area | ||||
|   vips extract_area "$output_path" "$cropped_path" $left $top $width $height | ||||
|   tesseract "$cropped_path" stdout -l eng | ||||
| } | ||||
| 
 | ||||
| click (){ | ||||
|   xdotool mousemove $1 $2 | ||||
|   xdotool click 1 | ||||
| } | ||||
| 
 | ||||
| grab (){ | ||||
|   NOTE="$@" | ||||
|   echo $@ | ||||
|   scrot --note "-f '/usr/share/fonts/noto/NotoSansMono-Medium.ttf/40' -c 255,0,0,255 -t '$NOTE'" | ||||
| } | ||||
| 
 | ||||
| keycombo(){ | ||||
|   for key in "$@" | ||||
|   do | ||||
|     xdotool keydown $key | ||||
|     sleep 0.01 | ||||
|   done | ||||
|   for key in "$@" | ||||
|   do | ||||
|     xdotool keyup $key | ||||
|     sleep 0.01 | ||||
|   done | ||||
|   sleep 0.5 | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| start_firefox(){ | ||||
|     rm -rf /root/.mozilla/firefox/bifup8k5.docker/sessionstore-backups | ||||
|     #echo 'user_pref("layout.css.devPixelsPerPx", "1.5");' >> /root/.mozilla/firefox/bifup8k5.docker/prefs.js | ||||
|     firefox --devtools > /dev/null & | ||||
|     FIREFOX_PID=$! | ||||
|     sleep 3 | ||||
| } | ||||
| 
 | ||||
| prepare_firefox(){ | ||||
|   xdotool key Return # in case there's a "firefox closed unexpectedly" button | ||||
|   sleep 1 | ||||
|   click 1886 13 #maximize button | ||||
|   sleep 1 | ||||
|   sleep 0.1 | ||||
|   keycombo Control_L Shift_L e | ||||
|   keycombo Shift_L c F5 #profiler | ||||
|   keycombo Control_L Shift_L e | ||||
| } | ||||
| 
 | ||||
| load_website(){ | ||||
|   URL=$1 | ||||
|   keycombo Control_L l | ||||
|   xdotool type "$URL" | ||||
|   xdotool key Return | ||||
|   sleep 1 | ||||
|   echo "waiting for $URL to load..." | ||||
|   times=0 | ||||
|   while [ $(get_pixel_color 143 122) = "2E3436" ] # the center of the X icon that becomes a "refresh" icon once the website is finished loading | ||||
|   do | ||||
|     sleep 0.5 | ||||
|     printf "." | ||||
|     #scrot | ||||
|     times=$((times + 1)) | ||||
|     if [ $times -eq 10 ] | ||||
|     then | ||||
|       echo "Could not load website in time" | ||||
|       break; | ||||
|     fi | ||||
|   done | ||||
| } | ||||
| 
 | ||||
| open_network_inspector(){ | ||||
|   keycombo Shift_L F5 #profiler | ||||
|   echo shift f5 | ||||
|   sleep 1 | ||||
|   echo "sleep 1" | ||||
|   keycombo Control_L Shift_L e | ||||
|   echo ctrl shift e | ||||
| } | ||||
| 
 | ||||
| network_inspector_search(){ | ||||
|   query=$1 | ||||
|   keycombo Control_L f | ||||
|   sleep 0.2 | ||||
|   xdotool type "$query"  | ||||
|   xdotool key Escape | ||||
|   sleep 0.3 | ||||
|   seq 28 | xargs -I {} xdotool key Tab | ||||
|   xdotool key Down | ||||
|   sleep 0.1 | ||||
|   xdotool key Up | ||||
|   sleep 0.1 | ||||
| } | ||||
| 
 | ||||
| network_inspector_has_more_entries(){ | ||||
|   [ $(get_pixel_color 1267 1572) = "F9F9FA" ] | ||||
| } | ||||
| 
 | ||||
| network_inspector_next_entry(){ | ||||
|   xdotool key Tab | ||||
|   sleep 0.05 | ||||
|   xdotool key Down | ||||
|   sleep 0.2 | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user