Added settings option to auto-clear form when importing from CV

added settings option to remove html tables from CV summary

git-svn-id: http://comictagger.googlecode.com/svn/trunk@710 6c5673fe-1810-88d6-992b-cd32ca31540c
This commit is contained in:
beville@gmail.com 2014-04-09 01:52:14 +00:00
parent 0feed294d4
commit 6156fc296a
5 changed files with 101 additions and 53 deletions

View File

@ -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[^<]*?>.*?<\/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

View File

@ -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' )

View File

@ -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()

View File

@ -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

View File

@ -341,7 +341,7 @@
<rect>
<x>30</x>
<y>30</y>
<width>240</width>
<width>251</width>
<height>25</height>
</rect>
</property>
@ -349,6 +349,32 @@
<string>Use Series Start Date as Volume</string>
</property>
</widget>
<widget class="QCheckBox" name="cbxClearFormBeforePopulating">
<property name="geometry">
<rect>
<x>30</x>
<y>50</y>
<width>341</width>
<height>25</height>
</rect>
</property>
<property name="text">
<string>Clear Form Before Importing Comic Vine data</string>
</property>
</widget>
<widget class="QCheckBox" name="cbxRemoveHtmlTables">
<property name="geometry">
<rect>
<x>30</x>
<y>70</y>
<width>351</width>
<height>25</height>
</rect>
</property>
<property name="text">
<string>Remove HTML tables from CV summary field</string>
</property>
</widget>
</widget>
<widget class="QWidget" name="tab_4">
<attribute name="title">
@ -385,7 +411,7 @@
<rect>
<x>11</x>
<y>21</y>
<width>246</width>
<width>251</width>
<height>182</height>
</rect>
</property>