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 ) :
logger . info ( comiclist [ 0 ] [ 1 ] + u " is already in the database. " )
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 :
logger . warn ( " Error fetching comic. ID for : " + comicid )
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 ' ]
logger . info ( u " Now adding/updating: " + comic [ ' ComicName ' ] )
#--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 "
logger . info ( u " There was an error when trying to add " + comic [ ' ComicName ' ] + " ( " + comic [ ' ComicYear ' ] + " ) " )
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
2012-09-13 15:27:34 +00:00
logger . info ( u " Sucessfully retrieved details for " + comic [ ' ComicName ' ] )
# 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
logger . info ( " Uh-oh. I can ' t find a Series Year for this series. I ' m going to try analyzing deeper. " )
SeriesYear = cv . getComic ( comicid , ' firstissue ' , comic [ ' FirstIssueID ' ] )
if SeriesYear == ' 0000 ' :
logger . info ( " Ok - I couldn ' t find a Series Year at all. Loading in the issue data now and will figure out the Series Year. " )
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'])
logger . fdebug ( " annualyear: " + str ( annualyear ) )
sresults = mb . findComic ( annComicName , mode , issue = None )
2013-07-10 01:45:10 +00:00
logger . fdebug ( " sresults : " + str ( sresults ) )
2013-07-01 05:19:15 +00:00
type = ' comic '
if len ( sresults ) == 1 :
logger . fdebug ( " 1 result " )
if len ( sresults ) > 0 :
logger . fdebug ( " there are " + str ( len ( sresults ) ) + " results. " )
num_res = 0
while ( num_res < len ( sresults ) ) :
sr = sresults [ num_res ]
if ' paperback ' in sr [ ' description ' ] or ' collecting ' in sr [ ' description ' ] :
logger . fdebug ( " tradeback/collected edition detected - skipping " + str ( sr [ ' comicid ' ] ) )
else :
if comicid in sr [ ' description ' ] :
logger . fdebug ( str ( comicid ) + " found. Assuming it ' s part of the greater collection. " )
issueid = sr [ ' comicid ' ]
logger . fdebug ( str ( issueid ) + " added to series list as an Annual " )
issued = cv . getComic ( issueid , ' issue ' )
if len ( issued ) is None or len ( issued ) == 0 :
logger . fdebug ( " Couldn ' t find any annual information... " )
pass
else :
n = 0
logger . fdebug ( " there are " + str ( sr [ ' issues ' ] ) + " annuals in this series. " )
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 ,
" Status " : " Skipped " }
myDB . upsert ( " annuals " , newVals , newCtrl )
n + = 1
num_res + = 1
elif len ( sresults ) == 0 or len ( sresults ) is None :
logger . fdebug ( " no results, removing the year from the agenda and re-querying. " )
sresults = mb . findComic ( annComicName , mode , issue = None )
if len ( sresults ) == 1 :
sr = sresults [ 0 ]
logger . fdebug ( str ( comicid ) + " found. Assuming it ' s part of the greater collection. " )
else :
resultset = 0
else :
logger . fdebug ( " returning results to screen - more than one possibility " )
for sr in sresults :
if annualyear < sr [ ' comicyear ' ] :
logger . fdebug ( str ( annualyear ) + " is less than " + str ( sr [ ' comicyear ' ] ) )
if int ( sr [ ' issues ' ] ) > ( 2013 - int ( sr [ ' comicyear ' ] ) ) :
logger . fdebug ( " issue count is wrong " )
#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-03-12 16:13:43 +00:00
comlocation = mylar . DESTINATION_DIR + " / " + comicdir + " ( " + SeriesYear + " ) "
2012-10-30 10:43:01 +00:00
else :
comlocation = mylar . DESTINATION_DIR + " / " + helpers . replace_all ( mylar . FOLDER_FORMAT , values )
#comlocation = mylar.DESTINATION_DIR + "/" + comicdir + " (" + comic['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-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)
if os . path . isdir ( str ( comlocation ) ) :
logger . info ( u " Directory ( " + str ( comlocation ) + " ) already exists! Continuing... " )
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 ) )
logger . info ( u " Cache Directory successfully created at: " + str ( mylar . CACHE_DIR ) )
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-01-17 16:22:51 +00:00
ComicImage = os . path . join ( ' cache ' , str ( comicid ) + " .jpg " )
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-03-08 01:36:36 +00:00
logger . info ( u " 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 :
comiclocal = os . path . join ( str ( comlocation ) + " /cover.jpg " )
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-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'],
" 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 ' )
2012-09-13 15:27:34 +00:00
logger . info ( u " Sucessfully retrieved issue details for " + comic [ ' ComicName ' ] )
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---
2012-10-16 08:16:29 +00:00
logger . info ( u " 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
logger . warn ( u " 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 :
logger . error ( " This has no issue # ' s for me to get - Either a Graphic Novel or one-shot. This feature to allow these will be added in the near future. " )
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 :
logger . error ( " this has an alpha-numeric in the issue # which I cannot account for. Get on github and log the issue for evilhero. " )
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)
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. " )
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 ' )
elif ' ai ' in issnum . lower ( ) :
int_issnum = ( int ( issnum [ : - 2 ] ) * 1000 ) + ord ( ' a ' ) + ord ( ' i ' )
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-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)
int_issnum = ( int ( issb4dec ) * 1000 ) + ( int ( issaftdec ) * 100 )
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 :
logger . error ( " This has no issue # ' s for me to get - Either a Graphic Novel or one-shot. " )
updater . no_searchresults ( comicid )
return
else :
2013-04-10 02:28:27 +00:00
try :
x = float ( issnum )
#validity check
if x < 0 :
logger . info ( " I ' ve encountered a negative issue #: " + str ( issnum ) + " . Trying to accomodate. " )
2013-07-01 05:19:15 +00:00
logger . fdebug ( " value of x is : " + str ( x ) )
int_issnum = ( int ( x ) * 1000 ) - 1
2013-04-10 02:28:27 +00:00
else : raise ValueError
except ValueError , e :
2013-07-01 05:19:15 +00:00
logger . error ( str ( issnum ) + " this has an alpha-numeric in the issue # which I cannot account for. " )
2013-04-10 02:28:27 +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)
logger . error ( " Something went wrong - I can ' t add the issue information into my DB. " )
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
logger . info ( u " 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 :
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 :
logger . info ( " Mass import - Moving not Enabled. Setting Archived Status for import. " )
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-05-15 09:04:26 +00:00
print ( " latestissue: # " + str ( latestiss ) )
chkstats = myDB . action ( " SELECT * FROM issues WHERE ComicID=? AND Issue_Number=? " , [ comicid , str ( latestiss ) ] ) . fetchone ( )
print chkstats [ ' Status ' ]
if chkstats [ ' Status ' ] == ' Skipped ' or chkstats [ ' Status ' ] == ' Wanted ' or chkstats [ ' Status ' ] == ' Snatched ' :
logger . info ( u " Checking this week ' s pullist for new issues of " + comic [ ' ComicName ' ] )
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 :
logger . info ( u " Attempting to grab wanted issues for : " + comic [ ' ComicName ' ] )
for result in results :
2013-07-01 05:19:15 +00:00
print " Searching for : " + str ( result [ ' Issue_Number ' ] )
print " Status of : " + str ( result [ ' Status ' ] )
2013-05-15 09:04:26 +00:00
search . searchforissue ( result [ ' IssueID ' ] )
else : logger . info ( u " No issues marked as wanted for " + comic [ ' ComicName ' ] )
2012-09-13 15:27:34 +00:00
2013-05-15 09:04:26 +00:00
logger . info ( u " Finished grabbing what I could. " )
else :
logger . info ( u " 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 :
logger . warn ( " Error fetching comic. ID for : " + gcdcomicid )
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)
if os . path . isdir ( str ( comlocation ) ) :
logger . info ( u " Directory ( " + str ( comlocation ) + " ) already exists! Continuing... " )
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 :
comiclocal = os . path . join ( str ( comlocation ) + " /cover.jpg " )
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