Przeglądaj źródła

TODO: Documentation functions has been completed

david 5 lat temu
rodzic
commit
7d72a3e652
2 zmienionych plików z 77 dodań i 12 usunięć
  1. 2 2
      TODO.md
  2. 75 10
      dataLoad.py

+ 2 - 2
TODO.md

@@ -7,7 +7,7 @@
 
 
 ## To Do:
 ## To Do:
 
 
-* Document Functions
+* Document Functions (COMPLETE)
 * Change from `global` to pass around
 * Change from `global` to pass around
 * Change `save_image()` to `output_image`
 * Change `save_image()` to `output_image`
-* 
+* Move all the image stuff over to it's own

+ 75 - 10
dataLoad.py

@@ -31,17 +31,20 @@ sess = requests.Session()
 head = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
 head = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
 sess.headers.update(head)
 sess.headers.update(head)
 
 
-ON = 'X'
-OFF = '.'
-DIR = 'data'
+ON = 'X'      # Dark pixel in an image
+OFF = '.'     # Light pixel in an image
+DIR = 'data'  # Data directory name, do we really need this? Is it really going to change?
 
 
-INTENSITY = 75
+INTENSITY = 75 # How bright does something have to be to trigger it being a dark or light pixel?
+# Looks like around 75 removes the extra stuff that s0urce.io does to prevent it from being just matching images.
 
 
+# Globals, Yuck!
 im = ''
 im = ''
 pix = [0, 0]
 pix = [0, 0]
 size = [0, 0]
 size = [0, 0]
 pal = ''
 pal = ''
 
 
+# Check the environment, do we have all that we need?
 if not os.path.exists('in'):
 if not os.path.exists('in'):
     os.mkdir('in')
     os.mkdir('in')
 
 
@@ -54,20 +57,32 @@ def download(howhard, index):
     Download an image based upon how hard it is.
     Download an image based upon how hard it is.
 
 
     You print out the return value.  Are you returning anything useful??
     You print out the return value.  Are you returning anything useful??
+    (Ah, yeah I could just have it print out the status code when there is a error,
+     Which would get rid of the need for it to return anything)
     """
     """
     r = sess.get(f'http://s0urce.io/client/img/word/{howhard}/{index}')
     r = sess.get(f'http://s0urce.io/client/img/word/{howhard}/{index}')
     if(r.status_code == 200):
     if(r.status_code == 200):
         with open(f'in/{howhard}_{index}.png', 'wb') as f:
         with open(f'in/{howhard}_{index}.png', 'wb') as f:
             f.write(r.content)
             f.write(r.content)
-        return f'{howhard}_{index}.png ' + str(r.status_code)
-    return r.status_code
+    # We did not get a 200 Okay, log this... Hmm maybe we need to make a log file?
+    print( f'{howhard}_{index}.png ' + str(r.status_code) )
 
 
 def img_point(x, y):
 def img_point(x, y):
-        global pix
-        return pix[x, y]
+    global pix
+    """
+    img_point, returns a pixel of an image,
+    given the x and y on the image.
+    """
+    return pix[x, y]
 
 
 def img_avg(x, y):
 def img_avg(x, y):
     global im, pal
     global im, pal
+    """
+    img_avg, returns the average brightness 0-255,
+    given the x and y on the image calls img_point,
+    to get the individual rgb values to calculate,
+    brightness.
+    """
     rgb = img_point(x,y)
     rgb = img_point(x,y)
     if(im.mode == 'P'):
     if(im.mode == 'P'):
         rgb = pal[rgb*3:(rgb+1)*3]
         rgb = pal[rgb*3:(rgb+1)*3]
@@ -79,11 +94,31 @@ def img_avg(x, y):
 
 
 def is_set(x, y):
 def is_set(x, y):
     global INTENSITY
     global INTENSITY
+    """
+    is_set, returns True or False of calculating,
+    the brightness of the given point on a image,
+    compared to given intensity.
+    
+    True means the brightness at the given x and y,
+    is Less Than which means its dark.
+    
+    False means the brightness at the given x and y,
+    is Greater Than which means its bright.
+    """
     avg = img_avg(x,y)
     avg = img_avg(x,y)
     return (avg < INTENSITY)
     return (avg < INTENSITY)
 
 
 def scan_img():
 def scan_img():
     global sx, sy, ex, ey, total
     global sx, sy, ex, ey, total
+    """
+    scan_img, looks at a image and looks for dark pixels,
+    if it is a dark pixel record the number and resize the,
+    returned values to show where the most dark pixels on the,
+    image are located.
+    
+    given image size.
+    returns start x, y and end x, y and total number of dark pixels.
+    """
     total = 0
     total = 0
     sx = size[0]; ex = 0
     sx = size[0]; ex = 0
     sy = size[1]; ey = 0
     sy = size[1]; ey = 0
@@ -115,9 +150,17 @@ def scan_img():
         ey += 1
         ey += 1
 
 
     #print (sx,ex,sy,ey)
     #print (sx,ex,sy,ey)
-    return(sx,sy,ex,ey)
+    return(sx,sy,ex,ey,total)
 
 
 def save_image():
 def save_image():
+    """
+    For the size of the area we have reduced down to where the majority of dark pixels,
+    are located, store all that into a list and return the list.
+    
+    given start x, y and end x, y.
+    returns multiple strings in a list that are edited to use characters to represent,
+    the dark and light pixels of the image.
+    """
     result = []
     result = []
     for y in range(sy,ey):
     for y in range(sy,ey):
         s = ''
         s = ''
@@ -132,6 +175,15 @@ def save_image():
 
 
 def run(difficult):
 def run(difficult):
     global size, pix, im
     global size, pix, im
+    """
+    run, represents a single execution of components to the image, (Actuall we do it 1 category at a time instead of just 1 single execution )
+    those components do the following...                           (Each category has around 70 items so we standardize on 70, but           )
+                                                                   (not all of the categories have 70 and thus we print a File does not exist)
+    We open and load the image, and get it's size,
+    then we scan_img for dark and light pixels, <-- This narrows the image down to just the majority of dark pixels
+    then from that we output the image line by line onto the screen after it has been save_image d into list form,
+    Where we ask the user what the word is, and after that we save all that to a file in the data directory.
+    """
     
     
     for x in range(0, 70):
     for x in range(0, 70):
         fname = f'in/{difficult}_{x}.png'
         fname = f'in/{difficult}_{x}.png'
@@ -175,6 +227,7 @@ def run(difficult):
         # os.remove(f'{fname}')  # Grr No bad bean, keep file for error checking
         # os.remove(f'{fname}')  # Grr No bad bean, keep file for error checking
         # print(f"File '{fname}' automatically removed")
         # print(f"File '{fname}' automatically removed")
 
 
+# Now to call all the previous functions
 if (DOWNLOAD == True):
 if (DOWNLOAD == True):
     print("Downloading s0urce.io Words")
     print("Downloading s0urce.io Words")
     print("EASY")
     print("EASY")
@@ -202,6 +255,7 @@ if (DOWNLOAD == True):
 
 
 # ----------------------------------------------------------------------------------------
 # ----------------------------------------------------------------------------------------
 # All below was in a seperate dataJS.py file... but now I have fixed it so it's 1 script!
 # All below was in a seperate dataJS.py file... but now I have fixed it so it's 1 script!
+# Do we really need to worry about all this right now? (I think we have enough bugs to begin with.)
 
 
 if (JSONME.lower() != 'false'):
 if (JSONME.lower() != 'false'):
     print("Now exporting to JSON")
     print("Now exporting to JSON")
@@ -210,6 +264,9 @@ if (JSONME.lower() != 'false'):
 
 
     def test(t):
     def test(t):
         global DIR
         global DIR
+        """
+        given the filename, we read it and add it to a list and return the list.
+        """
         fname = f'{DIR}/{t}.txt'
         fname = f'{DIR}/{t}.txt'
         r = []
         r = []
         try:
         try:
@@ -222,6 +279,13 @@ if (JSONME.lower() != 'false'):
 
 
     def insertJS(item):
     def insertJS(item):
         global JSON
         global JSON
+        """
+        Edits the file given and adds the JSONIFIED item to the file between 2 indicators,
+        // T
+        and
+        // t
+        In between the T and t will be replaced with the item.
+        """
         item = json.dumps(item)
         item = json.dumps(item)
         item = f'{item},'
         item = f'{item},'
         r = []
         r = []
@@ -257,4 +321,5 @@ if (JSONME.lower() != 'false'):
             word = te
             word = te
             insertJS(word)
             insertJS(word)
 
 
-print("Complete")
+# Regardless what we did let the user know we at least ran and we are now done
+print("Complete")