def identify(self,
                 log,
                 result_queue,
                 abort,
                 title=None,
                 authors=None,
                 identifiers={},
                 timeout=30):

        dlog("IDENTIFIERS")
        dlog(identifiers)

        dc = {}
        for Getter in CGetter.getter_list:
            dlog("USING GETTER: %s" % Getter)
            dlog("my prefs:", prefs)
            isvalid = True
            for pref_key, is_valid_check in Getter.ls_required_pref_key:
                dlog("validating: %s --> = %s" % (pref_key, prefs[pref_key]))
                if not is_valid_check(prefs[pref_key]):
                    dlog("INVALID: %s" % prefs[pref_key])
                    isvalid = False
                    break
            entry_id = identifiers.get(Getter.entry_identifier, None)
            dlog("---------------", entry_id)
            if entry_id and Getter.does_understand(entry_id):
                dc = Getter.resolve(entry_id)
                dlog("RESULT")
                dlog(dc)
                if dc['authors']: break

        dlog(dc)
        if not dc:
            dlog("not dc: returning")
            return None
        dlog("OK")

        mi = Metadata(dc["title"], dc["authors"])
        for attr in (
                "pubdate",
                "publisher",
                "issue",
                "comments",
                "keywords",
                "volume",
                "pages",
                "rating",
        ):
            if hasattr(mi, attr) and attr in dc:
                setattr(mi, attr, dc[attr])

        mi.print_all_attributes()
        self.clean_downloaded_metadata(mi)
        result_queue.put(mi)
        dlog("=" * 20)
        dlog(dir(self))
        dlog("=" * 20)

        return None
    def identify(self, 
                 log, result_queue, abort, 
                 title=None, authors=None,
                 identifiers={}, timeout=30):

        dlog("IDENTIFIERS")
        dlog(identifiers)

        dc = {}
        for Getter in CGetter.getter_list:
            dlog("USING GETTER: %s" % Getter)
            dlog("my prefs:", prefs)
            isvalid = True
            for pref_key, is_valid_check in Getter.ls_required_pref_key:
                dlog("validating: %s --> = %s" % (pref_key, prefs[pref_key]))
                if not is_valid_check(prefs[pref_key]):
                    dlog("INVALID: %s" % prefs[pref_key])
                    isvalid = False
                    break
            entry_id = identifiers.get(Getter.entry_identifier, None)
            dlog("---------------", entry_id)
            if entry_id and Getter.does_understand(entry_id):
                dc = Getter.resolve(entry_id)
                dlog("RESULT")
                dlog(dc)
                if dc['authors']: break

        dlog(dc)
        if not dc:
            dlog("not dc: returning")
            return None
        dlog("OK")
        
        mi = Metadata(dc["title"], dc["authors"])
        for attr in ("pubdate",
                     "publisher",
                     "issue",
                     "abstract",
                     "keywords",
                     "volume",
                     "pages",
                     ):
            if hasattr(mi, attr) and attr in dc:
                setattr(mi, attr, dc[attr])

        mi.print_all_attributes()
        self.clean_downloaded_metadata(mi)
        result_queue.put(mi)
        dlog("=" * 20)
        dlog(dir(self))
        dlog("=" * 20)

        return None