2012-09-13 15:27:34 +00:00
|
|
|
# This file is part of Mylar.
|
|
|
|
#
|
|
|
|
# Mylar is free software: you can redistribute it and/or modify
|
|
|
|
# it under the terms of the GNU General Public License as published by
|
|
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
|
|
# (at your option) any later version.
|
|
|
|
#
|
|
|
|
# Mylar is distributed in the hope that it will be useful,
|
|
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
# GNU General Public License for more details.
|
|
|
|
#
|
|
|
|
# You should have received a copy of the GNU General Public License
|
|
|
|
# along with Mylar. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
import time
|
2012-10-16 08:16:29 +00:00
|
|
|
import os, errno
|
2012-09-13 15:27:34 +00:00
|
|
|
import sys
|
|
|
|
import shlex
|
|
|
|
import datetime
|
2012-09-18 20:33:09 +00:00
|
|
|
import re
|
2012-10-16 08:16:29 +00:00
|
|
|
import urllib
|
2012-12-27 15:04:03 +00:00
|
|
|
import shutil
|
2013-02-22 08:35:51 +00:00
|
|
|
import sqlite3
|
|
|
|
import cherrypy
|
2012-09-13 15:27:34 +00:00
|
|
|
|
|
|
|
import mylar
|
2013-03-21 17:09:10 +00:00
|
|
|
from mylar import logger, helpers, db, mb, albumart, cv, parseit, filechecker, search, updater, moveit, comicbookdb
|
2012-09-13 15:27:34 +00:00
|
|
|
|
|
|
|
|
|
|
|
def is_exists(comicid):
|
|
|
|
|
|
|
|
myDB = db.DBConnection()
|
|
|
|
|
|
|
|
# See if the artist is already in the database
|
|
|
|
comiclist = myDB.select('SELECT ComicID, ComicName from comics WHERE ComicID=?', [comicid])
|
|
|
|
|
|
|
|
if any(comicid in x for x in comiclist):
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.info(comiclist[0][1] + ' is already in the database.')
|
2012-09-13 15:27:34 +00:00
|
|
|
return False
|
|
|
|
else:
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
2013-02-09 03:34:02 +00:00
|
|
|
def addComictoDB(comicid,mismatch=None,pullupd=None,imported=None,ogcname=None):
|
2012-09-13 15:27:34 +00:00
|
|
|
# Putting this here to get around the circular import. Will try to use this to update images at later date.
|
2013-01-17 16:22:51 +00:00
|
|
|
# from mylar import cache
|
2012-09-13 15:27:34 +00:00
|
|
|
|
|
|
|
myDB = db.DBConnection()
|
|
|
|
|
|
|
|
# We need the current minimal info in the database instantly
|
|
|
|
# so we don't throw a 500 error when we redirect to the artistPage
|
|
|
|
|
|
|
|
controlValueDict = {"ComicID": comicid}
|
|
|
|
|
|
|
|
dbcomic = myDB.action('SELECT * FROM comics WHERE ComicID=?', [comicid]).fetchone()
|
|
|
|
if dbcomic is None:
|
|
|
|
newValueDict = {"ComicName": "Comic ID: %s" % (comicid),
|
|
|
|
"Status": "Loading"}
|
2012-10-16 08:16:29 +00:00
|
|
|
comlocation = None
|
2013-05-27 06:47:44 +00:00
|
|
|
oldcomversion = None
|
2012-09-13 15:27:34 +00:00
|
|
|
else:
|
|
|
|
newValueDict = {"Status": "Loading"}
|
2012-10-16 08:16:29 +00:00
|
|
|
comlocation = dbcomic['ComicLocation']
|
2013-04-22 03:43:57 +00:00
|
|
|
filechecker.validateAndCreateDirectory(comlocation, True)
|
2013-05-26 03:18:29 +00:00
|
|
|
oldcomversion = dbcomic['ComicVersion'] #store the comicversion and chk if it exists before hammering.
|
2012-09-13 15:27:34 +00:00
|
|
|
|
|
|
|
myDB.upsert("comics", newValueDict, controlValueDict)
|
|
|
|
|
2013-03-14 08:33:16 +00:00
|
|
|
#run the re-sortorder here in order to properly display the page
|
2013-03-21 17:09:10 +00:00
|
|
|
if pullupd is None:
|
|
|
|
helpers.ComicSort(comicorder=mylar.COMICSORT, imported=comicid)
|
2013-03-14 08:33:16 +00:00
|
|
|
|
2012-09-13 15:27:34 +00:00
|
|
|
# we need to lookup the info for the requested ComicID in full now
|
|
|
|
comic = cv.getComic(comicid,'comic')
|
2012-10-16 08:16:29 +00:00
|
|
|
#comic = myDB.action('SELECT * FROM comics WHERE ComicID=?', [comicid]).fetchone()
|
2012-09-13 15:27:34 +00:00
|
|
|
if not comic:
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.warn('Error fetching comic. ID for : ' + comicid)
|
2012-09-13 15:27:34 +00:00
|
|
|
if dbcomic is None:
|
|
|
|
newValueDict = {"ComicName": "Fetch failed, try refreshing. (%s)" % (comicid),
|
|
|
|
"Status": "Active"}
|
|
|
|
else:
|
|
|
|
newValueDict = {"Status": "Active"}
|
|
|
|
myDB.upsert("comics", newValueDict, controlValueDict)
|
|
|
|
return
|
|
|
|
|
|
|
|
if comic['ComicName'].startswith('The '):
|
|
|
|
sortname = comic['ComicName'][4:]
|
|
|
|
else:
|
|
|
|
sortname = comic['ComicName']
|
|
|
|
|
|
|
|
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.info('Now adding/updating: ' + comic['ComicName'])
|
2012-09-13 15:27:34 +00:00
|
|
|
#--Now that we know ComicName, let's try some scraping
|
|
|
|
#--Start
|
|
|
|
# gcd will return issue details (most importantly publishing date)
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
if not mylar.CV_ONLY:
|
|
|
|
if mismatch == "no" or mismatch is None:
|
|
|
|
gcdinfo=parseit.GCDScraper(comic['ComicName'], comic['ComicYear'], comic['ComicIssues'], comicid)
|
|
|
|
#print ("gcdinfo: " + str(gcdinfo))
|
|
|
|
mismatch_com = "no"
|
|
|
|
if gcdinfo == "No Match":
|
|
|
|
updater.no_searchresults(comicid)
|
|
|
|
nomatch = "true"
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.info('There was an error when trying to add ' + comic['ComicName'] + ' (' + comic['ComicYear'] + ')' )
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
return nomatch
|
|
|
|
else:
|
|
|
|
mismatch_com = "yes"
|
|
|
|
#print ("gcdinfo:" + str(gcdinfo))
|
2012-10-16 08:16:29 +00:00
|
|
|
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
elif mismatch == "yes":
|
|
|
|
CV_EXcomicid = myDB.action("SELECT * from exceptions WHERE ComicID=?", [comicid]).fetchone()
|
|
|
|
if CV_EXcomicid['variloop'] is None: pass
|
|
|
|
else:
|
|
|
|
vari_loop = CV_EXcomicid['variloop']
|
|
|
|
NewComicID = CV_EXcomicid['NewComicID']
|
|
|
|
gcomicid = CV_EXcomicid['GComicID']
|
|
|
|
resultURL = "/series/" + str(NewComicID) + "/"
|
|
|
|
#print ("variloop" + str(CV_EXcomicid['variloop']))
|
|
|
|
#if vari_loop == '99':
|
|
|
|
gcdinfo = parseit.GCDdetails(comseries=None, resultURL=resultURL, vari_loop=0, ComicID=comicid, TotalIssues=0, issvariation="no", resultPublished=None)
|
2012-10-16 08:16:29 +00:00
|
|
|
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.info('Sucessfully retrieved details for ' + comic['ComicName'] )
|
2012-09-13 15:27:34 +00:00
|
|
|
# print ("Series Published" + parseit.resultPublished)
|
|
|
|
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
CV_NoYearGiven = "no"
|
2013-03-12 16:13:43 +00:00
|
|
|
#if the SeriesYear returned by CV is blank or none (0000), let's use the gcd one.
|
|
|
|
if comic['ComicYear'] is None or comic['ComicYear'] == '0000':
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
if mylar.CV_ONLY:
|
|
|
|
#we'll defer this until later when we grab all the issues and then figure it out
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.info('Uh-oh. I cannot find a Series Year for this series. I am going to try analyzing deeper.')
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
SeriesYear = cv.getComic(comicid,'firstissue',comic['FirstIssueID'])
|
|
|
|
if SeriesYear == '0000':
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.info('Ok - I could not find a Series Year at all. Loading in the issue data now and will figure out the Series Year.')
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
CV_NoYearGiven = "yes"
|
|
|
|
issued = cv.getComic(comicid,'issue')
|
|
|
|
SeriesYear = issued['firstdate'][:4]
|
|
|
|
else:
|
|
|
|
SeriesYear = gcdinfo['SeriesYear']
|
2013-03-12 16:13:43 +00:00
|
|
|
else:
|
|
|
|
SeriesYear = comic['ComicYear']
|
|
|
|
|
2013-03-21 17:09:10 +00:00
|
|
|
#let's do the Annual check here.
|
|
|
|
if mylar.ANNUALS_ON:
|
2013-05-15 09:04:26 +00:00
|
|
|
annualcomicname = re.sub('[\,\:]', '', comic['ComicName'])
|
2013-07-01 05:19:15 +00:00
|
|
|
|
|
|
|
#----- CBDB (outdated)
|
|
|
|
# annuals = comicbookdb.cbdb(annualcomicname, SeriesYear)
|
|
|
|
# print ("Number of Annuals returned: " + str(annuals['totalissues']))
|
|
|
|
# nb = 0
|
|
|
|
# while (nb <= int(annuals['totalissues'])):
|
|
|
|
# try:
|
|
|
|
# annualval = annuals['annualslist'][nb]
|
|
|
|
# except IndexError:
|
|
|
|
# break
|
|
|
|
#----
|
|
|
|
#this issueid doesn't exist at this point since we got the data from cbdb...let's try and figure out
|
|
|
|
#the issueID for CV based on what we know so we can use that ID (and thereby the metadata too)
|
|
|
|
|
|
|
|
#other inherit issue - results below will return the ID for the Series of Annuals, not the series itself.
|
|
|
|
#sr['comicid'] not the same as comicid for series.
|
|
|
|
annComicName = annualcomicname + ' annual'
|
|
|
|
mode = 'series'
|
|
|
|
#if annuals['totalissues'] is None:
|
|
|
|
# annissues = 0
|
|
|
|
#else:
|
|
|
|
# annissues = annuals['totalissues']
|
|
|
|
#print "annissues :" + str(annissues)
|
|
|
|
|
|
|
|
# annuals happen once / year. determine how many.
|
|
|
|
annualyear = SeriesYear # no matter what, the year won't be less than this.
|
|
|
|
#if annualval['AnnualYear'] is None:
|
|
|
|
# sresults = mb.findComic(annComicName, mode, issue=annissues)
|
|
|
|
#else:
|
|
|
|
#sresults = mb.findComic(annComicName, mode, issue=annissues, limityear=annualval['AnnualYear'])
|
|
|
|
#print "annualyear: " + str(annualval['AnnualYear'])
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.fdebug('annualyear:' + str(annualyear))
|
2013-07-01 05:19:15 +00:00
|
|
|
sresults = mb.findComic(annComicName, mode, issue=None)
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.fdebug('sresults : ' + str(sresults))
|
2013-07-01 05:19:15 +00:00
|
|
|
|
|
|
|
type='comic'
|
|
|
|
|
|
|
|
if len(sresults) == 1:
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.fdebug('1 result')
|
2013-07-01 05:19:15 +00:00
|
|
|
if len(sresults) > 0:
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.fdebug('there are ' + str(len(sresults)) + ' results.')
|
2013-07-01 05:19:15 +00:00
|
|
|
num_res = 0
|
|
|
|
while (num_res < len(sresults)):
|
|
|
|
sr = sresults[num_res]
|
2013-07-11 03:37:52 +00:00
|
|
|
#logger.fdebug("description:" + sr['description'])
|
|
|
|
if 'paperback' in sr['description'] or 'collecting' in sr['description'] or 'reprints' in sr['description'] or 'collected' in sr['description']:
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.fdebug('tradeback/collected edition detected - skipping ' + str(sr['comicid']))
|
2013-07-01 05:19:15 +00:00
|
|
|
else:
|
|
|
|
if comicid in sr['description']:
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.fdebug(str(comicid) + ' found. Assuming it is part of the greater collection.')
|
2013-07-01 05:19:15 +00:00
|
|
|
issueid = sr['comicid']
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.fdebug(str(issueid) + ' added to series list as an Annual')
|
2013-07-01 05:19:15 +00:00
|
|
|
issued = cv.getComic(issueid,'issue')
|
|
|
|
if len(issued) is None or len(issued) == 0:
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.fdebug('Could not find any annual information...')
|
2013-07-01 05:19:15 +00:00
|
|
|
pass
|
|
|
|
else:
|
|
|
|
n = 0
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.fdebug('there are ' + str(sr['issues']) + ' annuals in this series.')
|
2013-07-01 05:19:15 +00:00
|
|
|
while (n < int(sr['issues'])):
|
|
|
|
try:
|
|
|
|
firstval = issued['issuechoice'][n]
|
|
|
|
except IndexError:
|
|
|
|
break
|
|
|
|
cleanname = helpers.cleanName(firstval['Issue_Name'])
|
|
|
|
issid = str(firstval['Issue_ID'])
|
|
|
|
issnum = str(firstval['Issue_Number'])
|
|
|
|
issname = cleanname
|
|
|
|
issdate = str(firstval['Issue_Date'])
|
|
|
|
newCtrl = {"IssueID": issid}
|
|
|
|
newVals = {"Issue_Number": issnum,
|
|
|
|
"Int_IssueNumber": helpers.issuedigits(issnum),
|
|
|
|
"IssueDate": issdate,
|
|
|
|
"IssueName": issname,
|
|
|
|
"ComicID": comicid,
|
2013-07-30 04:57:37 +00:00
|
|
|
"ComicName": comic['ComicName'],
|
2013-07-01 05:19:15 +00:00
|
|
|
"Status": "Skipped"}
|
|
|
|
myDB.upsert("annuals", newVals, newCtrl)
|
|
|
|
n+=1
|
|
|
|
num_res+=1
|
|
|
|
|
|
|
|
elif len(sresults) == 0 or len(sresults) is None:
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.fdebug('no results, removing the year from the agenda and re-querying.')
|
2013-07-01 05:19:15 +00:00
|
|
|
sresults = mb.findComic(annComicName, mode, issue=None)
|
|
|
|
if len(sresults) == 1:
|
|
|
|
sr = sresults[0]
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.fdebug(str(comicid) + ' found. Assuming it is part of the greater collection.')
|
2013-07-01 05:19:15 +00:00
|
|
|
else:
|
|
|
|
resultset = 0
|
|
|
|
else:
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.fdebug('returning results to screen - more than one possibility')
|
2013-07-01 05:19:15 +00:00
|
|
|
for sr in sresults:
|
|
|
|
if annualyear < sr['comicyear']:
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.fdebug(str(annualyear) + ' is less than ' + str(sr['comicyear']))
|
2013-07-01 05:19:15 +00:00
|
|
|
if int(sr['issues']) > (2013 - int(sr['comicyear'])):
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.fdebug('issue count is wrong')
|
2013-07-01 05:19:15 +00:00
|
|
|
|
|
|
|
#newCtrl = {"IssueID": issueid}
|
|
|
|
#newVals = {"Issue_Number": annualval['AnnualIssue'],
|
|
|
|
# "IssueDate": annualval['AnnualDate'],
|
|
|
|
# "IssueName": annualval['AnnualTitle'],
|
|
|
|
# "ComicID": comicid,
|
|
|
|
# "Status": "Skipped"}
|
|
|
|
#myDB.upsert("annuals", newVals, newCtrl)
|
|
|
|
#nb+=1
|
2013-03-21 17:09:10 +00:00
|
|
|
|
|
|
|
#parseit.annualCheck(gcomicid=gcdinfo['GCDComicID'], comicid=comicid, comicname=comic['ComicName'], comicyear=SeriesYear)
|
2012-09-13 15:27:34 +00:00
|
|
|
#comic book location on machine
|
|
|
|
# setup default location here
|
2012-10-16 08:16:29 +00:00
|
|
|
|
|
|
|
if comlocation is None:
|
2013-03-08 01:36:36 +00:00
|
|
|
# let's remove the non-standard characters here.
|
|
|
|
u_comicnm = comic['ComicName']
|
|
|
|
u_comicname = u_comicnm.encode('ascii', 'ignore').strip()
|
2013-07-06 02:42:58 +00:00
|
|
|
dirbad = [':',',','/','?','!','\''] #in u_comicname or '/' in u_comicname or ',' in u_comicname or '?' in u_comicname:
|
2013-07-01 05:19:15 +00:00
|
|
|
comicdir = u_comicname
|
|
|
|
for dbd in dirbad:
|
|
|
|
if dbd in u_comicname:
|
|
|
|
if dbd == '/': repthechar = '-'
|
|
|
|
else: repthechar = ''
|
|
|
|
comicdir = comicdir.replace(dbd,repthechar)
|
|
|
|
# if ':' in comicdir:
|
|
|
|
# comicdir = comicdir.replace(dbd,'')
|
|
|
|
# if '/' in comicdir:
|
|
|
|
# comicdir = comicdir.replace('/','-')
|
|
|
|
# if ',' in comicdir:
|
|
|
|
# comicdir = comicdir.replace(',','')
|
|
|
|
# if '?' in comicdir:
|
|
|
|
# comicdir = comicdir.replace('?','')
|
|
|
|
# if '!' in comicdir:
|
|
|
|
# comicdir = comicdir.replace('!','')
|
2012-10-20 16:14:32 +00:00
|
|
|
|
2012-10-30 10:43:01 +00:00
|
|
|
series = comicdir
|
2013-05-25 06:18:00 +00:00
|
|
|
publisher = re.sub('!','',comic['ComicPublisher']) # thanks Boom!
|
2013-03-12 16:13:43 +00:00
|
|
|
year = SeriesYear
|
2013-05-25 06:18:00 +00:00
|
|
|
comversion = comic['ComicVersion']
|
|
|
|
if comversion is None:
|
|
|
|
comversion = 'None'
|
|
|
|
#if comversion is None, remove it so it doesn't populate with 'None'
|
|
|
|
if comversion == 'None':
|
|
|
|
chunk_f_f = re.sub('\$VolumeN','',mylar.FILE_FORMAT)
|
|
|
|
chunk_f = re.compile(r'\s+')
|
|
|
|
mylar.FILE_FORMAT = chunk_f.sub(' ', chunk_f_f)
|
|
|
|
|
2012-10-30 10:43:01 +00:00
|
|
|
#do work to generate folder path
|
|
|
|
|
|
|
|
values = {'$Series': series,
|
2013-01-14 05:12:59 +00:00
|
|
|
'$Publisher': publisher,
|
|
|
|
'$Year': year,
|
|
|
|
'$series': series.lower(),
|
|
|
|
'$publisher': publisher.lower(),
|
2013-05-25 06:18:00 +00:00
|
|
|
'$VolumeY': 'V' + str(year),
|
|
|
|
'$VolumeN': comversion
|
2012-10-30 10:43:01 +00:00
|
|
|
}
|
|
|
|
|
2013-05-25 06:18:00 +00:00
|
|
|
|
|
|
|
|
2012-10-30 10:43:01 +00:00
|
|
|
#print mylar.FOLDER_FORMAT
|
|
|
|
#print 'working dir:'
|
|
|
|
#print helpers.replace_all(mylar.FOLDER_FORMAT, values)
|
|
|
|
|
|
|
|
if mylar.FOLDER_FORMAT == '':
|
2013-07-31 06:34:07 +00:00
|
|
|
comlocation = os.path.join(mylar.DESTINATION_DIR, comicdir, " (" + SeriesYear + ")")
|
2012-10-30 10:43:01 +00:00
|
|
|
else:
|
2013-07-31 06:34:07 +00:00
|
|
|
comlocation = os.path.join(mylar.DESTINATION_DIR, helpers.replace_all(mylar.FOLDER_FORMAT, values))
|
2012-10-30 10:43:01 +00:00
|
|
|
|
|
|
|
|
|
|
|
#comlocation = mylar.DESTINATION_DIR + "/" + comicdir + " (" + comic['ComicYear'] + ")"
|
2012-10-16 08:16:29 +00:00
|
|
|
if mylar.DESTINATION_DIR == "":
|
2013-09-18 04:49:24 +00:00
|
|
|
logger.error('There is no Comic Location Path specified - please specify one in Config/Web Interface.')
|
2012-10-16 08:16:29 +00:00
|
|
|
return
|
|
|
|
if mylar.REPLACE_SPACES:
|
|
|
|
#mylar.REPLACE_CHAR ...determines what to replace spaces with underscore or dot
|
|
|
|
comlocation = comlocation.replace(' ', mylar.REPLACE_CHAR)
|
2013-03-21 17:09:10 +00:00
|
|
|
|
|
|
|
#moved this out of the above loop so it will chk for existance of comlocation in case moved
|
|
|
|
#if it doesn't exist - create it (otherwise will bugger up later on)
|
2013-08-19 06:14:47 +00:00
|
|
|
if os.path.isdir(comlocation):
|
|
|
|
logger.info('Directory (' + comlocation + ') already exists! Continuing...')
|
2013-03-21 17:09:10 +00:00
|
|
|
else:
|
|
|
|
#print ("Directory doesn't exist!")
|
2013-04-22 03:43:57 +00:00
|
|
|
#try:
|
|
|
|
# os.makedirs(str(comlocation))
|
|
|
|
# logger.info(u"Directory successfully created at: " + str(comlocation))
|
|
|
|
#except OSError:
|
|
|
|
# logger.error(u"Could not create comicdir : " + str(comlocation))
|
|
|
|
filechecker.validateAndCreateDirectory(comlocation, True)
|
2012-09-13 15:27:34 +00:00
|
|
|
|
|
|
|
#try to account for CV not updating new issues as fast as GCD
|
|
|
|
#seems CV doesn't update total counts
|
|
|
|
#comicIssues = gcdinfo['totalissues']
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
comicIssues = comic['ComicIssues']
|
|
|
|
|
|
|
|
if not mylar.CV_ONLY:
|
|
|
|
if gcdinfo['gcdvariation'] == "cv":
|
|
|
|
comicIssues = str(int(comic['ComicIssues']) + 1)
|
2012-09-24 05:17:29 +00:00
|
|
|
|
2012-10-16 08:16:29 +00:00
|
|
|
#let's download the image...
|
|
|
|
if os.path.exists(mylar.CACHE_DIR):pass
|
|
|
|
else:
|
|
|
|
#let's make the dir.
|
|
|
|
try:
|
|
|
|
os.makedirs(str(mylar.CACHE_DIR))
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.info('Cache Directory successfully created at: ' + str(mylar.CACHE_DIR))
|
2012-10-16 08:16:29 +00:00
|
|
|
|
2012-10-17 15:57:51 +00:00
|
|
|
except OSError:
|
|
|
|
logger.error('Could not create cache dir. Check permissions of cache dir: ' + str(mylar.CACHE_DIR))
|
2012-10-16 08:16:29 +00:00
|
|
|
|
2013-03-21 17:09:10 +00:00
|
|
|
coverfile = os.path.join(mylar.CACHE_DIR, str(comicid) + ".jpg")
|
2012-10-16 08:16:29 +00:00
|
|
|
|
|
|
|
#try:
|
|
|
|
urllib.urlretrieve(str(comic['ComicImage']), str(coverfile))
|
|
|
|
try:
|
|
|
|
with open(str(coverfile)) as f:
|
2013-07-30 04:57:37 +00:00
|
|
|
PRComicImage = os.path.join('cache',str(comicid) + ".jpg")
|
|
|
|
ComicImage = helpers.replacetheslash(PRComicImage)
|
2013-03-21 17:09:10 +00:00
|
|
|
|
|
|
|
#this is for Firefox when outside the LAN...it works, but I don't know how to implement it
|
|
|
|
#without breaking the normal flow for inside the LAN (above)
|
|
|
|
#ComicImage = "http://" + str(mylar.HTTP_HOST) + ":" + str(mylar.HTTP_PORT) + "/cache/" + str(comicid) + ".jpg"
|
|
|
|
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.info('Sucessfully retrieved cover for ' + comic['ComicName'])
|
2012-12-27 15:04:03 +00:00
|
|
|
#if the comic cover local is checked, save a cover.jpg to the series folder.
|
2013-01-04 03:12:58 +00:00
|
|
|
if mylar.COMIC_COVER_LOCAL:
|
2013-08-19 06:14:47 +00:00
|
|
|
comiclocal = os.path.join(comlocation,'cover.jpg')
|
2013-01-04 03:12:58 +00:00
|
|
|
shutil.copy(ComicImage,comiclocal)
|
2012-10-16 08:16:29 +00:00
|
|
|
except IOError as e:
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.error('Unable to save cover locally at this time.')
|
2012-10-16 08:16:29 +00:00
|
|
|
|
2013-05-26 03:18:29 +00:00
|
|
|
if oldcomversion is None:
|
|
|
|
if comic['ComicVersion'].isdigit():
|
|
|
|
comicVol = "v" + comic['ComicVersion']
|
|
|
|
else:
|
|
|
|
comicVol = None
|
2013-03-11 17:25:45 +00:00
|
|
|
else:
|
2013-05-26 03:18:29 +00:00
|
|
|
comicVol = oldcomversion
|
2012-10-16 08:16:29 +00:00
|
|
|
|
2013-05-15 09:04:26 +00:00
|
|
|
#for description ...
|
|
|
|
#Cdesc = helpers.cleanhtml(comic['ComicDescription'])
|
|
|
|
#cdes_find = Cdesc.find("Collected")
|
|
|
|
#cdes_removed = Cdesc[:cdes_find]
|
|
|
|
#print cdes_removed
|
|
|
|
|
2012-09-13 15:27:34 +00:00
|
|
|
controlValueDict = {"ComicID": comicid}
|
|
|
|
newValueDict = {"ComicName": comic['ComicName'],
|
|
|
|
"ComicSortName": sortname,
|
2013-03-12 16:13:43 +00:00
|
|
|
"ComicYear": SeriesYear,
|
2012-10-16 08:16:29 +00:00
|
|
|
"ComicImage": ComicImage,
|
2012-09-13 15:27:34 +00:00
|
|
|
"Total": comicIssues,
|
2013-03-11 17:25:45 +00:00
|
|
|
"ComicVersion": comicVol,
|
2012-09-13 15:27:34 +00:00
|
|
|
"ComicLocation": comlocation,
|
|
|
|
"ComicPublisher": comic['ComicPublisher'],
|
2013-05-15 09:04:26 +00:00
|
|
|
#"Description": Cdesc.decode('utf-8', 'replace'),
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
"DetailURL": comic['ComicURL'],
|
|
|
|
# "ComicPublished": gcdinfo['resultPublished'],
|
2013-08-04 05:57:21 +00:00
|
|
|
"ComicPublished": "Unknown",
|
2012-09-13 15:27:34 +00:00
|
|
|
"DateAdded": helpers.today(),
|
|
|
|
"Status": "Loading"}
|
|
|
|
|
|
|
|
myDB.upsert("comics", newValueDict, controlValueDict)
|
2012-10-16 08:16:29 +00:00
|
|
|
|
2013-03-21 17:09:10 +00:00
|
|
|
#comicsort here...
|
|
|
|
#run the re-sortorder here in order to properly display the page
|
|
|
|
if pullupd is None:
|
|
|
|
helpers.ComicSort(sequence='update')
|
2013-03-14 08:33:16 +00:00
|
|
|
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
if CV_NoYearGiven == 'no':
|
|
|
|
#if set to 'no' then we haven't pulled down the issues, otherwise we did it already
|
|
|
|
issued = cv.getComic(comicid,'issue')
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.info('Sucessfully retrieved issue details for ' + comic['ComicName'] )
|
2012-09-13 15:27:34 +00:00
|
|
|
n = 0
|
|
|
|
iscnt = int(comicIssues)
|
|
|
|
issid = []
|
|
|
|
issnum = []
|
|
|
|
issname = []
|
|
|
|
issdate = []
|
|
|
|
int_issnum = []
|
|
|
|
#let's start issue #'s at 0 -- thanks to DC for the new 52 reboot! :)
|
|
|
|
latestiss = "0"
|
|
|
|
latestdate = "0000-00-00"
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
firstiss = "10000000"
|
|
|
|
firstdate = "2099-00-00"
|
2012-09-13 15:27:34 +00:00
|
|
|
#print ("total issues:" + str(iscnt))
|
|
|
|
#---removed NEW code here---
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.info('Now adding/updating issues for ' + comic['ComicName'])
|
2012-09-13 15:27:34 +00:00
|
|
|
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
if not mylar.CV_ONLY:
|
|
|
|
#fccnt = int(fc['comiccount'])
|
|
|
|
#logger.info(u"Found " + str(fccnt) + "/" + str(iscnt) + " issues of " + comic['ComicName'] + "...verifying")
|
|
|
|
#fcnew = []
|
|
|
|
if iscnt > 0: #if a series is brand new, it wont have any issues/details yet so skip this part
|
|
|
|
while (n <= iscnt):
|
|
|
|
#---NEW.code
|
|
|
|
try:
|
|
|
|
firstval = issued['issuechoice'][n]
|
2013-02-18 18:50:26 +00:00
|
|
|
except IndexError:
|
2012-09-13 15:27:34 +00:00
|
|
|
break
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
cleanname = helpers.cleanName(firstval['Issue_Name'])
|
|
|
|
issid = str(firstval['Issue_ID'])
|
|
|
|
issnum = str(firstval['Issue_Number'])
|
|
|
|
#print ("issnum: " + str(issnum))
|
|
|
|
issname = cleanname
|
|
|
|
if '.' in str(issnum):
|
|
|
|
issn_st = str(issnum).find('.')
|
|
|
|
issn_b4dec = str(issnum)[:issn_st]
|
2013-02-18 18:50:26 +00:00
|
|
|
#if the length of decimal is only 1 digit, assume it's a tenth
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
dec_is = str(issnum)[issn_st + 1:]
|
|
|
|
if len(dec_is) == 1:
|
|
|
|
dec_nisval = int(dec_is) * 10
|
|
|
|
iss_naftdec = str(dec_nisval)
|
|
|
|
if len(dec_is) == 2:
|
|
|
|
dec_nisval = int(dec_is)
|
|
|
|
iss_naftdec = str(dec_nisval)
|
|
|
|
iss_issue = issn_b4dec + "." + iss_naftdec
|
|
|
|
issis = (int(issn_b4dec) * 1000) + dec_nisval
|
|
|
|
elif 'au' in issnum.lower():
|
|
|
|
print ("au detected")
|
|
|
|
stau = issnum.lower().find('au')
|
|
|
|
issnum_au = issnum[:stau]
|
|
|
|
print ("issnum_au: " + str(issnum_au))
|
|
|
|
#account for Age of Ultron mucked up numbering
|
|
|
|
issis = str(int(issnum_au) * 1000) + 'AU'
|
|
|
|
else: issis = int(issnum) * 1000
|
|
|
|
|
|
|
|
bb = 0
|
|
|
|
while (bb <= iscnt):
|
|
|
|
try:
|
|
|
|
gcdval = gcdinfo['gcdchoice'][bb]
|
|
|
|
#print ("gcdval: " + str(gcdval))
|
|
|
|
except IndexError:
|
|
|
|
#account for gcd variation here
|
|
|
|
if gcdinfo['gcdvariation'] == 'gcd':
|
|
|
|
#logger.fdebug("gcd-variation accounted for.")
|
|
|
|
issdate = '0000-00-00'
|
|
|
|
int_issnum = int ( issis / 1000 )
|
|
|
|
break
|
|
|
|
if 'nn' in str(gcdval['GCDIssue']):
|
|
|
|
#no number detected - GN, TP or the like
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.warn('Non Series detected (Graphic Novel, etc) - cannot proceed at this time.')
|
2013-03-14 08:33:16 +00:00
|
|
|
updater.no_searchresults(comicid)
|
|
|
|
return
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
elif 'au' in gcdval['GCDIssue'].lower():
|
|
|
|
#account for Age of Ultron mucked up numbering - this is in format of 5AU.00
|
|
|
|
gstau = gcdval['GCDIssue'].lower().find('au')
|
|
|
|
gcdis_au = gcdval['GCDIssue'][:gstau]
|
|
|
|
gcdis = str(int(gcdis_au) * 1000) + 'AU'
|
|
|
|
elif '.' in str(gcdval['GCDIssue']):
|
|
|
|
#logger.fdebug("g-issue:" + str(gcdval['GCDIssue']))
|
|
|
|
issst = str(gcdval['GCDIssue']).find('.')
|
|
|
|
#logger.fdebug("issst:" + str(issst))
|
|
|
|
issb4dec = str(gcdval['GCDIssue'])[:issst]
|
|
|
|
#logger.fdebug("issb4dec:" + str(issb4dec))
|
|
|
|
#if the length of decimal is only 1 digit, assume it's a tenth
|
|
|
|
decis = str(gcdval['GCDIssue'])[issst+1:]
|
|
|
|
#logger.fdebug("decis:" + str(decis))
|
|
|
|
if len(decis) == 1:
|
|
|
|
decisval = int(decis) * 10
|
|
|
|
issaftdec = str(decisval)
|
|
|
|
if len(decis) == 2:
|
|
|
|
decisval = int(decis)
|
|
|
|
issaftdec = str(decisval)
|
|
|
|
gcd_issue = issb4dec + "." + issaftdec
|
|
|
|
#logger.fdebug("gcd_issue:" + str(gcd_issue))
|
|
|
|
try:
|
|
|
|
gcdis = (int(issb4dec) * 1000) + decisval
|
|
|
|
except ValueError:
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.error('This has no issue # for me to get - Either a Graphic Novel or one-shot. This feature to allow these will be added in the near future.')
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
updater.no_searchresults(comicid)
|
|
|
|
return
|
2013-03-29 04:02:35 +00:00
|
|
|
else:
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
gcdis = int(str(gcdval['GCDIssue'])) * 1000
|
|
|
|
if gcdis == issis:
|
|
|
|
issdate = str(gcdval['GCDDate'])
|
|
|
|
if str(issis).isdigit():
|
|
|
|
int_issnum = int( gcdis / 1000 )
|
2013-03-29 04:02:35 +00:00
|
|
|
else:
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
if 'au' in issis.lower():
|
|
|
|
int_issnum = str(int(gcdis[:-2]) / 1000) + 'AU'
|
|
|
|
else:
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.error('this has an alpha-numeric in the issue # which I cannot account for. Get on github and log the issue for evilhero.')
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
return
|
|
|
|
#get the latest issue / date using the date.
|
|
|
|
if gcdval['GCDDate'] > latestdate:
|
|
|
|
latestiss = str(issnum)
|
|
|
|
latestdate = str(gcdval['GCDDate'])
|
|
|
|
break
|
|
|
|
#bb = iscnt
|
|
|
|
bb+=1
|
|
|
|
#print("(" + str(n) + ") IssueID: " + str(issid) + " IssueNo: " + str(issnum) + " Date" + str(issdate))
|
|
|
|
#---END.NEW.
|
|
|
|
|
|
|
|
# check if the issue already exists
|
|
|
|
iss_exists = myDB.action('SELECT * from issues WHERE IssueID=?', [issid]).fetchone()
|
|
|
|
|
|
|
|
# Only change the status & add DateAdded if the issue is already in the database
|
|
|
|
if iss_exists is None:
|
|
|
|
newValueDict['DateAdded'] = helpers.today()
|
|
|
|
|
|
|
|
controlValueDict = {"IssueID": issid}
|
|
|
|
newValueDict = {"ComicID": comicid,
|
|
|
|
"ComicName": comic['ComicName'],
|
|
|
|
"IssueName": issname,
|
|
|
|
"Issue_Number": issnum,
|
|
|
|
"IssueDate": issdate,
|
|
|
|
"Int_IssueNumber": int_issnum
|
|
|
|
}
|
|
|
|
if mylar.AUTOWANT_ALL:
|
|
|
|
newValueDict['Status'] = "Wanted"
|
|
|
|
elif issdate > helpers.today() and mylar.AUTOWANT_UPCOMING:
|
|
|
|
newValueDict['Status'] = "Wanted"
|
|
|
|
else:
|
|
|
|
newValueDict['Status'] = "Skipped"
|
2012-09-13 15:27:34 +00:00
|
|
|
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
if iss_exists:
|
|
|
|
#print ("Existing status : " + str(iss_exists['Status']))
|
|
|
|
newValueDict['Status'] = iss_exists['Status']
|
2013-01-24 17:01:27 +00:00
|
|
|
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
try:
|
|
|
|
myDB.upsert("issues", newValueDict, controlValueDict)
|
|
|
|
except sqlite3.InterfaceError, e:
|
|
|
|
#raise sqlite3.InterfaceError(e)
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.error('MAJOR error trying to get issue data, this is most likey a MULTI-VOLUME series and you need to use the custom_exceptions.csv file.')
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
myDB.action("DELETE FROM comics WHERE ComicID=?", [comicid])
|
|
|
|
return
|
|
|
|
n+=1
|
2012-09-13 15:27:34 +00:00
|
|
|
|
|
|
|
# logger.debug(u"Updating comic cache for " + comic['ComicName'])
|
|
|
|
# cache.getThumb(ComicID=issue['issueid'])
|
|
|
|
|
2012-09-18 20:33:09 +00:00
|
|
|
# logger.debug(u"Updating cache for: " + comic['ComicName'])
|
|
|
|
# cache.getThumb(ComicIDcomicid)
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
else:
|
|
|
|
if iscnt > 0: #if a series is brand new, it wont have any issues/details yet so skip this part
|
|
|
|
while (n <= iscnt):
|
|
|
|
#---NEW.code
|
|
|
|
try:
|
|
|
|
firstval = issued['issuechoice'][n]
|
2013-07-10 01:45:10 +00:00
|
|
|
#print firstval
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
except IndexError:
|
|
|
|
break
|
|
|
|
cleanname = helpers.cleanName(firstval['Issue_Name'])
|
|
|
|
issid = str(firstval['Issue_ID'])
|
2013-04-11 16:49:19 +00:00
|
|
|
issnum = firstval['Issue_Number']
|
2013-07-10 01:45:10 +00:00
|
|
|
#print ("issnum: " + str(issnum))
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
issname = cleanname
|
|
|
|
issdate = str(firstval['Issue_Date'])
|
2013-04-11 16:49:19 +00:00
|
|
|
if issnum.isdigit():
|
2013-07-01 05:19:15 +00:00
|
|
|
int_issnum = int( issnum ) * 1000
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
else:
|
2013-07-01 05:19:15 +00:00
|
|
|
if 'a.i.' in issnum.lower(): issnum = re.sub('\.', '', issnum)
|
2013-07-10 01:45:10 +00:00
|
|
|
#print str(issnum)
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
if 'au' in issnum.lower():
|
2013-07-01 05:19:15 +00:00
|
|
|
int_issnum = (int(issnum[:-2]) * 1000) + ord('a') + ord('u')
|
2013-07-31 06:34:07 +00:00
|
|
|
# elif 'ai' in issnum.lower():
|
|
|
|
# int_issnum = (int(issnum[:-2]) * 1000) + ord('a') + ord('i')
|
|
|
|
# print "ai:" + str(int_issnum)
|
2013-04-11 16:49:19 +00:00
|
|
|
elif u'\xbd' in issnum:
|
|
|
|
issnum = .5
|
2013-07-01 05:19:15 +00:00
|
|
|
int_issnum = int(issnum) * 1000
|
2013-08-07 06:27:12 +00:00
|
|
|
elif u'\xbc' in issnum:
|
|
|
|
issnum = .25
|
|
|
|
int_issnum = int(issnum) * 1000
|
|
|
|
elif u'\xbe' in issnum:
|
|
|
|
issnum = .75
|
|
|
|
int_issnum = int(issnum) * 1000
|
2013-09-18 04:49:24 +00:00
|
|
|
elif u'\u221e' in issnum:
|
|
|
|
#issnum = utf-8 will encode the infinity symbol without any help
|
|
|
|
int_issnum = 9999999999 * 1000 # set 9999999999 for integer value of issue
|
2013-04-22 18:00:47 +00:00
|
|
|
elif '.' in issnum or ',' in issnum:
|
|
|
|
if ',' in issnum: issnum = re.sub(',','.', issnum)
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
issst = str(issnum).find('.')
|
|
|
|
#logger.fdebug("issst:" + str(issst))
|
|
|
|
issb4dec = str(issnum)[:issst]
|
|
|
|
#logger.fdebug("issb4dec:" + str(issb4dec))
|
|
|
|
#if the length of decimal is only 1 digit, assume it's a tenth
|
|
|
|
decis = str(issnum)[issst+1:]
|
|
|
|
#logger.fdebug("decis:" + str(decis))
|
|
|
|
if len(decis) == 1:
|
|
|
|
decisval = int(decis) * 10
|
|
|
|
issaftdec = str(decisval)
|
|
|
|
if len(decis) == 2:
|
|
|
|
decisval = int(decis)
|
|
|
|
issaftdec = str(decisval)
|
|
|
|
try:
|
2013-07-01 05:19:15 +00:00
|
|
|
# int_issnum = str(issnum)
|
2013-07-31 06:34:07 +00:00
|
|
|
int_issnum = (int(issb4dec) * 1000) + (int(issaftdec) * 10)
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
except ValueError:
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.error('This has no issue # for me to get - Either a Graphic Novel or one-shot.')
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
updater.no_searchresults(comicid)
|
|
|
|
return
|
|
|
|
else:
|
2013-04-10 02:28:27 +00:00
|
|
|
try:
|
|
|
|
x = float(issnum)
|
|
|
|
#validity check
|
|
|
|
if x < 0:
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.info('I have encountered a negative issue #: ' + str(issnum) + '. Trying to accomodate.')
|
|
|
|
logger.fdebug('value of x is : ' + str(x))
|
2013-07-01 05:19:15 +00:00
|
|
|
int_issnum = (int(x)*1000) - 1
|
2013-04-10 02:28:27 +00:00
|
|
|
else: raise ValueError
|
|
|
|
except ValueError, e:
|
2013-07-31 06:34:07 +00:00
|
|
|
x = 0
|
2013-07-31 14:41:43 +00:00
|
|
|
tstord = None
|
|
|
|
issno = None
|
2013-09-05 02:36:41 +00:00
|
|
|
invchk = "false"
|
2013-07-31 06:34:07 +00:00
|
|
|
while (x < len(issnum)):
|
|
|
|
if issnum[x].isalpha():
|
|
|
|
#take first occurance of alpha in string and carry it through
|
2013-07-31 14:41:43 +00:00
|
|
|
tstord = issnum[x:].rstrip()
|
|
|
|
issno = issnum[:x].rstrip()
|
2013-09-05 02:36:41 +00:00
|
|
|
try:
|
|
|
|
isschk = float(issno)
|
|
|
|
except ValueError, e:
|
|
|
|
logger.fdebug('invalid numeric for issue - cannot be found. Ignoring.')
|
|
|
|
issno = None
|
|
|
|
tstord = None
|
|
|
|
invchk = "true"
|
2013-07-31 06:34:07 +00:00
|
|
|
break
|
|
|
|
x+=1
|
|
|
|
if tstord is not None and issno is not None:
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.fdebug('tstord: ' + str(tstord))
|
2013-07-31 06:34:07 +00:00
|
|
|
a = 0
|
|
|
|
ordtot = 0
|
|
|
|
while (a < len(tstord)):
|
|
|
|
ordtot += ord(tstord[a].lower()) #lower-case the letters for simplicty
|
|
|
|
a+=1
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.fdebug('issno: ' + str(issno))
|
2013-07-31 06:34:07 +00:00
|
|
|
int_issnum = (int(issno) * 1000) + ordtot
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.fdebug('intissnum : ' + str(int_issnum))
|
2013-09-05 02:36:41 +00:00
|
|
|
elif invchk == "true":
|
|
|
|
logger.fdebug('this does not have an issue # that I can parse properly.')
|
|
|
|
return
|
2013-07-31 06:34:07 +00:00
|
|
|
else:
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.error(str(issnum) + ' this has an alpha-numeric in the issue # which I cannot account for.')
|
2013-07-31 06:34:07 +00:00
|
|
|
return
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
#get the latest issue / date using the date.
|
|
|
|
if firstval['Issue_Date'] > latestdate:
|
2013-04-11 16:49:19 +00:00
|
|
|
latestiss = issnum
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
latestdate = str(firstval['Issue_Date'])
|
|
|
|
if firstval['Issue_Date'] < firstdate:
|
2013-04-11 16:49:19 +00:00
|
|
|
firstiss = issnum
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
firstdate = str(firstval['Issue_Date'])
|
|
|
|
# check if the issue already exists
|
|
|
|
iss_exists = myDB.action('SELECT * from issues WHERE IssueID=?', [issid]).fetchone()
|
|
|
|
|
|
|
|
# Only change the status & add DateAdded if the issue is already in the database
|
|
|
|
if iss_exists is None:
|
|
|
|
newValueDict['DateAdded'] = helpers.today()
|
|
|
|
|
|
|
|
controlValueDict = {"IssueID": issid}
|
|
|
|
newValueDict = {"ComicID": comicid,
|
|
|
|
"ComicName": comic['ComicName'],
|
|
|
|
"IssueName": issname,
|
|
|
|
"Issue_Number": issnum,
|
|
|
|
"IssueDate": issdate,
|
|
|
|
"Int_IssueNumber": int_issnum
|
|
|
|
}
|
2013-05-15 09:04:26 +00:00
|
|
|
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
if iss_exists:
|
2013-07-10 01:45:10 +00:00
|
|
|
#print ("Existing status : " + str(iss_exists['Status']))
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
newValueDict['Status'] = iss_exists['Status']
|
2013-05-15 09:04:26 +00:00
|
|
|
else:
|
2013-07-10 01:45:10 +00:00
|
|
|
#print "issue doesn't exist in db."
|
2013-05-15 09:04:26 +00:00
|
|
|
if mylar.AUTOWANT_ALL:
|
|
|
|
newValueDict['Status'] = "Wanted"
|
|
|
|
elif issdate > helpers.today() and mylar.AUTOWANT_UPCOMING:
|
|
|
|
newValueDict['Status'] = "Wanted"
|
|
|
|
else:
|
|
|
|
newValueDict['Status'] = "Skipped"
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
|
|
|
|
try:
|
|
|
|
myDB.upsert("issues", newValueDict, controlValueDict)
|
|
|
|
except sqlite3.InterfaceError, e:
|
|
|
|
#raise sqlite3.InterfaceError(e)
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.error('Something went wrong - I cannot add the issue information into my DB.')
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
myDB.action("DELETE FROM comics WHERE ComicID=?", [comicid])
|
|
|
|
return
|
|
|
|
n+=1
|
|
|
|
|
|
|
|
#figure publish dates here...
|
|
|
|
styear = str(SeriesYear)
|
|
|
|
#if SeriesYear == '0000':
|
|
|
|
# styear = firstdate[:4]
|
|
|
|
if firstdate[5:7] == '00':
|
|
|
|
stmonth = "?"
|
|
|
|
else:
|
|
|
|
stmonth = helpers.fullmonth(firstdate[5:7])
|
|
|
|
ltyear = re.sub('/s','', latestdate[:4])
|
|
|
|
if latestdate[5:7] == '00':
|
|
|
|
ltmonth = "?"
|
|
|
|
else:
|
|
|
|
ltmonth = helpers.fullmonth(latestdate[5:7])
|
|
|
|
|
|
|
|
#try to determine if it's an 'actively' published comic from above dates
|
2013-07-01 05:19:15 +00:00
|
|
|
#threshold is if it's within a month (<55 days) let's assume it's recent.
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
c_date = datetime.date(int(latestdate[:4]),int(latestdate[5:7]),1)
|
|
|
|
n_date = datetime.date.today()
|
|
|
|
recentchk = (n_date - c_date).days
|
|
|
|
#print ("recentchk: " + str(recentchk))
|
2013-05-20 15:45:36 +00:00
|
|
|
if recentchk <= 55:
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
lastpubdate = 'Present'
|
|
|
|
else:
|
|
|
|
lastpubdate = str(ltmonth) + ' ' + str(ltyear)
|
2012-09-18 20:33:09 +00:00
|
|
|
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
publishfigure = str(stmonth) + ' ' + str(styear) + ' - ' + str(lastpubdate)
|
2012-09-13 15:27:34 +00:00
|
|
|
|
|
|
|
controlValueStat = {"ComicID": comicid}
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
|
2012-09-13 15:27:34 +00:00
|
|
|
newValueStat = {"Status": "Active",
|
|
|
|
"LatestIssue": latestiss,
|
2012-10-07 16:20:06 +00:00
|
|
|
"LatestDate": latestdate,
|
FIX:(#304) Index out of range on recheck, FIX:(#303) Comicvine link updated on details page, FIX:(#302) Query rate (Search Delay) Added as a configuration option, FIX:(#300) Version number error on searching when no version number, FIX:(#297) Manual Rename of Files working, FIX:(#294) 'AU' issue problems should be resolved now, FIX:(#290) V#(year) and Vol#(year) added to filechecking, IMP: ComicVine data use only now as a hidden option (cv_only = 1 in config.ini), IMP: added as options for file naming, IMP: Rough drafting of Annuals (annuals_on = 1 in config.ini), Other fixes..
2013-04-06 09:43:18 +00:00
|
|
|
"ComicPublished": publishfigure,
|
2012-10-07 16:20:06 +00:00
|
|
|
"LastUpdated": helpers.now()
|
2012-09-13 15:27:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
myDB.upsert("comics", newValueStat, controlValueStat)
|
2013-01-23 08:22:22 +00:00
|
|
|
|
2013-04-10 16:45:56 +00:00
|
|
|
if mylar.CVINFO or (mylar.CV_ONLY and mylar.CVINFO):
|
|
|
|
if not os.path.exists(os.path.join(comlocation,"cvinfo")) or mylar.CV_ONETIMER:
|
|
|
|
with open(os.path.join(comlocation,"cvinfo"),"w") as text_file:
|
|
|
|
text_file.write(str(comic['ComicURL']))
|
2012-09-13 15:27:34 +00:00
|
|
|
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.info('Updating complete for: ' + comic['ComicName'])
|
2013-02-09 03:34:02 +00:00
|
|
|
|
|
|
|
#move the files...if imported is not empty (meaning it's not from the mass importer.)
|
|
|
|
if imported is None or imported == 'None':
|
|
|
|
pass
|
|
|
|
else:
|
|
|
|
if mylar.IMP_MOVE:
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.info('Mass import - Move files')
|
2013-02-13 01:27:24 +00:00
|
|
|
moveit.movefiles(comicid,comlocation,ogcname)
|
2013-02-17 10:31:18 +00:00
|
|
|
else:
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.info('Mass import - Moving not Enabled. Setting Archived Status for import.')
|
2013-02-17 10:31:18 +00:00
|
|
|
moveit.archivefiles(comicid,ogcname)
|
2013-02-06 19:55:23 +00:00
|
|
|
|
|
|
|
#check for existing files...
|
|
|
|
updater.forceRescan(comicid)
|
|
|
|
|
2013-01-02 16:57:28 +00:00
|
|
|
if pullupd is None:
|
2013-01-18 09:18:31 +00:00
|
|
|
# lets' check the pullist for anything at this time as well since we're here.
|
|
|
|
# do this for only Present comics....
|
2013-04-22 03:11:12 +00:00
|
|
|
if mylar.AUTOWANT_UPCOMING and lastpubdate == 'Present': #and 'Present' in gcdinfo['resultPublished']:
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.fdebug('latestissue: #' + str(latestiss))
|
2013-05-15 09:04:26 +00:00
|
|
|
chkstats = myDB.action("SELECT * FROM issues WHERE ComicID=? AND Issue_Number=?", [comicid,str(latestiss)]).fetchone()
|
2013-07-30 04:57:37 +00:00
|
|
|
logger.fdebug(chkstats['Status'])
|
2013-05-15 09:04:26 +00:00
|
|
|
if chkstats['Status'] == 'Skipped' or chkstats['Status'] == 'Wanted' or chkstats['Status'] == 'Snatched':
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.info('Checking this week pullist for new issues of ' + comic['ComicName'])
|
2013-05-15 09:04:26 +00:00
|
|
|
updater.newpullcheck(comic['ComicName'], comicid)
|
|
|
|
|
|
|
|
#here we grab issues that have been marked as wanted above...
|
2012-09-13 15:27:34 +00:00
|
|
|
|
2013-05-15 09:04:26 +00:00
|
|
|
results = myDB.select("SELECT * FROM issues where ComicID=? AND Status='Wanted'", [comicid])
|
|
|
|
if results:
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.info('Attempting to grab wanted issues for : ' + comic['ComicName'])
|
2013-05-15 09:04:26 +00:00
|
|
|
|
|
|
|
for result in results:
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.fdebug('Searching for : ' + str(result['Issue_Number']))
|
|
|
|
logger.fdebug('Status of : ' + str(result['Status']))
|
2013-05-15 09:04:26 +00:00
|
|
|
search.searchforissue(result['IssueID'])
|
2013-08-19 06:14:47 +00:00
|
|
|
else: logger.info('No issues marked as wanted for ' + comic['ComicName'])
|
2012-09-13 15:27:34 +00:00
|
|
|
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.info('Finished grabbing what I could.')
|
2013-05-15 09:04:26 +00:00
|
|
|
else:
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.info('Already have the latest issue : #' + str(latestiss))
|
2012-10-16 08:16:29 +00:00
|
|
|
|
|
|
|
|
2013-03-26 07:50:00 +00:00
|
|
|
def GCDimport(gcomicid, pullupd=None,imported=None,ogcname=None):
|
2012-10-16 08:16:29 +00:00
|
|
|
# this is for importing via GCD only and not using CV.
|
|
|
|
# used when volume spanning is discovered for a Comic (and can't be added using CV).
|
|
|
|
# Issue Counts are wrong (and can't be added).
|
|
|
|
|
|
|
|
# because Comicvine ComicID and GCD ComicID could be identical at some random point, let's distinguish.
|
|
|
|
# CV = comicid, GCD = gcomicid :) (ie. CV=2740, GCD=G3719)
|
|
|
|
|
|
|
|
gcdcomicid = gcomicid
|
|
|
|
myDB = db.DBConnection()
|
|
|
|
|
|
|
|
# We need the current minimal info in the database instantly
|
|
|
|
# so we don't throw a 500 error when we redirect to the artistPage
|
|
|
|
|
|
|
|
controlValueDict = {"ComicID": gcdcomicid}
|
|
|
|
|
2013-01-07 19:26:10 +00:00
|
|
|
comic = myDB.action('SELECT ComicName, ComicYear, Total, ComicPublished, ComicImage, ComicLocation, ComicPublisher FROM comics WHERE ComicID=?', [gcomicid]).fetchone()
|
2012-10-16 08:16:29 +00:00
|
|
|
ComicName = comic[0]
|
|
|
|
ComicYear = comic[1]
|
|
|
|
ComicIssues = comic[2]
|
2013-01-18 09:18:31 +00:00
|
|
|
ComicPublished = comic[3]
|
2012-10-16 08:16:29 +00:00
|
|
|
comlocation = comic[5]
|
2013-01-07 19:26:10 +00:00
|
|
|
ComicPublisher = comic[6]
|
2012-10-16 08:16:29 +00:00
|
|
|
#ComicImage = comic[4]
|
|
|
|
#print ("Comic:" + str(ComicName))
|
|
|
|
|
|
|
|
newValueDict = {"Status": "Loading"}
|
|
|
|
myDB.upsert("comics", newValueDict, controlValueDict)
|
|
|
|
|
|
|
|
# we need to lookup the info for the requested ComicID in full now
|
|
|
|
#comic = cv.getComic(comicid,'comic')
|
|
|
|
|
|
|
|
if not comic:
|
2013-08-19 06:14:47 +00:00
|
|
|
logger.warn('Error fetching comic. ID for : ' + gcdcomicid)
|
2012-10-16 08:16:29 +00:00
|
|
|
if dbcomic is None:
|
|
|
|
newValueDict = {"ComicName": "Fetch failed, try refreshing. (%s)" % (gcdcomicid),
|
|
|
|
"Status": "Active"}
|
|
|
|
else:
|
|
|
|
newValueDict = {"Status": "Active"}
|
|
|
|
myDB.upsert("comics", newValueDict, controlValueDict)
|
|
|
|
return
|
|
|
|
|
2013-03-26 07:50:00 +00:00
|
|
|
#run the re-sortorder here in order to properly display the page
|
|
|
|
if pullupd is None:
|
|
|
|
helpers.ComicSort(comicorder=mylar.COMICSORT, imported=gcomicid)
|
|
|
|
|
2012-10-16 08:16:29 +00:00
|
|
|
if ComicName.startswith('The '):
|
|
|
|
sortname = ComicName[4:]
|
|
|
|
else:
|
|
|
|
sortname = ComicName
|
|
|
|
|
|
|
|
|
|
|
|
logger.info(u"Now adding/updating: " + ComicName)
|
|
|
|
#--Now that we know ComicName, let's try some scraping
|
|
|
|
#--Start
|
|
|
|
# gcd will return issue details (most importantly publishing date)
|
|
|
|
comicid = gcomicid[1:]
|
|
|
|
resultURL = "/series/" + str(comicid) + "/"
|
|
|
|
gcdinfo=parseit.GCDdetails(comseries=None, resultURL=resultURL, vari_loop=0, ComicID=gcdcomicid, TotalIssues=ComicIssues, issvariation=None, resultPublished=None)
|
|
|
|
if gcdinfo == "No Match":
|
|
|
|
logger.warn("No matching result found for " + ComicName + " (" + ComicYear + ")" )
|
|
|
|
updater.no_searchresults(gcomicid)
|
|
|
|
nomatch = "true"
|
|
|
|
return nomatch
|
|
|
|
logger.info(u"Sucessfully retrieved details for " + ComicName )
|
|
|
|
# print ("Series Published" + parseit.resultPublished)
|
|
|
|
#--End
|
|
|
|
|
|
|
|
ComicImage = gcdinfo['ComicImage']
|
|
|
|
|
|
|
|
#comic book location on machine
|
|
|
|
# setup default location here
|
|
|
|
if comlocation is None:
|
2013-03-08 01:36:36 +00:00
|
|
|
# let's remove the non-standard characters here.
|
2013-03-26 07:50:00 +00:00
|
|
|
u_comicnm = ComicName
|
2013-03-08 01:36:36 +00:00
|
|
|
u_comicname = u_comicnm.encode('ascii', 'ignore').strip()
|
|
|
|
if ':' in u_comicname or '/' in u_comicname or ',' in u_comicname:
|
|
|
|
comicdir = u_comicname
|
2012-10-20 16:14:32 +00:00
|
|
|
if ':' in comicdir:
|
|
|
|
comicdir = comicdir.replace(':','')
|
|
|
|
if '/' in comicdir:
|
|
|
|
comicdir = comicdir.replace('/','-')
|
2012-10-31 16:03:15 +00:00
|
|
|
if ',' in comicdir:
|
|
|
|
comicdir = comicdir.replace(',','')
|
2013-03-08 01:36:36 +00:00
|
|
|
else: comicdir = u_comicname
|
2013-01-07 19:26:10 +00:00
|
|
|
|
|
|
|
series = comicdir
|
|
|
|
publisher = ComicPublisher
|
|
|
|
year = ComicYear
|
|
|
|
|
|
|
|
#do work to generate folder path
|
|
|
|
values = {'$Series': series,
|
2013-01-14 05:12:59 +00:00
|
|
|
'$Publisher': publisher,
|
|
|
|
'$Year': year,
|
|
|
|
'$series': series.lower(),
|
|
|
|
'$publisher': publisher.lower(),
|
|
|
|
'$Volume': year
|
2013-01-07 19:26:10 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if mylar.FOLDER_FORMAT == '':
|
|
|
|
comlocation = mylar.DESTINATION_DIR + "/" + comicdir + " (" + comic['ComicYear'] + ")"
|
|
|
|
else:
|
|
|
|
comlocation = mylar.DESTINATION_DIR + "/" + helpers.replace_all(mylar.FOLDER_FORMAT, values)
|
|
|
|
|
|
|
|
#comlocation = mylar.DESTINATION_DIR + "/" + comicdir + " (" + ComicYear + ")"
|
2012-10-16 08:16:29 +00:00
|
|
|
if mylar.DESTINATION_DIR == "":
|
|
|
|
logger.error(u"There is no general directory specified - please specify in Config/Post-Processing.")
|
|
|
|
return
|
|
|
|
if mylar.REPLACE_SPACES:
|
|
|
|
#mylar.REPLACE_CHAR ...determines what to replace spaces with underscore or dot
|
|
|
|
comlocation = comlocation.replace(' ', mylar.REPLACE_CHAR)
|
2013-03-26 07:50:00 +00:00
|
|
|
|
|
|
|
#if it doesn't exist - create it (otherwise will bugger up later on)
|
2013-08-19 06:14:47 +00:00
|
|
|
if os.path.isdir(comlocation):
|
|
|
|
logger.info(u"Directory (" + comlocation + ") already exists! Continuing...")
|
2013-03-26 07:50:00 +00:00
|
|
|
else:
|
|
|
|
#print ("Directory doesn't exist!")
|
2013-04-22 03:43:57 +00:00
|
|
|
#try:
|
|
|
|
# os.makedirs(str(comlocation))
|
|
|
|
# logger.info(u"Directory successfully created at: " + str(comlocation))
|
|
|
|
#except OSError:
|
|
|
|
# logger.error(u"Could not create comicdir : " + str(comlocation))
|
|
|
|
filechecker.validateAndCreateDirectory(comlocation, True)
|
2012-10-16 08:16:29 +00:00
|
|
|
|
|
|
|
comicIssues = gcdinfo['totalissues']
|
|
|
|
|
|
|
|
#let's download the image...
|
|
|
|
if os.path.exists(mylar.CACHE_DIR):pass
|
|
|
|
else:
|
|
|
|
#let's make the dir.
|
|
|
|
try:
|
|
|
|
os.makedirs(str(mylar.CACHE_DIR))
|
|
|
|
logger.info(u"Cache Directory successfully created at: " + str(mylar.CACHE_DIR))
|
|
|
|
|
2012-10-17 15:57:51 +00:00
|
|
|
except OSError:
|
|
|
|
logger.error(u"Could not create cache dir : " + str(mylar.CACHE_DIR))
|
2012-10-16 08:16:29 +00:00
|
|
|
|
2013-03-26 07:50:00 +00:00
|
|
|
coverfile = os.path.join(mylar.CACHE_DIR, str(gcomicid) + ".jpg")
|
2012-10-16 08:16:29 +00:00
|
|
|
|
2013-03-26 07:50:00 +00:00
|
|
|
#try:
|
2012-10-16 08:16:29 +00:00
|
|
|
urllib.urlretrieve(str(ComicImage), str(coverfile))
|
|
|
|
try:
|
|
|
|
with open(str(coverfile)) as f:
|
2013-03-26 07:50:00 +00:00
|
|
|
ComicImage = os.path.join('cache',str(gcomicid) + ".jpg")
|
|
|
|
|
|
|
|
#this is for Firefox when outside the LAN...it works, but I don't know how to implement it
|
|
|
|
#without breaking the normal flow for inside the LAN (above)
|
|
|
|
#ComicImage = "http://" + str(mylar.HTTP_HOST) + ":" + str(mylar.HTTP_PORT) + "/cache/" + str(comi$
|
|
|
|
|
2013-03-08 01:36:36 +00:00
|
|
|
logger.info(u"Sucessfully retrieved cover for " + ComicName)
|
2013-03-26 07:50:00 +00:00
|
|
|
#if the comic cover local is checked, save a cover.jpg to the series folder.
|
|
|
|
if mylar.COMIC_COVER_LOCAL:
|
2013-08-19 06:14:47 +00:00
|
|
|
comiclocal = os.path.join(comlocation + "/cover.jpg")
|
2013-03-26 07:50:00 +00:00
|
|
|
shutil.copy(ComicImage,comiclocal)
|
2012-10-16 08:16:29 +00:00
|
|
|
except IOError as e:
|
|
|
|
logger.error(u"Unable to save cover locally at this time.")
|
|
|
|
|
2013-03-26 07:50:00 +00:00
|
|
|
#if comic['ComicVersion'].isdigit():
|
|
|
|
# comicVol = "v" + comic['ComicVersion']
|
|
|
|
#else:
|
|
|
|
# comicVol = None
|
|
|
|
|
|
|
|
|
2012-10-16 08:16:29 +00:00
|
|
|
controlValueDict = {"ComicID": gcomicid}
|
|
|
|
newValueDict = {"ComicName": ComicName,
|
|
|
|
"ComicSortName": sortname,
|
|
|
|
"ComicYear": ComicYear,
|
|
|
|
"Total": comicIssues,
|
|
|
|
"ComicLocation": comlocation,
|
2013-03-26 07:50:00 +00:00
|
|
|
#"ComicVersion": comicVol,
|
2012-10-16 08:16:29 +00:00
|
|
|
"ComicImage": ComicImage,
|
|
|
|
#"ComicPublisher": comic['ComicPublisher'],
|
|
|
|
#"ComicPublished": comicPublished,
|
|
|
|
"DateAdded": helpers.today(),
|
|
|
|
"Status": "Loading"}
|
|
|
|
|
|
|
|
myDB.upsert("comics", newValueDict, controlValueDict)
|
|
|
|
|
2013-03-26 07:50:00 +00:00
|
|
|
#comicsort here...
|
|
|
|
#run the re-sortorder here in order to properly display the page
|
|
|
|
if pullupd is None:
|
|
|
|
helpers.ComicSort(sequence='update')
|
|
|
|
|
2012-10-16 08:16:29 +00:00
|
|
|
logger.info(u"Sucessfully retrieved issue details for " + ComicName )
|
|
|
|
n = 0
|
|
|
|
iscnt = int(comicIssues)
|
|
|
|
issnum = []
|
|
|
|
issname = []
|
|
|
|
issdate = []
|
|
|
|
int_issnum = []
|
|
|
|
#let's start issue #'s at 0 -- thanks to DC for the new 52 reboot! :)
|
|
|
|
latestiss = "0"
|
|
|
|
latestdate = "0000-00-00"
|
|
|
|
#print ("total issues:" + str(iscnt))
|
|
|
|
#---removed NEW code here---
|
|
|
|
logger.info(u"Now adding/updating issues for " + ComicName)
|
|
|
|
bb = 0
|
|
|
|
while (bb <= iscnt):
|
|
|
|
#---NEW.code
|
|
|
|
try:
|
|
|
|
gcdval = gcdinfo['gcdchoice'][bb]
|
2012-10-16 15:53:46 +00:00
|
|
|
#print ("gcdval: " + str(gcdval))
|
2012-10-16 08:16:29 +00:00
|
|
|
except IndexError:
|
|
|
|
#account for gcd variation here
|
|
|
|
if gcdinfo['gcdvariation'] == 'gcd':
|
|
|
|
#print ("gcd-variation accounted for.")
|
|
|
|
issdate = '0000-00-00'
|
|
|
|
int_issnum = int ( issis / 1000 )
|
|
|
|
break
|
|
|
|
if 'nn' in str(gcdval['GCDIssue']):
|
|
|
|
#no number detected - GN, TP or the like
|
|
|
|
logger.warn(u"Non Series detected (Graphic Novel, etc) - cannot proceed at this time.")
|
|
|
|
updater.no_searchresults(comicid)
|
|
|
|
return
|
|
|
|
elif '.' in str(gcdval['GCDIssue']):
|
|
|
|
issst = str(gcdval['GCDIssue']).find('.')
|
|
|
|
issb4dec = str(gcdval['GCDIssue'])[:issst]
|
|
|
|
#if the length of decimal is only 1 digit, assume it's a tenth
|
|
|
|
decis = str(gcdval['GCDIssue'])[issst+1:]
|
|
|
|
if len(decis) == 1:
|
|
|
|
decisval = int(decis) * 10
|
|
|
|
issaftdec = str(decisval)
|
|
|
|
if len(decis) == 2:
|
|
|
|
decisval = int(decis)
|
|
|
|
issaftdec = str(decisval)
|
|
|
|
if int(issaftdec) == 0: issaftdec = "00"
|
|
|
|
gcd_issue = issb4dec + "." + issaftdec
|
|
|
|
gcdis = (int(issb4dec) * 1000) + decisval
|
|
|
|
else:
|
|
|
|
gcdis = int(str(gcdval['GCDIssue'])) * 1000
|
|
|
|
gcd_issue = str(gcdval['GCDIssue'])
|
|
|
|
#get the latest issue / date using the date.
|
|
|
|
int_issnum = int( gcdis / 1000 )
|
|
|
|
issdate = str(gcdval['GCDDate'])
|
|
|
|
issid = "G" + str(gcdval['IssueID'])
|
|
|
|
if gcdval['GCDDate'] > latestdate:
|
|
|
|
latestiss = str(gcd_issue)
|
|
|
|
latestdate = str(gcdval['GCDDate'])
|
|
|
|
#print("(" + str(bb) + ") IssueID: " + str(issid) + " IssueNo: " + str(gcd_issue) + " Date" + str(issdate) )
|
|
|
|
#---END.NEW.
|
|
|
|
|
|
|
|
# check if the issue already exists
|
2012-10-31 16:03:15 +00:00
|
|
|
iss_exists = myDB.action('SELECT * from issues WHERE IssueID=?', [issid]).fetchone()
|
2012-10-16 08:16:29 +00:00
|
|
|
|
|
|
|
|
|
|
|
# Only change the status & add DateAdded if the issue is not already in the database
|
2012-10-31 16:03:15 +00:00
|
|
|
if iss_exists is None:
|
2012-10-16 08:16:29 +00:00
|
|
|
newValueDict['DateAdded'] = helpers.today()
|
|
|
|
|
|
|
|
#adjust for inconsistencies in GCD date format - some dates have ? which borks up things.
|
|
|
|
if "?" in str(issdate):
|
|
|
|
issdate = "0000-00-00"
|
|
|
|
|
|
|
|
controlValueDict = {"IssueID": issid}
|
|
|
|
newValueDict = {"ComicID": gcomicid,
|
|
|
|
"ComicName": ComicName,
|
|
|
|
"Issue_Number": gcd_issue,
|
|
|
|
"IssueDate": issdate,
|
|
|
|
"Int_IssueNumber": int_issnum
|
|
|
|
}
|
|
|
|
|
|
|
|
#print ("issueid:" + str(controlValueDict))
|
|
|
|
#print ("values:" + str(newValueDict))
|
|
|
|
|
|
|
|
if mylar.AUTOWANT_ALL:
|
|
|
|
newValueDict['Status'] = "Wanted"
|
2013-01-01 20:32:22 +00:00
|
|
|
elif issdate > helpers.today() and mylar.AUTOWANT_UPCOMING:
|
|
|
|
newValueDict['Status'] = "Wanted"
|
2012-10-16 08:16:29 +00:00
|
|
|
else:
|
|
|
|
newValueDict['Status'] = "Skipped"
|
|
|
|
|
2012-10-21 15:30:26 +00:00
|
|
|
if iss_exists:
|
|
|
|
#print ("Existing status : " + str(iss_exists['Status']))
|
|
|
|
newValueDict['Status'] = iss_exists['Status']
|
|
|
|
|
|
|
|
|
2012-10-16 08:16:29 +00:00
|
|
|
myDB.upsert("issues", newValueDict, controlValueDict)
|
|
|
|
bb+=1
|
|
|
|
|
|
|
|
# logger.debug(u"Updating comic cache for " + ComicName)
|
|
|
|
# cache.getThumb(ComicID=issue['issueid'])
|
|
|
|
|
|
|
|
# logger.debug(u"Updating cache for: " + ComicName)
|
|
|
|
# cache.getThumb(ComicIDcomicid)
|
|
|
|
|
|
|
|
|
|
|
|
controlValueStat = {"ComicID": gcomicid}
|
|
|
|
newValueStat = {"Status": "Active",
|
|
|
|
"LatestIssue": latestiss,
|
|
|
|
"LatestDate": latestdate,
|
|
|
|
"LastUpdated": helpers.now()
|
|
|
|
}
|
|
|
|
|
|
|
|
myDB.upsert("comics", newValueStat, controlValueStat)
|
|
|
|
|
2013-01-23 08:22:22 +00:00
|
|
|
if mylar.CVINFO:
|
|
|
|
if not os.path.exists(comlocation + "/cvinfo"):
|
|
|
|
with open(comlocation + "/cvinfo","w") as text_file:
|
2013-03-08 01:36:36 +00:00
|
|
|
text_file.write("http://www.comicvine.com/volume/49-" + str(comicid))
|
2013-01-23 08:22:22 +00:00
|
|
|
|
2012-10-16 08:16:29 +00:00
|
|
|
logger.info(u"Updating complete for: " + ComicName)
|
|
|
|
|
2013-03-26 07:50:00 +00:00
|
|
|
#move the files...if imported is not empty (meaning it's not from the mass importer.)
|
|
|
|
if imported is None or imported == 'None':
|
|
|
|
pass
|
|
|
|
else:
|
|
|
|
if mylar.IMP_MOVE:
|
|
|
|
logger.info("Mass import - Move files")
|
|
|
|
moveit.movefiles(gcomicid,comlocation,ogcname)
|
|
|
|
else:
|
|
|
|
logger.info("Mass import - Moving not Enabled. Setting Archived Status for import.")
|
|
|
|
moveit.archivefiles(gcomicid,ogcname)
|
|
|
|
|
|
|
|
#check for existing files...
|
|
|
|
updater.forceRescan(gcomicid)
|
|
|
|
|
|
|
|
|
2013-01-02 16:57:28 +00:00
|
|
|
if pullupd is None:
|
2013-01-01 20:09:28 +00:00
|
|
|
# lets' check the pullist for anyting at this time as well since we're here.
|
2013-01-18 09:18:31 +00:00
|
|
|
if mylar.AUTOWANT_UPCOMING and 'Present' in ComicPublished:
|
2013-03-08 01:36:36 +00:00
|
|
|
logger.info(u"Checking this week's pullist for new issues of " + ComicName)
|
2013-01-06 08:51:44 +00:00
|
|
|
updater.newpullcheck(comic['ComicName'], gcomicid)
|
2012-10-16 08:16:29 +00:00
|
|
|
|
2013-01-01 20:09:28 +00:00
|
|
|
#here we grab issues that have been marked as wanted above...
|
2012-10-16 08:16:29 +00:00
|
|
|
|
2013-01-01 20:09:28 +00:00
|
|
|
results = myDB.select("SELECT * FROM issues where ComicID=? AND Status='Wanted'", [gcomicid])
|
|
|
|
if results:
|
|
|
|
logger.info(u"Attempting to grab wanted issues for : " + ComicName)
|
2012-10-16 08:16:29 +00:00
|
|
|
|
2013-01-01 20:09:28 +00:00
|
|
|
for result in results:
|
|
|
|
foundNZB = "none"
|
2013-01-18 09:18:31 +00:00
|
|
|
if (mylar.NZBSU or mylar.DOGNZB or mylar.EXPERIMENTAL or mylar.NEWZNAB or mylar.NZBX) and (mylar.SAB_HOST):
|
2013-01-01 20:09:28 +00:00
|
|
|
foundNZB = search.searchforissue(result['IssueID'])
|
|
|
|
if foundNZB == "yes":
|
|
|
|
updater.foundsearch(result['ComicID'], result['IssueID'])
|
|
|
|
else: logger.info(u"No issues marked as wanted for " + ComicName)
|
2012-10-16 08:16:29 +00:00
|
|
|
|
2013-01-01 20:09:28 +00:00
|
|
|
logger.info(u"Finished grabbing what I could.")
|
2012-10-16 08:16:29 +00:00
|
|
|
|