def create_images_histogram_collection(self): models = Models() number_of_files = 0 for dir_name, dir_names, file_names in os.walk(Constants.LOCAL_DIR_SAVE_PHOTO): #walking inside all ads for subdir_name in dir_names: aviso_json = {"id_aviso":subdir_name, "photos":[]} for dir_name_, dir_names_, file_names_ in os.walk(os.path.join(dir_name, subdir_name)): #walking inside all photos of the specific ad for file_name_ in file_names_: try: #generating the histogram and adding it to the json to be added to mongo hist = self.get_histogram(os.path.join(dir_name, subdir_name, file_name_)) hist_json = {"photo_path":subdir_name + "/" + file_name_, "histogram":json.dumps(hist.tolist())} aviso_json["photos"].append(hist_json) except: pass if number_of_files%1000==0: print number_of_files number_of_files +=1 #calling model to add item to mongo models.add_image_histogram(aviso_json) print "[OK] Created histograms for " + str(number_of_files) + " photos."
def create_images_histogram_from_online_ads(self): models = Models() number_of_files = 0 print "Retrieving all online avisos. Please, wait..." self.array_avisos_online = models.get_all_avisos_online() print "[Ok]" for aviso_id in self.array_avisos_online: if number_of_files%100==0: print number_of_files number_of_files +=1 aviso_json = {"id_aviso":aviso_id, "photos":[]} # print os.walk(Constants.LOCAL_DIR_SAVE_PHOTO + complete_folder) try: if len(str(aviso_id))<10: aviso_id = format(int(aviso_id), "010") aviso_id_splitted = re.findall(r'.{1,2}',str(aviso_id),re.DOTALL) complete_folder = "" for folder_name in aviso_id_splitted: complete_folder += folder_name + "/" for root, dirs, files in os.walk(Constants.LOCAL_DIR_SAVE_PHOTO + complete_folder): folder_to_download = "" for folder in dirs: if folder == "100x75": folder_to_download = "100x75" break elif folder == "1200x1200": folder_to_download = "1200x1200" break folder_name = Constants.LOCAL_DIR_SAVE_PHOTO + complete_folder + folder_to_download for file in os.listdir(folder_name): if file.endswith(".jpg"): hist = self.get_histogram(os.path.join(folder_name, file)) hist_json = {"photo_path":folder_name + "/" + file, "histogram":json.dumps(hist.tolist())} aviso_json["photos"].append(hist_json) if len(os.listdir(folder_name))>0: models.add_image_histogram(aviso_json) break except: pass
def create_images_histogram_from_images_backup_iw(self): models = Models() self.number_of_files = 0 print "Retrieving all online avisos. Please, wait..." self.array_avisos_online = models.get_all_avisos_online() print "[Ok]" def step((ext, self), dir_name, files): download_100x75 = True aviso_id = dir_name[dir_name.rfind("Constants.LOCAL_DIR_SAVE_PHOTO")+len(Constants.LOCAL_DIR_SAVE_PHOTO)+2:dir_name.rfind("/")] aviso_id = aviso_id.translate(None, "/") if "100x75" in dir_name or "1200x1200" in dir_name: dir100x75 = dir_name[:dir_name.rfind("/")] + "/100x75" dir1200x1200 = dir_name[:dir_name.rfind("/")] + "/1200x1200" try: aviso_id_int = int(aviso_id) except ValueError: aviso_id_int = 0 if aviso_id_int in self.array_avisos_online: if "1200x1200" in dir_name: if os.path.isdir(dir100x75): download_100x75 = False if download_100x75: aviso_json = {"id_aviso":aviso_id, "photos":[]} for file_name in files: if file_name.lower().endswith(ext): try: #generating the histogram and adding it to the json to be added to mongo hist = self.get_histogram(os.path.join(dir_name, file_name)) hist_json = {"photo_path":dir_name + "/" + file_name, "histogram":json.dumps(hist.tolist())} aviso_json["photos"].append(hist_json) except: pass models.add_image_histogram(aviso_json) if self.number_of_files%100==0: print self.number_of_files self.number_of_files +=1 else: if self.number_of_files%100==0: print self.number_of_files self.number_of_files +=1 print aviso_id