From 0390ff5919b6095727ed54bb23c784544e3bfa32 Mon Sep 17 00:00:00 2001 From: beville Date: Fri, 12 Apr 2013 04:49:08 +0000 Subject: [PATCH] Added option to parse scan info from filename git-svn-id: http://comictagger.googlecode.com/svn/trunk@592 6c5673fe-1810-88d6-992b-cd32ca31540c --- comictaggerlib/comicarchive.py | 3 +++ comictaggerlib/filenameparser.py | 34 ++++++++++++++++++++--------- comictaggerlib/settings.py | 11 ++++++++++ comictaggerlib/settingswindow.py | 9 ++++++-- comictaggerlib/ui/settingswindow.ui | 18 +++++++++++++++ 5 files changed, 63 insertions(+), 12 deletions(-) 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