def __add_key_to_tags(self, tags_sl, issue_key): ''' Returns the given tag list, but with a "key tag" for the given issue_key added in (iff key tags are supported by the current database implementation.) If the given string already contains a valid key tag, the tag will be REPLACED with the new one, otherwise the new key tag will be appended to the end of the list. If the given issue_key is None, the tags will be updated with the magic CVDBSKIP tag instead of a regular key tag. This method never returns None. ''' updated_tagstring_s = None # our return value # 1. clean up whitespace and None in our tagstring parameter tagstring_s = ', '.join(tags_sl).strip() if tags_sl else '' key_tag_s = db.create_key_tag_s(issue_key) \ if issue_key != None else ComicBook.CVDBSKIP if key_tag_s and tagstring_s: # 2. we have both a new key tag AND a non-empty tagstring; find and # replace the existing tag (if it exists in the tagtring) # with the new one. matches = False prev_issue_key = db.parse_key_tag(tagstring_s) if prev_issue_key: prev_key_tag_s = db.create_key_tag_s(prev_issue_key) if prev_key_tag_s: regexp = re.compile(r"(?i)" + prev_key_tag_s) matches = regexp.search(tagstring_s) if matches: # 2a. yup, found an existing key tag--replace it with the new one updated_tagstring_s = re.sub(regexp, key_tag_s, tagstring_s) else: # 2b. nope, no previous key tag found--just append the new key tag if tagstring_s[-1] == ",": tagstring_s = tagstring_s[:-1] updated_tagstring_s = tagstring_s + ", " + key_tag_s elif key_tag_s: # 3. no previous tagstring, so the key tag *becomes* the new tagstring updated_tagstring_s = key_tag_s else: # 4. there's no key tag available, so don't change the tagstring. updated_tagstring_s = tagstring_s return updated_tagstring_s.split(", ")
def __add_key_to_tags(self, tags_sl, issue_key): ''' Returns the given tag list, but with a "key tag" for the given issue_key added in (iff key tags are supported by the current database implementation.) If the given string already contains a valid key tag, the tag will be REPLACED with the new one, otherwise the new key tag will be appended to the end of the list. If the given issue_key is None, the tags will be updated with the magic CVDBSKIP tag instead of a regular key tag. This method never returns None. ''' updated_tagstring_s = None # our return value # 1. clean up whitespace and None in our tagstring parameter tagstring_s = ', '.join(tags_sl).strip() if tags_sl else '' key_tag_s = db.create_key_tag_s(issue_key) \ if issue_key != None else ComicBook.CVDBSKIP if key_tag_s and tagstring_s: # 2. we have both a new key tag AND a non-empty tagstring; find and # replace the existing tag (if it exists in the tagtring) # with the new one. matches = False prev_issue_key = db.parse_key_tag(tagstring_s) if prev_issue_key: prev_key_tag_s = db.create_key_tag_s(prev_issue_key) if prev_key_tag_s: regexp = re.compile(r"(?i)" + prev_key_tag_s) matches = regexp.search(tagstring_s) if matches: # 2a. yup, found an existing key tag--replace it with the new one updated_tagstring_s = re.sub(regexp, key_tag_s, tagstring_s) else: # 2b. nope, no previous key tag found--just append the new key tag if tagstring_s[-1] == ",": tagstring_s = tagstring_s[:-1] updated_tagstring_s = tagstring_s +", " + key_tag_s elif key_tag_s: # 3. no previous tagstring, so the key tag *becomes* the new tagstring updated_tagstring_s = key_tag_s else: # 4. there's no key tag available, so don't change the tagstring. updated_tagstring_s = tagstring_s return updated_tagstring_s.split(", ")
def __add_key_to_notes(self, notestring_s, issue_key): ''' Returns a copy of the given comic book note string, but with a "key tag" for the given issue_key appended onto the end (iff key tags are supported by the current database implementation.) If the given notes string already contains a valid key tag, the existing tag will be REPLACED with the new one. If the given issue_key is None, the note string will be updated with the magic CVDBSKIP tag instead of a regular key tag. This method never returns None. ''' updated_notestring_s = None # our return value # 1. clean up whitespace and None in our notestring parameter notestring_s = notestring_s.strip() if notestring_s else '' # Create a key-note that looks like either: # 1) Scraped metadata from ComicVine [CVDB9999]. # 2) Scraped metadata from ComicVine [CVDB9999] on 2013.05.14 21:43:06. key_tag_s = db.create_key_tag_s(issue_key) \ if issue_key != None else ComicBook.CVDBSKIP date_s = " on "+strftime(r'%Y.%m.%d %X') \ if self.__scraper.config.note_scrape_date_b else "" key_note_s = 'Scraped metadata from {0} [{1}]{2}.'.format( "ComicVine", key_tag_s, date_s) if key_tag_s else '' if key_note_s and notestring_s: # 2. we have both a new key-note (based on the key tag), AND a # non-empty notestring; find and replace the existing key-note (if # it exists in the notestring) with the new one. matches = False prev_issue_key = db.parse_key_tag(notestring_s) if prev_issue_key: prev_key_tag = db.create_key_tag_s(prev_issue_key) if prev_key_tag: regexp = re.compile( r"(?i)Scraped.*?" + prev_key_tag \ + "(]\.|.*?[\d\.]{8,} [\d:]{6,}\.)") matches = regexp.search(notestring_s) if matches: # 2a. yup, found an existing key-note--replace it with the new one updated_notestring_s = re.sub(regexp, key_note_s, notestring_s) else: # 2b. nope, no previous key-note found. try looking for the key # tag on it's own (i.e. if the user added it by hand) if prev_issue_key: prev_key_tag = db.create_key_tag_s(prev_issue_key) if prev_key_tag: regexp = re.compile(r"(?i)" + prev_key_tag) matches = regexp.search(notestring_s) if matches: # 2c. yup, found a key tag--replace it with the new one updated_notestring_s = re.sub(regexp, key_tag_s, notestring_s) else: # 2b. nope, no previous key found--just append the new key-note updated_notestring_s = notestring_s + "\n\n" + key_note_s elif key_note_s: # 3. no previous notestring, so the key-note *becomes* the new string updated_notestring_s = key_note_s else: # 4. there's no key tag available, so don't change the tagstring. updated_notestring_s = notestring_s return updated_notestring_s