diff --git a/data/interfaces/default/artistredone.html b/data/interfaces/default/artistredone.html index 568c396a..69cb4b63 100755 --- a/data/interfaces/default/artistredone.html +++ b/data/interfaces/default/artistredone.html @@ -10,7 +10,9 @@
Refresh Comic Delete Comic - Rename Files + %if mylar.RENAME_FILES: + Rename Files + %endif Recheck Files %if comic['Status'] == 'Paused': Resume Comic @@ -125,7 +127,7 @@ %endif
- +
@@ -197,6 +199,10 @@
Alternate comic names to be searched in case naming is different (ie. Hack/Slash = hack-slash)
+
+ +
+
@@ -284,6 +290,8 @@ %elif (issue['Status'] == 'Snatched'): + %elif (issue['Status'] == 'Downloaded'): + %else: diff --git a/mylar/__init__.py b/mylar/__init__.py index 4e936369..29f342bc 100755 --- a/mylar/__init__.py +++ b/mylar/__init__.py @@ -749,7 +749,7 @@ def dbcheck(): conn=sqlite3.connect(DB_FILE) c=conn.cursor() - c.execute('CREATE TABLE IF NOT EXISTS comics (ComicID TEXT UNIQUE, ComicName TEXT, ComicSortName TEXT, ComicYear TEXT, DateAdded TEXT, Status TEXT, IncludeExtras INTEGER, Have INTEGER, Total INTEGER, ComicImage TEXT, ComicPublisher TEXT, ComicLocation TEXT, ComicPublished TEXT, LatestIssue TEXT, LatestDate TEXT, Description TEXT, QUALalt_vers TEXT, QUALtype TEXT, QUALscanner TEXT, QUALquality TEXT, LastUpdated TEXT, AlternateSearch TEXT, UseFuzzy TEXT)') + c.execute('CREATE TABLE IF NOT EXISTS comics (ComicID TEXT UNIQUE, ComicName TEXT, ComicSortName TEXT, ComicYear TEXT, DateAdded TEXT, Status TEXT, IncludeExtras INTEGER, Have INTEGER, Total INTEGER, ComicImage TEXT, ComicPublisher TEXT, ComicLocation TEXT, ComicPublished TEXT, LatestIssue TEXT, LatestDate TEXT, Description TEXT, QUALalt_vers TEXT, QUALtype TEXT, QUALscanner TEXT, QUALquality TEXT, LastUpdated TEXT, AlternateSearch TEXT, UseFuzzy TEXT, ComicVersion TEXT)') c.execute('CREATE TABLE IF NOT EXISTS issues (IssueID TEXT, ComicName TEXT, IssueName TEXT, Issue_Number TEXT, DateAdded TEXT, Status TEXT, Type TEXT, ComicID, ArtworkURL Text, ReleaseDate TEXT, Location TEXT, IssueDate TEXT, Int_IssueNumber INT, ComicSize TEXT)') c.execute('CREATE TABLE IF NOT EXISTS snatched (IssueID TEXT, ComicName TEXT, Issue_Number TEXT, Size INTEGER, DateAdded TEXT, Status TEXT, FolderName TEXT, ComicID TEXT)') c.execute('CREATE TABLE IF NOT EXISTS upcoming (ComicName TEXT, IssueNumber TEXT, ComicID TEXT, IssueID TEXT, IssueDate TEXT, Status TEXT)') @@ -794,6 +794,12 @@ def dbcheck(): except sqlite3.OperationalError: c.execute('ALTER TABLE comics ADD COLUMN AlternateSearch TEXT') + try: + c.execute('SELECT ComicVersion from comics') + except sqlite3.OperationalError: + c.execute('ALTER TABLE comics ADD COLUMN ComicVersion TEXT') + + try: c.execute('SELECT ComicSize from issues') except sqlite3.OperationalError: diff --git a/mylar/search.py b/mylar/search.py index ce994042..fd500cc9 100755 --- a/mylar/search.py +++ b/mylar/search.py @@ -36,7 +36,7 @@ from xml.dom.minidom import parseString import urllib2 from datetime import datetime -def search_init(ComicName, IssueNumber, ComicYear, SeriesYear, IssueDate, IssueID, AlternateSearch=None, UseFuzzy=None): +def search_init(ComicName, IssueNumber, ComicYear, SeriesYear, IssueDate, IssueID, AlternateSearch=None, UseFuzzy=None, ComicVersion=None): if ComicYear == None: ComicYear = '2013' else: ComicYear = str(ComicYear)[:4] ##nzb provider selection## @@ -115,14 +115,14 @@ def search_init(ComicName, IssueNumber, ComicYear, SeriesYear, IssueDate, IssueI nzbprov = 'newznab' for newznab_host in newznab_hosts: #logger.fdebug("using newznab_host: " + str(newznab_host[0])) - findit = NZB_SEARCH(ComicName, IssueNumber, ComicYear, SeriesYear, nzbprov, nzbpr, IssDateFix, IssueID, UseFuzzy, newznab_host) + findit = NZB_SEARCH(ComicName, IssueNumber, ComicYear, SeriesYear, nzbprov, nzbpr, IssDateFix, IssueID, UseFuzzy, newznab_host, ComicVersion) if findit == 'yes': logger.fdebug("findit = found!") break else: if AlternateSearch is not None and AlternateSearch != "None": logger.info(u"Alternate Search pattern detected...re-adjusting to : " + str(AlternateSearch) + " " + str(ComicYear)) - findit = NZB_SEARCH(AlternateSearch, IssueNumber, ComicYear, SeriesYear, nzbprov, nzbpr, IssDateFix, IssueID, UseFuzzy, newznab_host) + findit = NZB_SEARCH(AlternateSearch, IssueNumber, ComicYear, SeriesYear, nzbprov, nzbpr, IssDateFix, IssueID, UseFuzzy, newznab_host, ComicVersion) if findit == 'yes': break nzbpr-=1 @@ -130,14 +130,14 @@ def search_init(ComicName, IssueNumber, ComicYear, SeriesYear, IssueDate, IssueI elif nzbprovider[nzbpr] == 'experimental': #this is for experimental nzbprov = 'experimental' - findit = NZB_SEARCH(ComicName, IssueNumber, ComicYear, SeriesYear, nzbprov, nzbpr, IssDateFix, IssueID, UseFuzzy) + findit = NZB_SEARCH(ComicName, IssueNumber, ComicYear, SeriesYear, nzbprov, nzbpr, IssDateFix, IssueID, UseFuzzy, ComicVersion) if findit == 'yes': logger.fdebug("findit = found!") break else: if AlternateSearch is not None and AlternateSearch != "None": logger.info(u"Alternate Search pattern detected...re-adjusting to : " + str(AlternateSearch) + " " + str(ComicYear)) - findit = NZB_SEARCH(AlternateSearch, IssueNumber, ComicYear, SeriesYear, nzbprov, nzbpr, IssDateFix, IssueID, UseFuzzy) + findit = NZB_SEARCH(AlternateSearch, IssueNumber, ComicYear, SeriesYear, nzbprov, nzbpr, IssDateFix, IssueID, UseFuzzy, ComicVersion) if findit == 'yes': break @@ -146,14 +146,14 @@ def search_init(ComicName, IssueNumber, ComicYear, SeriesYear, IssueDate, IssueI elif nzbprovider[nzbpr] == 'nzbx': # this is for nzbx.co nzbprov = 'nzbx' - findit = NZB_SEARCH(ComicName, IssueNumber, ComicYear, SeriesYear, nzbprov, nzbpr, IssDateFix, IssueID, UseFuzzy) + findit = NZB_SEARCH(ComicName, IssueNumber, ComicYear, SeriesYear, nzbprov, nzbpr, IssDateFix, IssueID, UseFuzzy, ComicVersion) if findit == 'yes': logger.fdebug("findit = found!") break else: if AlternateSearch is not None and AlternateSearch != "None": logger.info(u"Alternate Search pattern detected...re-adjusting to : " + str(AlternateSearch) + " " + str(ComicYear)) - findit = NZB_SEARCH(AlternateSearch, IssueNumber, ComicYear, SeriesYear, nzbprov, nzbpr, IssDateFix, IssueID, UseFuzzy) + findit = NZB_SEARCH(AlternateSearch, IssueNumber, ComicYear, SeriesYear, nzbprov, nzbpr, IssDateFix, IssueID, UseFuzzy, ComicVersion) if findit == 'yes': break @@ -162,14 +162,14 @@ def search_init(ComicName, IssueNumber, ComicYear, SeriesYear, IssueDate, IssueI elif nzbprovider[nzbpr] == 'nzb.su': # this is for nzb.su nzbprov = 'nzb.su' - findit = NZB_SEARCH(ComicName, IssueNumber, ComicYear, SeriesYear, nzbprov, nzbpr, IssDateFix, IssueID, UseFuzzy) + findit = NZB_SEARCH(ComicName, IssueNumber, ComicYear, SeriesYear, nzbprov, nzbpr, IssDateFix, IssueID, UseFuzzy, ComicVersion) if findit == 'yes': logger.fdebug("findit = found!") break else: if AlternateSearch is not None and AlternateSearch != "None": logger.info(u"Alternate Search pattern detected...re-adjusting to : " + str(AlternateSearch) + " " + str(ComicYear)) - findit = NZB_SEARCH(AlternateSearch, IssueNumber, ComicYear, SeriesYear, nzbprov, nzbpr, IssDateFix, IssueID, UseFuzzy) + findit = NZB_SEARCH(AlternateSearch, IssueNumber, ComicYear, SeriesYear, nzbprov, nzbpr, IssDateFix, IssueID, UseFuzzy, ComicVersion) if findit == 'yes': break @@ -180,7 +180,7 @@ def search_init(ComicName, IssueNumber, ComicYear, SeriesYear, IssueDate, IssueI elif nzbprovider[nzbpr] == 'dognzb': # this is for dognzb.com nzbprov = 'dognzb' - findit = NZB_SEARCH(ComicName, IssueNumber, ComicYear, SeriesYear, nzbprov, nzbpr, IssDateFix, IssueID, UseFuzzy) + findit = NZB_SEARCH(ComicName, IssueNumber, ComicYear, SeriesYear, nzbprov, nzbpr, IssDateFix, IssueID, UseFuzzy, ComicVersion) if findit == 'yes': logger.fdebug("findit = found!") @@ -188,7 +188,7 @@ def search_init(ComicName, IssueNumber, ComicYear, SeriesYear, IssueDate, IssueI else: if AlternateSearch is not None and AlternateSearch != "None": logger.info(u"Alternate Search pattern detected...re-adjusting to : " + str(AlternateSearch) + " " + str(ComicYear)) - findit = NZB_SEARCH(AlternateSearch, IssueNumber, ComicYear, SeriesYear, nzbprov, nzbpr, IssDateFix, IssueID, UseFuzzy) + findit = NZB_SEARCH(AlternateSearch, IssueNumber, ComicYear, SeriesYear, nzbprov, nzbpr, IssDateFix, IssueID, UseFuzzy, ComicVersion) if findit == 'yes': break @@ -200,7 +200,7 @@ def search_init(ComicName, IssueNumber, ComicYear, SeriesYear, IssueDate, IssueI if findit == 'yes': return findit return findit -def NZB_SEARCH(ComicName, IssueNumber, ComicYear, SeriesYear, nzbprov, nzbpr, IssDateFix, IssueID, UseFuzzy, newznab_host=None): +def NZB_SEARCH(ComicName, IssueNumber, ComicYear, SeriesYear, nzbprov, nzbpr, IssDateFix, IssueID, UseFuzzy, newznab_host=None, ComicVersion=None): if nzbprov == 'nzb.su': apikey = mylar.NZBSU_APIKEY @@ -550,6 +550,13 @@ def NZB_SEARCH(ComicName, IssueNumber, ComicYear, SeriesYear, nzbprov, nzbpr, Is logger.fdebug(str(splitit) + " nzb series word count: " + str(splitst)) logger.fdebug(str(watchcomic_split) + " watchlist word count: " + str(len(watchcomic_split))) + #account for possible version inclusion here. + cvers = "false" + for tstsplit in splitit: + if 'v' in tstsplit and tstsplit[1:].isdigit(): + logger.fdebug("this has a version #...let's adjust") + cvers = "true" + splitst = splitst - 1 if (splitst) != len(watchcomic_split): logger.fdebug("incorrect comic lengths...not a match") if str(splitit[0]).lower() == "the": @@ -561,6 +568,7 @@ def NZB_SEARCH(ComicName, IssueNumber, ComicYear, SeriesYear, nzbprov, nzbpr, Is scount = 0 logger.fdebug("search-length: " + str(splitst)) logger.fdebug("Watchlist-length: " + str(len(watchcomic_split))) + if cvers == "true": splitst = splitst + 1 while ( n <= (splitst)-1 ): logger.fdebug("splitit: " + str(splitit[n])) if n < (splitst) and n < len(watchcomic_split): @@ -577,8 +585,18 @@ def NZB_SEARCH(ComicName, IssueNumber, ComicYear, SeriesYear, nzbprov, nzbpr, Is logger.fdebug("possible versioning..checking") #we hit a versioning # - account for it if splitit[n][1:].isdigit(): - comicversion = str(splitit[n]) - logger.fdebug("version found: " + str(comicversion)) + logger.fdebug("watch comicversion is " + str(ComicVersion)) + fndcomicversion = str(splitit[n]) + logger.fdebug("version found: " + str(fndcomicversion)) + if ComicVersion is not None: + F_ComicVersion = re.sub("[^0-9]", "", fndcomicversion) + D_ComicVersion = re.sub("[^0-9]", "", ComicVersion) + if int(F_ComicVersion) == int(D_ComicVersion): + logger.fdebug("We matched on versions...") + scount+=1 + else: + logger.fdebug("Versions wrong. Ignoring possible match.") + scount = 0 else: logger.fdebug("Comic / Issue section") if splitit[n].isdigit(): @@ -838,13 +856,14 @@ def searchforissue(issueid=None, new=False): AlternateSearch = comic['AlternateSearch'] IssueDate = result['IssueDate'] UseFuzzy = comic['UseFuzzy'] + ComicVersion = comic['ComicVersion'] if result['IssueDate'] == None: ComicYear = comic['ComicYear'] else: ComicYear = str(result['IssueDate'])[:4] if (mylar.NZBSU or mylar.DOGNZB or mylar.EXPERIMENTAL or mylar.NEWZNAB or mylar.NZBX) and (mylar.USE_SABNZBD or mylar.USE_NZBGET): - foundNZB = search_init(result['ComicName'], result['Issue_Number'], str(ComicYear), comic['ComicYear'], IssueDate, result['IssueID'], AlternateSearch, UseFuzzy) + foundNZB = search_init(result['ComicName'], result['Issue_Number'], str(ComicYear), comic['ComicYear'], IssueDate, result['IssueID'], AlternateSearch, UseFuzzy, ComicVersion) if foundNZB == "yes": #print ("found!") updater.foundsearch(result['ComicID'], result['IssueID']) @@ -859,6 +878,7 @@ def searchforissue(issueid=None, new=False): AlternateSearch = comic['AlternateSearch'] IssueDate = result['IssueDate'] UseFuzzy = comic['UseFuzzy'] + ComicVersion = comic['ComicVersion'] if result['IssueDate'] == None: IssueYear = comic['ComicYear'] else: @@ -866,7 +886,7 @@ def searchforissue(issueid=None, new=False): foundNZB = "none" if (mylar.NZBSU or mylar.DOGNZB or mylar.EXPERIMENTAL or mylar.NEWZNAB or mylar.NZBX) and (mylar.USE_SABNZBD or mylar.USE_NZBGET): - foundNZB = search_init(result['ComicName'], result['Issue_Number'], str(IssueYear), comic['ComicYear'], IssueDate, result['IssueID'], AlternateSearch, UseFuzzy) + foundNZB = search_init(result['ComicName'], result['Issue_Number'], str(IssueYear), comic['ComicYear'], IssueDate, result['IssueID'], AlternateSearch, UseFuzzy, ComicVersion) if foundNZB == "yes": #print ("found!") updater.foundsearch(ComicID=result['ComicID'], IssueID=result['IssueID']) @@ -884,12 +904,13 @@ def searchIssueIDList(issuelist): SeriesYear = comic['ComicYear'] AlternateSearch = comic['AlternateSearch'] UseFuzzy = comic['UseFuzzy'] + ComicVersion = comic['ComicVersion'] if issue['IssueDate'] == None: ComicYear = comic['ComicYear'] else: ComicYear = str(issue['IssueDate'])[:4] if (mylar.NZBSU or mylar.DOGNZB or mylar.EXPERIMENTAL or mylar.NEWZNAB or mylar.NZBX) and (mylar.USE_SABNZBD or mylar.USE_NZBGET): - foundNZB = search_init(comic['ComicName'], issue['Issue_Number'], str(ComicYear), comic['ComicYear'], issue['IssueDate'], issue['IssueID'], AlternateSearch, UseFuzzy) + foundNZB = search_init(comic['ComicName'], issue['Issue_Number'], str(ComicYear), comic['ComicYear'], issue['IssueDate'], issue['IssueID'], AlternateSearch, UseFuzzy, ComicVersion) if foundNZB == "yes": #print ("found!") updater.foundsearch(ComicID=issue['ComicID'], IssueID=issue['IssueID']) diff --git a/mylar/webserve.py b/mylar/webserve.py index dc4fc180..1af6c6b8 100755 --- a/mylar/webserve.py +++ b/mylar/webserve.py @@ -436,7 +436,8 @@ class WebInterface(object): SeriesYear = miy['ComicYear'] AlternateSearch = miy['AlternateSearch'] UseAFuzzy = miy['UseFuzzy'] - foundcom = search.search_init(ComicName, ComicIssue, ComicYear, SeriesYear, issues['IssueDate'], IssueID, AlternateSearch, UseAFuzzy) + ComicVersion = miy['ComicVersion'] + foundcom = search.search_init(ComicName, ComicIssue, ComicYear, SeriesYear, issues['IssueDate'], IssueID, AlternateSearch, UseAFuzzy, ComicVersion) if foundcom == "yes": # file check to see if issue exists and update 'have' count if IssueID is not None: @@ -1241,7 +1242,7 @@ class WebInterface(object): error_change.exposed = True - def comic_config(self, com_location, ComicID, alt_search=None, fuzzy_year=None): + def comic_config(self, com_location, ComicID, alt_search=None, fuzzy_year=None, comic_version=None): myDB = db.DBConnection() #--- this is for multipe search terms............ #--- works, just need to redo search.py to accomodate multiple search terms @@ -1289,6 +1290,15 @@ class WebInterface(object): newValues['UseFuzzy'] = "0" else: newValues['UseFuzzy'] = str(fuzzy_year) + + if comic_version is None: + newValues['ComicVersion'] = "None" + else: + if comic_version[1:].isdigit() and comic_version[:1].lower() == 'v': + newValues['ComicVersion'] = str(comic_version) + else: + logger.info("Invalid Versioning entered - it must be in the format of v#") + newValues['ComicVersion'] = "None" #force the check/creation of directory com_location here if os.path.isdir(str(com_location)):