Advertisement
Guest User

Untitled

a guest
Jul 24th, 2017
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.85 KB | None | 0 0
  1. from os import walk
  2. from os import path as system_path
  3.  
  4.  
  5. class ScreenshotDiversifier:
  6.  
  7. def __init__(self, path_to_screenshots):
  8. self.data_folder = path_to_screenshots
  9.  
  10. self.screenshots_tree = {}
  11. self.diversified_screenshots_pack = []
  12. self.pack_size = 0
  13.  
  14. self._fill_screenshots_tree()
  15.  
  16. def _fill_screenshots_tree(self):
  17. screenshots = self._get_screenshots()
  18. # to be continued
  19.  
  20. def _get_screenshots(self):
  21. screenshots = []
  22. for root, dirs, files in walk(self.data_folder):
  23. for file in files:
  24. if self._file_is_image(file):
  25. screenshot = ScreenshotDiversifier.Screenshot(system_path.join(root, file))
  26. screenshots.append(screenshot)
  27. return screenshots
  28.  
  29. @staticmethod
  30. def _file_is_image(file_name):
  31. image_extensions = ['.jpg', '.jpeg', '.bmp']
  32. for image_extension in image_extensions:
  33. if file_name.endswith(image_extension):
  34. return True
  35. return False
  36.  
  37. class Screenshot:
  38. def __init__(self, path):
  39. self.path = path
  40. self.name = system_path.basename(path)
  41.  
  42. self.video_clip_name_divider_index = self._get_video_clip_name_divider_index()
  43. self.frame_divider_index = self._get_frame_divider_index()
  44. self.sample_divider_index = self._get_sample_divider_index()
  45.  
  46. self._set_video_clip_name()
  47. self._set_frame()
  48. self._set_sample()
  49. self._set_patch()
  50.  
  51. def _get_video_clip_name_divider_index(self):
  52. if self._video_clip_name_has_extension():
  53. return self._get_second_point_index()
  54. else:
  55. return self.name.index('.')
  56.  
  57. def _video_clip_name_has_extension(self):
  58. if self._symbol_after_first_point_is_letter():
  59. return True
  60. else:
  61. return False
  62.  
  63. def _symbol_after_first_point_is_letter(self):
  64. first_point_index = self.name.index('.')
  65. symbol_after_first_point = self.name[first_point_index + 1]
  66. if symbol_after_first_point.isalpha():
  67. return True
  68. else:
  69. return False
  70.  
  71. def _get_second_point_index(self):
  72. first_point_index = self.name.index('.')
  73. second_point_index = self.name.index('.', first_point_index + 1)
  74. return second_point_index
  75.  
  76. def _get_frame_divider_index(self):
  77. return self.name.index('_')
  78.  
  79. def _get_sample_divider_index(self):
  80. return self.name.index('-')
  81.  
  82. def _set_video_clip_name(self):
  83. self.video_clip_name = self.name[:self.video_clip_name_divider_index]
  84.  
  85. def _set_frame(self):
  86. self.frame = self.name[self.video_clip_name_divider_index + 1: self.frame_divider_index]
  87.  
  88. def _set_sample(self):
  89. self.sample = self.name[self.frame_divider_index + 1: self.sample_divider_index]
  90.  
  91. def _set_patch(self):
  92. if self._name_has_patch():
  93. self.patch = self._parse_patch()
  94. else:
  95. self.patch = '0-0'
  96.  
  97. def _name_has_patch(self):
  98. if self._name_has_two_dashes():
  99. return True
  100. else:
  101. return False
  102.  
  103. def _name_has_two_dashes(self):
  104. dash_count = 0
  105. for symbol in self.name:
  106. if symbol == '-':
  107. dash_count += 1
  108. if dash_count >= 2:
  109. return True
  110. else:
  111. return False
  112.  
  113. def _parse_patch(self):
  114. patch_beginning_index = self._get_patch_beginning_index()
  115. patch_ending_index = self._get_patch_ending_index()
  116. return self.name[patch_beginning_index: patch_ending_index + 1]
  117.  
  118. def _get_patch_beginning_index(self):
  119. second_dash_index = self.name.index('-', self.sample_divider_index + 1)
  120. for i in range(second_dash_index - 1, 0, -1):
  121. if not self.name[i].isdigit():
  122. return i + 1
  123.  
  124. def _get_patch_ending_index(self):
  125. second_dash_index = self.name.index('-', self.sample_divider_index + 1)
  126. for i in range(second_dash_index + 1, len(self.name)):
  127. if not self.name[i].isdigit():
  128. return i - 1
  129.  
  130. def get_name(self):
  131. return self.name
  132.  
  133. def get_video_file_name(self):
  134. return self.video_clip_name
  135.  
  136. def get_frame(self):
  137. return self.frame
  138.  
  139. def get_sample(self):
  140. return self.sample
  141.  
  142. def get_patch(self):
  143. return self.patch
  144.  
  145. def get_path(self):
  146. return self.path
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement