Beispiel #1
0
 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)
Beispiel #2
0
 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
Beispiel #3
0
 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)
Beispiel #4
0
 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
Beispiel #5
0
 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()
Beispiel #6
0
 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()
Beispiel #7
0
 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)
Beispiel #8
0
 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)
Beispiel #9
0
 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()
Beispiel #10
0
    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))
Beispiel #11
0
    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))
Beispiel #12
0
 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()
Beispiel #13
0
 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)