diff --git a/comictaggerlib/comicvinetalker.py b/comictaggerlib/comicvinetalker.py index 2090b82..cc15794 100644 --- a/comictaggerlib/comicvinetalker.py +++ b/comictaggerlib/comicvinetalker.py @@ -412,7 +412,7 @@ class ComicVineTalker(QObject): metadata.day, metadata.month, metadata.year = self.parseDateStr( issue_results['cover_date'] ) #metadata.issueCount = volume_results['count_of_issues'] - metadata.comments = self.cleanup_html(issue_results['description']) + metadata.comments = self.cleanup_html(issue_results['description'], settings.remove_html_tables) if settings.use_series_start_as_volume: metadata.volume = volume_results['start_year'] @@ -458,7 +458,7 @@ class ComicVineTalker(QObject): metadata.storyArc = utils.listToString(arc_list) return metadata - def cleanup_html( self, string): + def cleanup_html( self, string, remove_html_tables): """ converter = html2text.HTML2Text() #converter.emphasis_mark = '*' @@ -488,7 +488,11 @@ class ComicVineTalker(QObject): #remove the tables p = re.compile(r'.*?<\/table>') - string = p.sub('{}',string) + if remove_html_tables: + string = p.sub('',string) + string = string.replace("*List of covers and their creators:*","") + else: + string = p.sub('{}',string) # now strip all other tags p = re.compile(r'<[^<]*?>') @@ -499,54 +503,54 @@ class ComicVineTalker(QObject): newstring = newstring.strip() - # now rebuild the tables into text from BSoup - try: - table_strings = [] - for table in tables: - rows = [] - hdrs = [] - col_widths = [] - for hdr in table.findAll('th'): - item = hdr.string.strip() - hdrs.append(item) - col_widths.append(len(item)) - rows.append(hdrs) - - for row in table.findAll('tr'): - cols = [] - col = row.findAll('td') - i = 0 - for c in col: - item = c.string.strip() - cols.append(item) - if len(item) > col_widths[i]: - col_widths[i] = len(item) - i += 1 - if len(cols) != 0: - rows.append(cols) - # now we have the data, make it into text - fmtstr ="" - for w in col_widths: - fmtstr += " {{:{}}}|".format(w+1) - width = sum(col_widths) + len(col_widths)*2 - print "width=" , width - table_text = "" - counter = 0 - for row in rows: - table_text += fmtstr.format(*row) + "\n" - if counter == 0 and len(hdrs)!= 0: - table_text += "-" * width + "\n" - counter += 1 - - table_strings.append(table_text) - - newstring = newstring.format(*table_strings) - except: - # we caught an error rebuilding the table. - # just bail and remove the formatting - print "table pare error" - newstring.replace("{}", "") - + if not remove_html_tables: + # now rebuild the tables into text from BSoup + try: + table_strings = [] + for table in tables: + rows = [] + hdrs = [] + col_widths = [] + for hdr in table.findAll('th'): + item = hdr.string.strip() + hdrs.append(item) + col_widths.append(len(item)) + rows.append(hdrs) + + for row in table.findAll('tr'): + cols = [] + col = row.findAll('td') + i = 0 + for c in col: + item = c.string.strip() + cols.append(item) + if len(item) > col_widths[i]: + col_widths[i] = len(item) + i += 1 + if len(cols) != 0: + rows.append(cols) + # now we have the data, make it into text + fmtstr ="" + for w in col_widths: + fmtstr += " {{:{}}}|".format(w+1) + width = sum(col_widths) + len(col_widths)*2 + print "width=" , width + table_text = "" + counter = 0 + for row in rows: + table_text += fmtstr.format(*row) + "\n" + if counter == 0 and len(hdrs)!= 0: + table_text += "-" * width + "\n" + counter += 1 + + table_strings.append(table_text) + + newstring = newstring.format(*table_strings) + except: + # we caught an error rebuilding the table. + # just bail and remove the formatting + print "table parse error" + newstring.replace("{}", "") return newstring diff --git a/comictaggerlib/settings.py b/comictaggerlib/settings.py index 79423f7..b5368a7 100644 --- a/comictaggerlib/settings.py +++ b/comictaggerlib/settings.py @@ -104,6 +104,8 @@ class ComicTaggerSettings: # Comic Vine settings self.use_series_start_as_volume = False + self.clear_form_before_populating_from_cv = False + self.remove_html_tables = False # CBL Tranform settings @@ -235,6 +237,11 @@ class ComicTaggerSettings: if self.config.has_option('comicvine', 'use_series_start_as_volume'): self.use_series_start_as_volume = self.config.getboolean( 'comicvine', 'use_series_start_as_volume' ) + if self.config.has_option('comicvine', 'clear_form_before_populating_from_cv'): + self.clear_form_before_populating_from_cv = self.config.getboolean( 'comicvine', 'clear_form_before_populating_from_cv' ) + if self.config.has_option('comicvine', 'remove_html_tables'): + self.remove_html_tables = self.config.getboolean( 'comicvine', 'remove_html_tables' ) + if self.config.has_option('cbl_transform', 'assume_lone_credit_is_primary'): self.assume_lone_credit_is_primary = self.config.getboolean( 'cbl_transform', 'assume_lone_credit_is_primary' ) @@ -311,6 +318,8 @@ class ComicTaggerSettings: self.config.add_section( 'comicvine' ) self.config.set( 'comicvine', 'use_series_start_as_volume', self.use_series_start_as_volume ) + self.config.set( 'comicvine', 'clear_form_before_populating_from_cv', self.clear_form_before_populating_from_cv ) + self.config.set( 'comicvine', 'remove_html_tables', self.remove_html_tables ) if not self.config.has_section( 'cbl_transform' ): self.config.add_section( 'cbl_transform' ) diff --git a/comictaggerlib/settingswindow.py b/comictaggerlib/settingswindow.py index 2e5dd7c..2f167e6 100644 --- a/comictaggerlib/settingswindow.py +++ b/comictaggerlib/settingswindow.py @@ -127,6 +127,10 @@ class SettingsWindow(QtGui.QDialog): if self.settings.use_series_start_as_volume: self.cbxUseSeriesStartAsVolume.setCheckState( QtCore.Qt.Checked) + if self.settings.clear_form_before_populating_from_cv: + self.cbxClearFormBeforePopulating.setCheckState( QtCore.Qt.Checked) + if self.settings.remove_html_tables: + self.cbxRemoveHtmlTables.setCheckState( QtCore.Qt.Checked) if self.settings.assume_lone_credit_is_primary: self.cbxAssumeLoneCreditIsPrimary.setCheckState( QtCore.Qt.Checked) @@ -177,6 +181,8 @@ class SettingsWindow(QtGui.QDialog): self.settings.parse_scan_info = self.cbxParseScanInfo.isChecked() self.settings.use_series_start_as_volume = self.cbxUseSeriesStartAsVolume.isChecked() + self.settings.clear_form_before_populating_from_cv = self.cbxClearFormBeforePopulating.isChecked() + self.settings.remove_html_tables = self.cbxRemoveHtmlTables.isChecked() self.settings.assume_lone_credit_is_primary = self.cbxAssumeLoneCreditIsPrimary.isChecked() self.settings.copy_characters_to_tags = self.cbxCopyCharactersToTags.isChecked() diff --git a/comictaggerlib/taggerwindow.py b/comictaggerlib/taggerwindow.py index fcb9a41..00dfecc 100644 --- a/comictaggerlib/taggerwindow.py +++ b/comictaggerlib/taggerwindow.py @@ -1003,6 +1003,9 @@ class TaggerWindow( QtGui.QMainWindow): if self.settings.apply_cbl_transform_on_cv_import: new_metadata = CBLTransformer( new_metadata, self.settings ).apply() + + if self.settings.clear_form_before_populating_from_cv: + self.clearForm() self.metadata.overlay( new_metadata ) # Now push the new combined data into the edit controls diff --git a/comictaggerlib/ui/settingswindow.ui b/comictaggerlib/ui/settingswindow.ui index fc92805..34cd161 100644 --- a/comictaggerlib/ui/settingswindow.ui +++ b/comictaggerlib/ui/settingswindow.ui @@ -341,7 +341,7 @@ 30 30 - 240 + 251 25 @@ -349,6 +349,32 @@ Use Series Start Date as Volume + + + + 30 + 50 + 341 + 25 + + + + Clear Form Before Importing Comic Vine data + + + + + + 30 + 70 + 351 + 25 + + + + Remove HTML tables from CV summary field + + @@ -385,7 +411,7 @@ 11 21 - 246 + 251 182