148 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/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_no=0
 | |
| 
 | |
| grab (){
 | |
|   NOTE="$grab_no $@"
 | |
|   #echo $@
 | |
|   ((grab_no++))
 | |
|   scrot --note "-f '/usr/share/fonts/noto/NotoSansMono-Medium.ttf/40' -c 255,0,0,255 -t '$NOTE'" "/opt/static/$(date -Iminutes).png"
 | |
|   #echo "not grabbing"
 | |
| }
 | |
| 
 | |
| grab_screen_to_public(){
 | |
|   id=$1
 | |
|   filepath="/opt/static/$id/preview.png"
 | |
|   tempfile="/opt/static/$id/temp.png"
 | |
|   mkdir -p "/opt/static/$id"
 | |
|   rm -f "$tempfile"
 | |
|   scrot "$tempfile"
 | |
|   mv -f "$tempfile" "$filepath"
 | |
| }
 | |
| 
 | |
| 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
 | |
|   grab "after sleep 1"
 | |
|   click 1886 13 #maximize button
 | |
|   grab "after maximize"
 | |
|   sleep 1
 | |
|   grab "after sleep 1"
 | |
|   # no need to reopen the network tab, as it's almost certainly already open
 | |
|   # keycombo Control_L Shift_L e
 | |
|   # grab "after ctrl+shift+e"
 | |
|   # keycombo Shift_L F5 #profiler
 | |
|   # grab "after shift-c F5"
 | |
|   # keycombo Control_L Shift_L e
 | |
|   # sleep 5 # it needs some time
 | |
| }
 | |
| 
 | |
| load_website(){
 | |
|   URL=$1
 | |
|   keycombo Control_L l
 | |
|   grab ctrl+l
 | |
|   xdotool type "$URL"
 | |
|   grab type url
 | |
|   xdotool key Return
 | |
|   grab enter
 | |
|   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 30 ]
 | |
|     then
 | |
|       echo "Could not load website in time, trying anyway"
 | |
|       break;
 | |
|     fi
 | |
|   done
 | |
|   echo "website loaded!"
 | |
| }
 | |
| 
 | |
| open_network_inspector(){
 | |
|   keycombo Shift_L F5 #profiler
 | |
|   sleep 1
 | |
|   keycombo Control_L Shift_L e
 | |
| }
 | |
| 
 | |
| network_inspector_search(){
 | |
|   query=$1
 | |
|   keycombo Control_L f
 | |
|   sleep 0.2
 | |
|   keycombo Control_L a
 | |
|   sleep 0.1
 | |
|   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
 | |
| }
 |