| | import os |
| | import random |
| | import copy |
| | from backend.class_def import panel |
| |
|
| |
|
| | template_specs = { |
| | "1" : { |
| | "span" : 1, |
| | "direction": "row" |
| | }, |
| | "2" : { |
| | "span" : 2, |
| | "direction": "row" |
| | }, |
| | "3" : { |
| | "span" : 3, |
| | "direction": "column" |
| | }, |
| | "4" : { |
| | "span" : 2, |
| | "direction": "column" |
| | }, |
| | |
| | "5" : { |
| | "span" : 4, |
| | "direction": "row" |
| | }, |
| | "6" : { |
| | "span" : 2, |
| | "direction": "row" |
| | }, |
| | "7" : { |
| | "span" : 3, |
| | "direction": "row" |
| | }, |
| | "8" : { |
| | "span" : 4, |
| | "direction": "column" |
| | } |
| | } |
| |
|
| | input = '433343333343343333443333443334333343344443433' |
| |
|
| |
|
| |
|
| | def hammingDist(str1, str2): |
| | i = 0 |
| | count = 0 |
| | |
| | while(i < len(str1)): |
| | if(str1[i] != str2[i]): |
| | count += 1 |
| | i += 1 |
| | return count |
| |
|
| | def get_files_in_folder(folder_path): |
| | file_dicts = [] |
| | for root, dirs, files in os.walk(folder_path): |
| | for file in files: |
| | file_path = os.path.join(root, file) |
| | rank = random.randint(1, 3) |
| |
|
| | file_dicts.append({"name": file , 'rank' : rank}) |
| | return file_dicts |
| |
|
| | templates = ['14124114','312341' , '4432111' , '21411241' , '3241141' , '13411141' , '12411131' ,'1321113', '131423' , |
| | '142344' , '234241','2411413','3141214','42111131'] |
| |
|
| | |
| | HIGH_ACCURACY = os.getenv('HIGH_ACCURACY', '0') |
| | if HIGH_ACCURACY in ('1', 'true', 'True', 'YES', 'yes'): |
| | |
| | templates = ['333333333333'] |
| | print("Using HIGH_ACCURACY mode with 2x2 grid layout (4 equal squares per page)") |
| | else: |
| | |
| | GRID_LAYOUT = os.getenv('GRID_LAYOUT', '0') |
| | if GRID_LAYOUT in ('1', 'true', 'True', 'YES', 'yes'): |
| | |
| | templates = ['6666', '4488', '44446', '666', '67'] |
| |
|
| | |
| | if HIGH_ACCURACY in ('1', 'true', 'True', 'YES', 'yes'): |
| | min_length = 4 |
| | else: |
| | min_length = 6 |
| | folder_path = 'frames/final' |
| |
|
| |
|
| |
|
| | def get_templates(input): |
| | page_templates = [] |
| | start = 0 |
| |
|
| | while(start<len(input)): |
| | |
| | result = [] |
| | print(input) |
| | for template in templates: |
| |
|
| | temp = input[start:start + len(template)] |
| | print(f"start: {start} len:{len(template)} temp:{temp}" ) |
| | result.append(hammingDist(temp,template)) |
| |
|
| | |
| | page_templates.append(templates[result.index(min(result))]) |
| |
|
| | start = start + len(templates[result.index(min(result))]) |
| |
|
| |
|
| |
|
| | if(len(temp) < min_length): |
| | if(len(temp) ==1): |
| | temp="5" |
| | elif(len(temp) ==2): |
| | temp="67" |
| | elif(len(temp) ==3): |
| | temp="666" |
| | elif(len(temp) ==4): |
| | temp="4488" |
| | elif(len(temp) ==5): |
| | temp="44446" |
| |
|
| | page_templates[len(page_templates)-1] = temp |
| | |
| |
|
| | return page_templates |
| |
|
| |
|
| | def last_page(panels,count_images, length): |
| | count = 1 |
| | |
| | |
| | if HIGH_ACCURACY in ('1', 'true', 'True', 'YES', 'yes'): |
| | if length == 1: |
| | |
| | new_panel = panel(f'frame{count_images:03d}', 4, 4) |
| | panels.append(new_panel) |
| | elif length == 2: |
| | |
| | new_panel = panel(f'frame{count_images:03d}', 2, 4) |
| | panels.append(new_panel) |
| | count_images += 1 |
| | new_panel = panel(f'frame{count_images:03d}', 2, 4) |
| | panels.append(new_panel) |
| | elif length == 3: |
| | |
| | new_panel = panel(f'frame{count_images:03d}', 2, 2) |
| | panels.append(new_panel) |
| | count_images += 1 |
| | new_panel = panel(f'frame{count_images:03d}', 2, 2) |
| | panels.append(new_panel) |
| | count_images += 1 |
| | new_panel = panel(f'frame{count_images:03d}', 2, 2) |
| | panels.append(new_panel) |
| | elif length == 4: |
| | |
| | for i in range(0, 4): |
| | new_panel = panel(f'frame{count_images:03d}', 2, 2) |
| | panels.append(new_panel) |
| | count_images += 1 |
| | elif length == 5: |
| | |
| | for i in range(0, 4): |
| | new_panel = panel(f'frame{count_images:03d}', 2, 2) |
| | panels.append(new_panel) |
| | count_images += 1 |
| | else: |
| | |
| | if length == 1: |
| | new_panel = panel(f'frame{count_images:03d}', 4, 4) |
| | panels.append(new_panel) |
| | elif length == 2: |
| | new_panel = panel(f'frame{count_images:03d}', 2, 4) |
| | panels.append(new_panel) |
| | count += 1 |
| | count_images += 1 |
| | new_panel = panel(f'frame{count_images:03d}', 2, 4) |
| | panels.append(new_panel) |
| | elif length == 3: |
| | |
| | new_panel = panel(f'frame{count_images:03d}', 2, 2) |
| | panels.append(new_panel) |
| | count += 1 |
| | count_images += 1 |
| | new_panel = panel(f'frame{count_images:03d}', 2, 2) |
| | panels.append(new_panel) |
| | count += 1 |
| | count_images += 1 |
| | new_panel = panel(f'frame{count_images:03d}', 4, 2) |
| | panels.append(new_panel) |
| | count += 1 |
| | count_images += 1 |
| | elif length == 4: |
| | |
| | for i in range(0, 4): |
| | new_panel = panel(f'frame{count_images:03d}', 2, 2) |
| | panels.append(new_panel) |
| | count += 1 |
| | count_images += 1 |
| | elif length == 5: |
| | |
| | for i in range(0, 4): |
| | new_panel = panel(f'frame{count_images:03d}', 2, 2) |
| | panels.append(new_panel) |
| | count += 1 |
| | count_images += 1 |
| | new_panel = panel(f'frame{count_images:03d}', 4, 2) |
| | panels.append(new_panel) |
| | count += 1 |
| | count_images += 1 |
| |
|
| | return panels |
| |
|
| |
|
| |
|
| | def panel_create(page_templates): |
| |
|
| | panels = [] |
| |
|
| | images = get_files_in_folder(folder_path) |
| | print(images) |
| | count_images = 1 |
| |
|
| | for page_template in page_templates: |
| |
|
| |
|
| | if(len(page_template)<min_length): |
| | panels = last_page(panels,count_images,len(page_template)) |
| | break |
| |
|
| |
|
| | count = 1 |
| | |
| | |
| | if HIGH_ACCURACY in ('1', 'true', 'True', 'YES', 'yes'): |
| | |
| | for i in range(4): |
| | new = panel(f'frame{count_images:03d}', 2, 2) |
| | panels.append(new) |
| | count_images += 1 |
| | else: |
| | |
| | for i in page_template: |
| | if(template_specs[i]['direction'] == 'row'): |
| | new = panel(f'frame{count_images:03d}',template_specs[i]['span'] , 1) |
| | else: |
| | new = panel(f'frame{count_images:03d}', 1 ,template_specs[i]['span']) |
| | panels.append(new) |
| | count = count+1 |
| | count_images+=1 |
| |
|
| | |
| | |
| | return(panels) |
| |
|
| |
|
| | |
| | |
| | |
| |
|
| |
|
| | |
| | |