From d57741515e51422f13d25ee73034c62064f9374b Mon Sep 17 00:00:00 2001 From: evilhero Date: Fri, 30 Sep 2016 16:10:08 -0400 Subject: [PATCH] FIX:(#1400) Added option to Manage Comics to bulk Recheck Files, FIX:(#1370) Fixed multiple problms with the Manage Comics options to mass delete and mass refresh series, FIX: When using alt-pull 2 method for pullist, when pull-list is updated with new info, status on series detail page wouldn't reflect Wanted status, IMP: Added some additoinal publisher logos, FIX: Removed some placeholder options from the Story Arc Details page --- data/interfaces/default/comicdetails.html | 6 ++ .../images/publisherlogos/logo-actionlabs.png | Bin 0 -> 31231 bytes .../images/publisherlogos/logo-valiant.png | Bin 0 -> 6023 bytes .../images/publisherlogos/logo-zenescope.png | Bin 0 -> 13389 bytes data/interfaces/default/managecomics.html | 13 +-- data/interfaces/default/storyarc_detail.html | 4 +- data/interfaces/default/weeklypull.html | 9 +- mylar/auth32p.py | 4 +- mylar/updater.py | 5 +- mylar/webserve.py | 83 ++++++++++-------- mylar/weeklypull.py | 10 ++- 11 files changed, 80 insertions(+), 54 deletions(-) create mode 100644 data/interfaces/default/images/publisherlogos/logo-actionlabs.png create mode 100644 data/interfaces/default/images/publisherlogos/logo-valiant.png create mode 100644 data/interfaces/default/images/publisherlogos/logo-zenescope.png diff --git a/data/interfaces/default/comicdetails.html b/data/interfaces/default/comicdetails.html index c96d62eb..60c20eb2 100644 --- a/data/interfaces/default/comicdetails.html +++ b/data/interfaces/default/comicdetails.html @@ -123,6 +123,12 @@ Dynamite %elif comic['ComicPublisher'] == 'Cartoon Books': Cartoon Books + %elif comic['ComicPublisher'] == 'Valiant': + Valiant + %elif comic['ComicPublisher'] == 'Action Lab': + Action Lab + %elif comic['ComicPublisher'] == 'Zenescope Entertainment': + Zenescope %endif
diff --git a/data/interfaces/default/images/publisherlogos/logo-actionlabs.png b/data/interfaces/default/images/publisherlogos/logo-actionlabs.png new file mode 100644 index 0000000000000000000000000000000000000000..94f2c1222a4eea976700fd7298b13dcadab02320 GIT binary patch literal 31231 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

4^UDrdGnAf@4WeO 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 TSV8<3I0Tp^BU~n^>+^pBD?!RV literal 0 HcmV?d00001 diff --git a/data/interfaces/default/images/publisherlogos/logo-valiant.png b/data/interfaces/default/images/publisherlogos/logo-valiant.png new file mode 100644 index 0000000000000000000000000000000000000000..5306ae37eb536c4ca4704b4aa1c6fd420b965b0c GIT binary patch literal 6023 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 D7Zhmr literal 0 HcmV?d00001 diff --git a/data/interfaces/default/images/publisherlogos/logo-zenescope.png b/data/interfaces/default/images/publisherlogos/logo-zenescope.png new file mode 100644 index 0000000000000000000000000000000000000000..a9338d47d4e66bcc4807aa6b6b6b42370d31be52 GIT binary patch literal 13389 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 literal 0 HcmV?d00001 diff --git a/data/interfaces/default/managecomics.html b/data/interfaces/default/managecomics.html index b0ed3e20..f4f5301e 100755 --- a/data/interfaces/default/managecomics.html +++ b/data/interfaces/default/managecomics.html @@ -20,10 +20,11 @@
selected comics @@ -37,8 +38,8 @@ Comic Name Status - - Latest Issue + + Latest Issue Publisher Have Updated diff --git a/data/interfaces/default/storyarc_detail.html b/data/interfaces/default/storyarc_detail.html index 734948c4..2f40e831 100755 --- a/data/interfaces/default/storyarc_detail.html +++ b/data/interfaces/default/storyarc_detail.html @@ -41,9 +41,11 @@

Arcs in StoryArc Directory: <% sdir = os.path.join(mylar.DESTINATION_DIR, "StoryArcs") %>${sdir}
+ +
diff --git a/data/interfaces/default/weeklypull.html b/data/interfaces/default/weeklypull.html index a4022f33..324809ca 100755 --- a/data/interfaces/default/weeklypull.html +++ b/data/interfaces/default/weeklypull.html @@ -101,15 +101,14 @@ ${weekly['STATUS']} %if weekly['STATUS'] == 'Skipped': %if weekly['COMICID'] != '' and weekly['COMICID'] is not None: - add series + Add %else: %if weekly['ISSUE'] == '1' or weekly['ISSUE'] == '0': - Watch - %else: - add series + Watch %endif + Search %endif - one off + One-Off %endif %endif diff --git a/mylar/auth32p.py b/mylar/auth32p.py index 644c6d84..8d4f8352 100644 --- a/mylar/auth32p.py +++ b/mylar/auth32p.py @@ -75,7 +75,7 @@ class info32p(object): #need a way to find response code (200=OK), but returns 200 for everything even failed signons (returns a blank page) #logger.info('[32P] response: ' + str(r.content)) - soup = BeautifulSoup(r.content) + soup = BeautifulSoup(r.content, "html.parser") soup.prettify() if self.searchterm: @@ -189,7 +189,7 @@ class info32p(object): s.cookies = cj time.sleep(1) #just to make sure we don't hammer, 1s pause. t = s.get(url, params=params, verify=True) - soup = BeautifulSoup(t.content) + soup = BeautifulSoup(t.content, "html.parser") results = soup.find_all("a", {"class":"object-qtip"},{"data-type":"torrentgroup"}) data = [] diff --git a/mylar/updater.py b/mylar/updater.py index 215aa4d2..59ff46a5 100755 --- a/mylar/updater.py +++ b/mylar/updater.py @@ -565,7 +565,10 @@ def weekly_update(ComicName, IssueNumber, CStatus, CID, weeknumber, year, altiss def newpullcheck(ComicName, ComicID, issue=None): # When adding a new comic, let's check for new issues on this week's pullist and update. - mylar.weeklypull.pullitcheck(comic1off_name=ComicName, comic1off_id=ComicID, issue=issue) + if mylar.ALT_PULL != '2': + mylar.weeklypull.pullitcheck(comic1off_name=ComicName, comic1off_id=ComicID, issue=issue) + else: + mylar.weeklypull.new_pullcheck(weeknumber=mylar.CURRENT_WEEKNUMBER, pullyear=mylar.CURRENT_YEAR, comic1off_name=ComicName, comic1off_id=ComicID, issue=issue) return def no_searchresults(ComicID): diff --git a/mylar/webserve.py b/mylar/webserve.py index fbbbbae4..e039cb06 100755 --- a/mylar/webserve.py +++ b/mylar/webserve.py @@ -2182,44 +2182,46 @@ class WebInterface(object): def markComics(self, action=None, **args): myDB = db.DBConnection() comicsToAdd = [] - logger.info(args) - for ComicID in args: - if ComicID == 'manage_comic_length': + for k,v in args.items(): + if k == 'manage_comic_length': continue - else: - for k,v in args.items(): - if k == 'manage_comic_length': - break - #k = Comicname[ComicYear] - #v = ComicID - comyr = k.find('[') - ComicYear = re.sub('[\[\]]', '', k[comyr:]).strip() - ComicName = k[:comyr].strip() - ComicID = v - #cid = ComicName.decode('utf-8', 'replace') + #k = Comicname[ComicYear] + #v = ComicID + comyr = k.find('[') + ComicYear = re.sub('[\[\]]', '', k[comyr:]).strip() + ComicName = k[:comyr].strip() + ComicID = v + #cid = ComicName.decode('utf-8', 'replace') - if action == 'delete': - logger.info('[MANAGE COMICS][DELETION] Now deleting ' + ComicName + ' (' + str(ComicYear) + ') [' + str(ComicID) + '] form the DB.') - myDB.action('DELETE from comics WHERE ComicID=?', [ComicID]) - myDB.action('DELETE from issues WHERE ComicID=?', [ComicID]) - logger.info('[MANAGE COMICS][DELETION] Successfully deleted ' + ComicName + '(' + str(ComicYear) + ')') - elif action == 'pause': - controlValueDict = {'ComicID': ComicID} - newValueDict = {'Status': 'Paused'} - myDB.upsert("comics", newValueDict, controlValueDict) - logger.info('[MANAGE COMICS][PAUSE] ' + ComicName + ' has now been put into a Paused State.') - elif action == 'resume': - controlValueDict = {'ComicID': ComicID} - newValueDict = {'Status': 'Active'} - myDB.upsert("comics", newValueDict, controlValueDict) - logger.info('[MANAGE COMICS][RESUME] ' + ComicName + ' has now been put into a Resumed State.') - else: - logger.info('appending ' + str(ComicID) + ' to refresh list.') - comicsToAdd.append(ComicID) + if action == 'delete': + logger.info('[MANAGE COMICS][DELETION] Now deleting ' + ComicName + ' (' + str(ComicYear) + ') [' + str(ComicID) + '] form the DB.') + myDB.action('DELETE from comics WHERE ComicID=?', [ComicID]) + myDB.action('DELETE from issues WHERE ComicID=?', [ComicID]) + logger.info('[MANAGE COMICS][DELETION] Successfully deleted ' + ComicName + '(' + str(ComicYear) + ')') + elif action == 'pause': + controlValueDict = {'ComicID': ComicID} + newValueDict = {'Status': 'Paused'} + myDB.upsert("comics", newValueDict, controlValueDict) + logger.info('[MANAGE COMICS][PAUSE] ' + ComicName + ' has now been put into a Paused State.') + elif action == 'resume': + controlValueDict = {'ComicID': ComicID} + newValueDict = {'Status': 'Active'} + myDB.upsert("comics", newValueDict, controlValueDict) + logger.info('[MANAGE COMICS][RESUME] ' + ComicName + ' has now been put into a Resumed State.') + elif action == 'recheck': + comicsToAdd.append({'ComicID': ComicID, + 'ComicName': ComicName, + 'ComicYear': ComicYear}) + else: + comicsToAdd.append(ComicID) if len(comicsToAdd) > 0: - logger.info('[MANAGE COMICS][REFRESH] Refreshing ' + str(len(comicsToAdd)) + ' series') - threading.Thread(target=updater.dbUpdate, args=[comicsToAdd]).start() + if action == 'recheck': + logger.info('[MANAGE COMICS][RECHECK-FILES] Rechecking Files for ' + str(len(comicsToAdd)) + ' series') + threading.Thread(target=self.forceRescan, args=[comicsToAdd,True]).start() + else: + logger.info('[MANAGE COMICS][REFRESH] Refreshing ' + str(len(comicsToAdd)) + ' series') + threading.Thread(target=updater.dbUpdate, args=[comicsToAdd]).start() markComics.exposed = True def forceUpdate(self): @@ -2234,9 +2236,16 @@ class WebInterface(object): raise cherrypy.HTTPRedirect("home") forceSearch.exposed = True - def forceRescan(self, ComicID): - threading.Thread(target=updater.forceRescan, args=[ComicID]).start() - #raise cherrypy.HTTPRedirect("comicDetails?ComicID=%s" % ComicID) + def forceRescan(self, ComicID, bulk=False): + if bulk: + cnt = 1 + for cid in ComicID: + logger.info('[MASS BATCH][RECHECK-FILES][' + str(cnt) + '/' + str(len(ComicID)) + '] Rechecking ' + cid['ComicName'] + '(' + str(cid['ComicYear']) + ')') + updater.forceRescan(cid['ComicID']) + cnt+=1 + logger.info('[MASS BATCH][RECHECK-FILES] I have completed rechecking files for ' + str(len(ComicID)) + ' series.') + else: + threading.Thread(target=updater.forceRescan, args=[ComicID]).start() forceRescan.exposed = True def checkGithub(self): diff --git a/mylar/weeklypull.py b/mylar/weeklypull.py index 1081c744..87d4b448 100755 --- a/mylar/weeklypull.py +++ b/mylar/weeklypull.py @@ -831,7 +831,11 @@ def new_pullcheck(weeknumber, pullyear, comic1off_name=None, comic1off_id=None, myDB = db.DBConnection() watchlist = [] weeklylist = [] - comiclist = myDB.select("SELECT * FROM comics WHERE Status='Active'") + if comic1off_name: + comiclist = myDB.select("SELECT * FROM comics WHERE Status='Active' AND ComicID=?",[comic1off_id]) + else: + comiclist = myDB.select("SELECT * FROM comics WHERE Status='Active'") + if comiclist is None: pass else: @@ -926,7 +930,9 @@ def new_pullcheck(weeknumber, pullyear, comic1off_name=None, comic1off_id=None, ki = [] kc = [] otot = 0 - logger.fdebug("[WALKSOFTLY] You are watching for: " + str(len(weeklylist)) + " comics") + if not comic1off_id: + logger.fdebug("[WALKSOFTLY] You are watching for: " + str(len(weeklylist)) + " comics") + weekly = myDB.select('SELECT a.comicid, IFNULL(a.Comic,IFNULL(b.ComicName, c.ComicName)) as ComicName, a.rowid, a.issue, a.issueid, c.ComicPublisher, a.weeknumber, a.shipdate, a.dynamicname FROM weekly as a INNER JOIN annuals as b INNER JOIN comics as c ON b.releasecomicid = a.comicid OR c.comicid = a.comicid OR c.DynamicComicName = a.dynamicname WHERE weeknumber = ? GROUP BY a.dynamicname', [weeknumber]) #comics INNER JOIN weekly ON comics.DynamicComicName = weekly.dynamicname OR comics.comicid = weekly.comicid INNER JOIN annuals ON annuals.comicid = weekly.comicid WHERE weeknumber = ? GROUP BY weekly.dynamicname', [weeknumber]) for week in weekly: idmatch = None