def put_extras(path, form_dict, uid, quiet=True): html_file_name = os.path.join(path, uid.replace('-', 'm') + '_drawings.html') image_file_base_name = os.path.join(path, uid.replace('-', 'm') + '_image_') stroke_file_base_name = os.path.join(path, uid.replace('-', 'm') + '_stroke_') tasks_data = turkutil.form_dict_to_tasks_dict(form_dict)['task'] html = [r"""<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>Images Drawn By %s</title> <style type="text/css"> div { display: inline-block; border: thin solid black; } </style> </head> <body>""" % uid] for n, task in tasks_data.iteritems(): image_name = image_file_base_name + '%d.png' % (int(n) + 1) uri_to_png(task['image'], '%s%d.png' % (image_file_base_name, int(n) + 1)) html.append(r"""<div><img src="%s" alt="given" title="given"/><img src="%s_image_%d.png" alt="drawn" title="drawn"/></div>""" % (task['completion-image-anonymous_url'], uid.replace('-', 'm'), int(n) + 1)) with open('%s%d.cstroke' % (stroke_file_base_name, int(n) + 1), 'wb') as f: f.write(compress_stroke(task['strokes'])) html.append(r"""</body> </html>""") with open(html_file_name, 'w') as f: f.write('\n'.join(html))
def compress_all_strokes_in_current_directory(uncompressed_ext='.stroke', compressed_ext='.cstroke', remove_old=True, verbose=True, show_compression=True): for base, dirs, files in os.walk(os.getcwd()): if verbose: print("I'm in " + base) for file_name in files: if file_name[-len(uncompressed_ext):] == uncompressed_ext: if not show_compression: print('Compressing %s...' % file_name) with open(os.path.join(base, file_name), 'rb') as f: stroke = f.read() new_stroke = compress_stroke(stroke) with open(os.path.join(base, file_name.replace(uncompressed_ext, compressed_ext)), 'wb') as f: f.write(new_stroke) if show_compression: print('Compressed %s at\t\t%.2f%%' % (file_name, 100.0 * len(new_stroke) / len(stroke))) if remove_old: os.rename(os.path.join(base, file_name), os.path.join(base, file_name + '.bak')) # Testing to make sure that we can actually decompress the new file correctly before deleting the old file with open(os.path.join(base, file_name + '.bak'), 'rb') as f: old_stroke = f.read() with open(os.path.join(base, file_name.replace(uncompressed_ext, compressed_ext)), 'rb') as f: new_stroke = f.read() new_old_stroke = decompress_stroke(new_stroke) if new_old_stroke.strip() != old_stroke.strip() and stroke_to_list(new_old_stroke) != stroke_to_list(old_stroke): os.rename(os.path.join(base, file_name + '.bak'), os.path.join(base, file_name)) os.remove(os.path.join(base, file_name.replace(uncompressed_ext, compressed_ext))) print('Error on stroke %s in %s' % (file_name, base)) print('I wanted:') print(stroke_to_list(old_stroke)) print('I got:') print(stroke_to_list(new_old_stroke)) print('The compressed version is:') print(repr(new_stroke)) raw_input('Press enter or ^C') else: os.remove(os.path.join(base, file_name + '.bak'))
def decompress_all_strokes_in_current_directory(uncompressed_ext='.stroke', compressed_ext='.cstroke', remove_old=True, verbose=True, show_compression=True): for base, dirs, files in os.walk(os.getcwd()): if verbose: print("I'm in " + base) for file_name in files: if file_name[-len(compressed_ext):] == compressed_ext: if not show_compression: print('Decompressing %s...' % file_name) with open(os.path.join(base, file_name), 'rb') as f: stroke = f.read() new_stroke = decompress_stroke(stroke) with open( os.path.join( base, file_name.replace(compressed_ext, uncompressed_ext)), 'wb') as f: f.write(new_stroke) if show_compression: print('Decompressed %s at\t\t%.2f%%' % (file_name, 100.0 * len(stroke) / len(new_stroke))) if remove_old: os.rename(os.path.join(base, file_name), os.path.join(base, file_name + '.bak')) # Testing to make sure that we can actually decompress the new file correctly before deleting the old file with open(os.path.join(base, file_name + '.bak'), 'rb') as f: old_stroke = f.read() with open( os.path.join( base, file_name.replace(compressed_ext, uncompressed_ext)), 'rb') as f: new_stroke = f.read() new_old_stroke = compress_stroke(new_stroke) if new_old_stroke != old_stroke and stroke_to_list( new_old_stroke) != stroke_to_list(old_stroke): os.rename(os.path.join(base, file_name + '.bak'), os.path.join(base, file_name)) os.remove( os.path.join( base, file_name.replace(uncompressed_ext, compressed_ext))) print('Error on stroke %s in %s' % (file_name, base)) print('I wanted:') print(repr(old_stroke)) print('I got:') print(repr(new_old_stroke)) print('The uncompressed version is:') print(new_stroke) raw_input('Press enter or ^C') else: os.remove(os.path.join(base, file_name + '.bak'))
def put_extras(path, form_dict, uid, quiet=True): html_file_name = os.path.join(path, uid.replace('-', 'm') + '_drawings.html') image_file_base_name = os.path.join(path, uid.replace('-', 'm') + '_image_') stroke_file_base_name = os.path.join(path, uid.replace('-', 'm') + '_stroke_') tasks_data = turkutil.form_dict_to_tasks_dict(form_dict)['task'] html = [ r"""<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>Images Drawn By %s</title> <style type="text/css"> div { display: inline-block; border: thin solid black; } </style> </head> <body>""" % uid ] for n, task in tasks_data.iteritems(): image_name = image_file_base_name + '%d.png' % (int(n) + 1) uri_to_png(task['image'], '%s%d.png' % (image_file_base_name, int(n) + 1)) html.append( r"""<div><img src="%s" alt="given" title="given"/><img src="%s_image_%d.png" alt="drawn" title="drawn"/></div>""" % (task['completion-image-anonymous_url'], uid.replace( '-', 'm'), int(n) + 1)) with open('%s%d.cstroke' % (stroke_file_base_name, int(n) + 1), 'wb') as f: f.write(compress_stroke(task['strokes'])) html.append(r"""</body> </html>""") with open(html_file_name, 'w') as f: f.write('\n'.join(html))
def put_extras(path, form_dict, uid, quiet=True): html_file_name = os.path.join(path, uid.replace('-', 'm') + '_drawings.html') image_file_base_name = os.path.join(path, uid.replace('-', 'm') + '_image_') stroke_file_base_name = os.path.join(path, uid.replace('-', 'm') + '_stroke_') tasks_data = turkutil.form_dict_to_tasks_dict(form_dict)['task'] html = [r"""<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>Images Drawn By %s</title> <style type="text/css"> div.task { display: inline-block; border: thin solid black; } .image-holder { padding: 2.5px; width: 100px; height: 100px; } .class-holder { display: inline-block; padding: 0px; } .class-box { display: inline-block; padding: 0px; } .image-box { margin: 2.5px; border: thin solid #C0C0C0; //lightgray text-align: center; vertical-align: middle; display: block; } .class-box-untimed { border: thin black solid; } </style> </head> <body>""" % uid] for n, task in tasks_data.iteritems(): image_name = image_file_base_name + '%d.png' % (int(n) + 1) uri_to_png(task['image'], '%s%d.png' % (image_file_base_name, int(n) + 1)) drawn_image = r"""<img src="%s_image_%d.png" alt="drawn" title="drawn"/>""" % (uid.replace('-', 'm'), int(n) + 1) if 'class-0-example-image-1-anonymous_url' in task or \ 'class-1-example-image-0-anonymous_url' in task: # untimed, multiple images task_html = [] class_urls = {} for key, value in task.iteritems(): if '-anonymous_url' not in key: continue match = CLASS_REGEX.match(key) if not match: continue class_i, example_i = map(int, match.groups()) if class_i not in class_urls: class_urls[class_i] = {} class_urls[class_i][example_i] = value for class_i in sorted(class_urls.keys()): task_html.append('<div class="class-box class-box-untimed">') for example_i in sorted(class_urls[class_i].keys()): task_html.append(r"""<div class="image-box"> <span class="wraptocenter image-holder"> <img src="%s" /> </span> </div>""" % class_urls[class_i][example_i]) task_html.append('</div>') task_html.append(r'<br />') task_html.append(drawn_image) task_html = '\n'.join(task_html) else: # timed, single image task_html = r"""<img src="%s" alt="given" title="given"/>%s</div>""" % (task['class-0-example-image-0-anonymous_url'], drawn_image) html.append(r"""<div class="task">%s</div>""" % task_html) with open('%s%d.cstroke' % (stroke_file_base_name, int(n) + 1), 'wb') as f: f.write(compress_stroke(task['strokes'])) html.append(r"""</body> </html>""") with open(html_file_name, 'w') as f: f.write('\n'.join(html))
def put_extras(path, form_dict, uid, quiet=True): html_file_name = os.path.join(path, uid.replace("-", "m") + "_drawings.html") image_file_base_name = os.path.join(path, uid.replace("-", "m") + "_image_") stroke_file_base_name = os.path.join(path, uid.replace("-", "m") + "_stroke_") tasks_data = turkutil.form_dict_to_tasks_dict(form_dict)["task"] html = [ r"""<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>Images Drawn By %s</title> <style type="text/css"> div.task { display: inline-block; border: thin solid black; } .image-holder { padding: 2.5px; width: 100px; height: 100px; } .class-holder { display: inline-block; padding: 0px; } .class-box { display: inline-block; padding: 0px; } .image-box { margin: 2.5px; border: thin solid #C0C0C0; //lightgray text-align: center; vertical-align: middle; display: block; } .class-box-untimed { border: thin black solid; } </style> </head> <body>""" % uid ] for n, task in tasks_data.iteritems(): image_name = image_file_base_name + "%d.png" % (int(n) + 1) uri_to_png(task["image"], "%s%d.png" % (image_file_base_name, int(n) + 1)) drawn_image = r"""<img src="%s_image_%d.png" alt="drawn" title="drawn"/>""" % ( uid.replace("-", "m"), int(n) + 1, ) if ( "class-0-example-image-1-anonymous_url" in task or "class-1-example-image-0-anonymous_url" in task ): # untimed, multiple images task_html = [] class_urls = {} for key, value in task.iteritems(): if "-anonymous_url" not in key: continue match = CLASS_REGEX.match(key) if not match: continue class_i, example_i = map(int, match.groups()) if class_i not in class_urls: class_urls[class_i] = {} class_urls[class_i][example_i] = value for class_i in sorted(class_urls.keys()): task_html.append('<div class="class-box class-box-untimed">') for example_i in sorted(class_urls[class_i].keys()): task_html.append( r"""<div class="image-box"> <span class="wraptocenter image-holder"> <img src="%s" /> </span> </div>""" % class_urls[class_i][example_i] ) task_html.append("</div>") task_html.append(r"<br />") task_html.append(drawn_image) task_html = "\n".join(task_html) else: # timed, single image task_html = r"""<img src="%s" alt="given" title="given"/>%s</div>""" % ( task["class-0-example-image-0-anonymous_url"], drawn_image, ) html.append(r"""<div class="task">%s</div>""" % task_html) with open("%s%d.cstroke" % (stroke_file_base_name, int(n) + 1), "wb") as f: f.write(compress_stroke(task["strokes"])) html.append( r"""</body> </html>""" ) with open(html_file_name, "w") as f: f.write("\n".join(html))