diff --git a/comictaggerlib/comicarchive.py b/comictaggerlib/comicarchive.py
index 8b13448..8114581 100644
--- a/comictaggerlib/comicarchive.py
+++ b/comictaggerlib/comicarchive.py
@@ -1027,6 +1027,9 @@ class ComicArchive:
metadata.year = fnp.year
if fnp.issue_count != "":
metadata.issueCount = fnp.issue_count
+ if self.settings.parse_scan_info:
+ if fnp.remainder != "":
+ metadata.scanInfo = fnp.remainder
metadata.isEmpty = False
diff --git a/comictaggerlib/filenameparser.py b/comictaggerlib/filenameparser.py
index f9dbf82..5d183a1 100644
--- a/comictaggerlib/filenameparser.py
+++ b/comictaggerlib/filenameparser.py
@@ -81,7 +81,7 @@ class FileNameParser:
found = False
issue = ''
- # first, look for multiple "--", this mean's it's formatted differently from most:
+ # first, look for multiple "--", this means it's formatted differently from most:
if "--" in filename:
# the pattern seems to be that anything to left of the first "--" is the series name followed by issue
filename = filename.split("--")[0]
@@ -191,6 +191,28 @@ class FileNameParser:
year = re.sub("[^0-9]", "", year)
return year
+ def getRemainder( self, filename, year, count ):
+ #make a guess at where the the non-interesting stuff begins
+
+ remainder = ""
+
+ if "--" in filename:
+ remainder = filename.split("--",1)[1]
+ elif "__" in filename:
+ remainder = filename.split("__",1)[1]
+ elif "(" in filename:
+ remainder = "(" + filename.split("(",1)[1]
+
+ remainder = self.fixSpaces(remainder, remove_dashes=False)
+ if year != "":
+ remainder = remainder.replace(year,"",1)
+ if count != "":
+ remainder = remainder.replace("of "+count,"",1)
+
+ remainder = remainder.replace("()","")
+
+ return remainder.strip()
+
def parseFilename( self, filename ):
# remove the path
@@ -208,20 +230,12 @@ class FileNameParser:
if filename.count("_28") > 1 and filename.count("_29") > 1:
filename = filename.replace("_28", "(")
filename = filename.replace("_29", ")")
-
- # ----HACK
- # remove the first word that word is a 3 digit number.
- # some story arcs collection packs do this, but it's ugly
- # this will probably break something, i.e. "100 bullets"
- #word = filename.split(' ')[0]
- #if len(word) == 3 and word[0] =='0' and word.isdigit():
- # filename = filename[4:]
- # ----HACK -
self.issue = self.getIssueNumber(filename)
self.series, self.volume = self.getSeriesName(filename, self.issue)
self.year = self.getYear(filename)
self.issue_count = self.getIssueCount(filename)
+ self.remainder = self.getRemainder( filename, self.year, self.issue_count )
if self.issue != "":
# strip off leading zeros
diff --git a/comictaggerlib/settings.py b/comictaggerlib/settings.py
index 5fc7a44..15ce465 100644
--- a/comictaggerlib/settings.py
+++ b/comictaggerlib/settings.py
@@ -93,6 +93,9 @@ class ComicTaggerSettings:
self.dont_notify_about_this_version = ""
self.ask_about_usage_stats = True
+ #filename parsing settings
+ self.parse_scan_info = False
+
# Comic Vine settings
self.use_series_start_as_volume = False
@@ -208,6 +211,9 @@ class ComicTaggerSettings:
if self.config.has_option('identifier', 'id_publisher_blacklist'):
self.id_publisher_blacklist = self.config.get( 'identifier', 'id_publisher_blacklist' )
+ if self.config.has_option('filenameparser', 'parse_scan_info'):
+ self.parse_scan_info = self.config.getboolean( 'filenameparser', 'parse_scan_info' )
+
if self.config.has_option('dialogflags', 'ask_about_cbi_in_rar'):
self.ask_about_cbi_in_rar = self.config.getboolean( 'dialogflags', 'ask_about_cbi_in_rar' )
if self.config.has_option('dialogflags', 'show_disclaimer'):
@@ -283,6 +289,11 @@ class ComicTaggerSettings:
self.config.set( 'dialogflags', 'show_disclaimer', self.show_disclaimer )
self.config.set( 'dialogflags', 'dont_notify_about_this_version', self.dont_notify_about_this_version )
self.config.set( 'dialogflags', 'ask_about_usage_stats', self.ask_about_usage_stats )
+
+ if not self.config.has_section( 'filenameparser' ):
+ self.config.add_section( 'filenameparser' )
+
+ self.config.set( 'filenameparser', 'parse_scan_info', self.parse_scan_info )
if not self.config.has_section( 'comicvine' ):
self.config.add_section( 'comicvine' )
diff --git a/comictaggerlib/settingswindow.py b/comictaggerlib/settingswindow.py
index 3a37990..98bd915 100644
--- a/comictaggerlib/settingswindow.py
+++ b/comictaggerlib/settingswindow.py
@@ -122,6 +122,9 @@ class SettingsWindow(QtGui.QDialog):
if self.settings.check_for_new_version:
self.cbxCheckForNewVersion.setCheckState( QtCore.Qt.Checked)
+ if self.settings.parse_scan_info:
+ self.cbxParseScanInfo.setCheckState( QtCore.Qt.Checked)
+
if self.settings.use_series_start_as_volume:
self.cbxUseSeriesStartAsVolume.setCheckState( QtCore.Qt.Checked)
@@ -170,7 +173,9 @@ class SettingsWindow(QtGui.QDialog):
self.settings.id_length_delta_thresh = int(self.leNameLengthDeltaThresh.text())
self.settings.id_publisher_blacklist = str(self.tePublisherBlacklist.toPlainText())
-
+
+ self.settings.parse_scan_info = self.cbxParseScanInfo.isChecked()
+
self.settings.use_series_start_as_volume = self.cbxUseSeriesStartAsVolume.isChecked()
self.settings.assume_lone_credit_is_primary = self.cbxAssumeLoneCreditIsPrimary.isChecked()
@@ -230,5 +235,5 @@ class SettingsWindow(QtGui.QDialog):
control.setText( str(fileList[0]) )
def showRenameTab( self ):
- self.tabWidget.setCurrentIndex(4)
+ self.tabWidget.setCurrentIndex(5)
diff --git a/comictaggerlib/ui/settingswindow.ui b/comictaggerlib/ui/settingswindow.ui
index 35b447b..fc92805 100644
--- a/comictaggerlib/ui/settingswindow.ui
+++ b/comictaggerlib/ui/settingswindow.ui
@@ -314,6 +314,24 @@
+
+
+ Filename Parser
+
+
+
+
+ 30
+ 30
+ 421
+ 25
+
+
+
+ Parse Scan Info From Filename (Experimental)
+
+
+
Comic Vine