def accept_edit(self): gallerydb.execute(database.db.DBBase.begin, True) app_constants.APPEND_TAGS_GALLERIES = self.tags_append.isChecked() settings.set(app_constants.APPEND_TAGS_GALLERIES, 'Application', 'append tags to gallery') for g in self._edit_galleries: self.make_gallery(g) self.delayed_close() gallerydb.execute(database.db.DBBase.end, True)
def _item_double_clicked(self, item): if item: self._reset_selected() if item.item.filter: app_constants.NOTIF_BUBBLE.update_text(item.item.name, "Updating list..", 5) gallerydb.execute(item.item.scan, True) self.GALLERY_LIST_CLICKED.emit(item.item) item.setFont(self._font_selected) self.current_selected = item
def accept(self): name = self.name_edit.text() self.item.setText(name) self.gallery_list.name = name self.gallery_list.filter = self.filter_edit.toPlainText() self.gallery_list.enforce = self.enforce.isChecked() self.gallery_list.regex = self.regex.isChecked() self.gallery_list.case = self.case.isChecked() self.gallery_list.strict = self.strict.isChecked() gallerydb.execute(gallerydb.ListDB.modify_list, True, self.gallery_list) self.apply.emit() self.hide()
def accept(self): name = self.name_edit.text() self.item.setText(name) self.gallery_list.name = name self.gallery_list.filter = self.filter_edit.text() self.gallery_list.enforce = self.enforce.isChecked() self.gallery_list.regex = self.regex.isChecked() self.gallery_list.case = self.case.isChecked() self.gallery_list.strict = self.strict.isChecked() gallerydb.execute(gallerydb.ListDB.modify_list, True, self.gallery_list) self.apply.emit() self.hide()
def setup_tags(self): self.clear() tags = gallerydb.execute(gallerydb.TagDB.get_ns_tags, False) items = [] for ns in tags: top_item = QTreeWidgetItem(self) if ns == 'default': top_item.setText(0, 'No namespace') else: top_item.setText(0, ns) for tag in tags[ns]: child_item = QTreeWidgetItem(top_item) child_item.setText(0, tag) self.sortItems(0, Qt.AscendingOrder)
def remove_list(self): self.sidebar_widget.takeItem(self.sidebar_widget.row(self.item)) gallerydb.execute(gallerydb.ListDB.remove_list, True, self.gallery_list) self.sidebar_widget.GALLERY_LIST_REMOVED.emit()
def _auto_metadata_process(self, galleries, hen, valid_url, **kwargs): hen.LAST_USED = time.time() self.AUTO_METADATA_PROGRESS.emit("Checking gallery urls...") fetched_galleries = [] checked_pre_url_galleries = [] multiple_hit_galleries = [] for x, gallery in enumerate(galleries, 1): custom_args = {} # send to hen class log_i("Checking gallery url") # coming from GalleryDialog if hasattr(gallery, "_g_dialog_url"): if gallery._g_dialog_url: gallery.temp_url = gallery._g_dialog_url checked_pre_url_galleries.append(gallery) # to process even if this gallery is last and fails if x == len(galleries): self.fetch_metadata(hen=hen) continue if gallery.link and app_constants.USE_GALLERY_LINK: log_i("Using existing gallery url") check = self._website_checker(gallery.link) if check == valid_url: # convert g.e-h to e-h gallery.link = pewnet.HenManager.gtoEh(gallery.link) gallery.temp_url = gallery.link checked_pre_url_galleries.append(gallery) if x == len(galleries): self.fetch_metadata(hen=hen) continue self.AUTO_METADATA_PROGRESS.emit( "({}/{}) Generating gallery hash: {}".format( x, len(galleries), gallery.title)) log_i("Generating gallery hash: {}".format( gallery.title.encode(errors='ignore'))) hash = None try: if not gallery.hashes: color_img = kwargs[ 'color'] if 'color' in kwargs else False # used for similarity search on EH hash_dict = execute(HashDB.gen_gallery_hash, False, gallery, 0, 'mid', color_img) if color_img and 'color' in hash_dict: custom_args['color'] = hash_dict[ 'color'] # will be path to filename hash = hash_dict['color'] elif hash_dict: hash = hash_dict['mid'] else: hash = gallery.hashes[random.randint( 0, len(gallery.hashes) - 1)] except app_constants.CreateArchiveFail: pass if not hash: self.error_galleries.append( (gallery, "Could not generate hash")) log_e("Could not generate hash for gallery: {}".format( gallery.title.encode(errors='ignore'))) if x == len(galleries): self.fetch_metadata(hen=hen) continue gallery.hash = hash # dict -> hash:[list of title,url tuples] or None self.AUTO_METADATA_PROGRESS.emit( "({}/{}) Searching url for gallery: {}".format( x, len(galleries), gallery.title)) found_url = hen.search(gallery.hash, **custom_args) if found_url == 'error': app_constants.GLOBAL_EHEN_LOCK = False self.FINISHED.emit(True) return if not gallery.hash in found_url: self.error_galleries.append( (gallery, "Could not find url for gallery")) self.AUTO_METADATA_PROGRESS.emit( "Could not find url for gallery: {}".format(gallery.title)) log_w('Could not find url for gallery: {}'.format( gallery.title.encode(errors='ignore'))) if x == len(galleries): self.fetch_metadata(hen=hen) continue title_url_list = found_url[gallery.hash] if not len(title_url_list ) > 1 or app_constants.ALWAYS_CHOOSE_FIRST_HIT: title = title_url_list[0][0] url = title_url_list[0][1] else: multiple_hit_galleries.append([gallery, title_url_list]) if x == len(galleries): self.fetch_metadata(hen=hen) continue if not gallery.link: if isinstance(hen, (pewnet.EHen, pewnet.ExHen)): gallery.link = url self.GALLERY_EMITTER.emit(gallery, None, None) gallery.temp_url = url self.AUTO_METADATA_PROGRESS.emit( "({}/{}) Adding to queue: {}".format(x, len(galleries), gallery.title)) self.fetch_metadata(gallery, hen, x == len(galleries)) if checked_pre_url_galleries: for x, gallery in enumerate(checked_pre_url_galleries, 1): self.AUTO_METADATA_PROGRESS.emit( "({}/{}) Adding to queue: {}".format( x, len(checked_pre_url_galleries), gallery.title)) self.fetch_metadata(gallery, hen, x == len(checked_pre_url_galleries)) if multiple_hit_galleries: skip_all = False multiple_hit_g_queue = [] for x, g_data in enumerate(multiple_hit_galleries, 1): gallery = g_data[0] log_w("Multiple galleries found for gallery: {}".format( gallery.title.encode(errors='ignore'))) if skip_all: log_w("Skipping gallery") continue title_url_list = g_data[1] self.AUTO_METADATA_PROGRESS.emit( "Multiple galleries found for gallery: {}".format( gallery.title)) app_constants.SYSTEM_TRAY.showMessage( 'Happypanda', 'Multiple galleries found for gallery:\n{}'.format( gallery.title), minimized=True) self.GALLERY_PICKER.emit(gallery, title_url_list, self.GALLERY_PICKER_QUEUE) user_choice = self.GALLERY_PICKER_QUEUE.get() if user_choice == None: skip_all = True if not user_choice: log_w("Skipping gallery") continue title = user_choice[0] url = user_choice[1] if not gallery.link: gallery.link = url if isinstance(hen, (pewnet.EHen, pewnet.ExHen)): self.GALLERY_EMITTER.emit(gallery, None, None) gallery.temp_url = url self.AUTO_METADATA_PROGRESS.emit( "({}/{}) Adding to queue: {}".format( x, len(multiple_hit_galleries), gallery.title)) multiple_hit_g_queue.append(gallery) for x, g in enumerate(multiple_hit_g_queue, 1): self.fetch_metadata(g, hen, x == len(multiple_hit_g_queue))
def _auto_metadata_process(self, galleries, hen, valid_url, **kwargs): hen.LAST_USED = time.time() self.AUTO_METADATA_PROGRESS.emit("Checking gallery urls...") fetched_galleries = [] checked_pre_url_galleries = [] multiple_hit_galleries = [] for x, gallery in enumerate(galleries, 1): custom_args = {} # send to hen class log_i("Checking gallery url") # coming from GalleryDialog if hasattr(gallery, "_g_dialog_url"): if gallery._g_dialog_url: gallery.temp_url = gallery._g_dialog_url checked_pre_url_galleries.append(gallery) # to process even if this gallery is last and fails if x == len(galleries): self.fetch_metadata(hen=hen) continue if gallery.link and app_constants.USE_GALLERY_LINK: log_i("Using existing gallery url") check = self._website_checker(gallery.link) if check == valid_url: # convert g.e-h to e-h gallery.link = pewnet.HenManager.gtoEh(gallery.link) gallery.temp_url = gallery.link checked_pre_url_galleries.append(gallery) if x == len(galleries): self.fetch_metadata(hen=hen) continue self.AUTO_METADATA_PROGRESS.emit("({}/{}) Generating gallery hash: {}".format(x, len(galleries), gallery.title)) log_i("Generating gallery hash: {}".format(gallery.title.encode(errors='ignore'))) hash = None try: if not gallery.hashes: color_img = kwargs['color'] if 'color' in kwargs else False # used for similarity search on EH hash_dict = execute(HashDB.gen_gallery_hash, False, gallery, 0, 'mid', color_img) if color_img and 'color' in hash_dict: custom_args['color'] = hash_dict['color'] # will be path to filename hash = hash_dict['color'] elif hash_dict: hash = hash_dict['mid'] else: hash = gallery.hashes[random.randint(0, len(gallery.hashes)-1)] except app_constants.CreateArchiveFail: pass if not hash: self.error_galleries.append((gallery, "Could not generate hash")) log_e("Could not generate hash for gallery: {}".format(gallery.title.encode(errors='ignore'))) if x == len(galleries): self.fetch_metadata(hen=hen) continue gallery.hash = hash # dict -> hash:[list of title,url tuples] or None self.AUTO_METADATA_PROGRESS.emit("({}/{}) Searching url for gallery: {}".format(x, len(galleries), gallery.title)) found_url = hen.search(gallery.hash, **custom_args) if found_url == 'error': app_constants.GLOBAL_EHEN_LOCK = False self.FINISHED.emit(True) return if not gallery.hash in found_url: self.error_galleries.append((gallery, "Could not find url for gallery")) self.AUTO_METADATA_PROGRESS.emit("Could not find url for gallery: {}".format(gallery.title)) log_w('Could not find url for gallery: {}'.format(gallery.title.encode(errors='ignore'))) if x == len(galleries): self.fetch_metadata(hen=hen) continue title_url_list = found_url[gallery.hash] if not len(title_url_list) > 1 or app_constants.ALWAYS_CHOOSE_FIRST_HIT: title = title_url_list[0][0] url = title_url_list[0][1] else: multiple_hit_galleries.append([gallery, title_url_list]) if x == len(galleries): self.fetch_metadata(hen=hen) continue if not gallery.link: if isinstance(hen, (pewnet.EHen, pewnet.ExHen)): gallery.link = url self.GALLERY_EMITTER.emit(gallery, None, None) gallery.temp_url = url self.AUTO_METADATA_PROGRESS.emit("({}/{}) Adding to queue: {}".format( x, len(galleries), gallery.title)) self.fetch_metadata(gallery, hen, x == len(galleries)) if checked_pre_url_galleries: for x, gallery in enumerate(checked_pre_url_galleries, 1): self.AUTO_METADATA_PROGRESS.emit("({}/{}) Adding to queue: {}".format( x, len(checked_pre_url_galleries), gallery.title)) self.fetch_metadata(gallery, hen, x == len(checked_pre_url_galleries)) if multiple_hit_galleries: skip_all = False multiple_hit_g_queue = [] for x, g_data in enumerate(multiple_hit_galleries, 1): gallery = g_data[0] log_w("Multiple galleries found for gallery: {}".format(gallery.title.encode(errors='ignore'))) if skip_all: log_w("Skipping gallery") continue title_url_list = g_data[1] self.AUTO_METADATA_PROGRESS.emit("Multiple galleries found for gallery: {}".format(gallery.title)) app_constants.SYSTEM_TRAY.showMessage('Happypanda', 'Multiple galleries found for gallery:\n{}'.format(gallery.title), minimized=True) self.GALLERY_PICKER.emit(gallery, title_url_list, self.GALLERY_PICKER_QUEUE) user_choice = self.GALLERY_PICKER_QUEUE.get() if user_choice == None: skip_all = True if not user_choice: log_w("Skipping gallery") continue title = user_choice[0] url = user_choice[1] if not gallery.link: gallery.link = url if isinstance(hen, (pewnet.EHen, pewnet.ExHen)): self.GALLERY_EMITTER.emit(gallery, None, None) gallery.temp_url = url self.AUTO_METADATA_PROGRESS.emit("({}/{}) Adding to queue: {}".format( x, len(multiple_hit_galleries), gallery.title)) multiple_hit_g_queue.append(gallery) for x, g in enumerate(multiple_hit_g_queue, 1): self.fetch_metadata(g, hen, x == len(multiple_hit_g_queue))
def remove_list(self): self.parent_widget.takeItem(self.parent_widget.row(self.item)) gallerydb.execute(gallerydb.ListDB.remove_list, True, self.gallery_list) self.parent_widget.GALLERY_LIST_REMOVED.emit()
def accept_edit(self): gallerydb.execute(database.db.DBBase.begin, True) for g in self._edit_galleries: self.make_gallery(g) self.delayed_close() gallerydb.execute(database.db.DBBase.end, True)