@ -395,14 +395,8 @@ class Renamer(Plugin):
break
break
elif release . status_id is snatched_status . get ( ' id ' ) :
elif release . status_id is snatched_status . get ( ' id ' ) :
if release . quality . id is group [ ' meta_data ' ] [ ' quality ' ] [ ' id ' ] :
if release . quality . id is group [ ' meta_data ' ] [ ' quality ' ] [ ' id ' ] :
log . debug ( ' Marking release as downloaded ' )
# Set the release to downloaded
try :
fireEvent ( ' release.update_status ' , release . id , status = downloaded_status , single = True )
release . status_id = downloaded_status . get ( ' id ' )
release . last_edit = int ( time . time ( ) )
except Exception , e :
log . error ( ' Failed marking release as finished: %s %s ' , ( e , traceback . format_exc ( ) ) )
db . commit ( )
# Remove leftover files
# Remove leftover files
if not remove_leftovers : # Don't remove anything
if not remove_leftovers : # Don't remove anything
@ -476,11 +470,18 @@ class Renamer(Plugin):
log . error ( ' Failed removing %s : %s ' , ( release . identifier , traceback . format_exc ( ) ) )
log . error ( ' Failed removing %s : %s ' , ( release . identifier , traceback . format_exc ( ) ) )
if group [ ' dirname ' ] and group [ ' parentdir ' ] and not self . downloadIsTorrent ( download_info ) :
if group [ ' dirname ' ] and group [ ' parentdir ' ] and not self . downloadIsTorrent ( download_info ) :
if movie_folder :
# Delete the movie folder
group_folder = movie_folder
else :
# Delete the first empty subfolder in the tree relative to the 'from' folder
group_folder = os . path . join ( self . conf ( ' from ' ) , os . path . relpath ( group [ ' parentdir ' ] , self . conf ( ' from ' ) ) . split ( os . path . sep ) [ 0 ] )
try :
try :
log . info ( ' Deleting folder: %s ' , group [ ' parentdir ' ] )
log . info ( ' Deleting folder: %s ' , group_folder )
self . deleteEmptyFolder ( group [ ' parentdir ' ] )
self . deleteEmptyFolder ( group_folder )
except :
except :
log . error ( ' Failed removing %s : %s ' , ( group [ ' parentdir ' ] , traceback . format_exc ( ) ) )
log . error ( ' Failed removing %s : %s ' , ( group_folder , traceback . format_exc ( ) ) )
# Notify on download, search for trailers etc
# Notify on download, search for trailers etc
download_message = ' Downloaded %s ( %s ) ' % ( movie_title , replacements [ ' quality ' ] )
download_message = ' Downloaded %s ( %s ) ' % ( movie_title , replacements [ ' quality ' ] )
@ -656,12 +657,13 @@ Remove it if you want it to be renamed (again, or at least let it try again)
self . checking_snatched = True
self . checking_snatched = True
snatched_status , ignored_status , failed_status , done_status , seeding_status , downloaded_status = \
snatched_status , ignored_status , failed_status , done_status , seeding_status , downloaded_status , missing_status = \
fireEvent ( ' status.get ' , [ ' snatched ' , ' ignored ' , ' failed ' , ' done ' , ' seeding ' , ' downloaded ' ] , single = True )
fireEvent ( ' status.get ' , [ ' snatched ' , ' ignored ' , ' failed ' , ' done ' , ' seeding ' , ' downloaded ' , ' missing ' ] , single = True )
db = get_session ( )
db = get_session ( )
rels = db . query ( Release ) . filter_by ( status_id = snatched_status . get ( ' id ' ) ) . all ( )
rels = db . query ( Release ) . filter_by ( status_id = snatched_status . get ( ' id ' ) ) . all ( )
rels . extend ( db . query ( Release ) . filter_by ( status_id = seeding_status . get ( ' id ' ) ) . all ( ) )
rels . extend ( db . query ( Release ) . filter_by ( status_id = seeding_status . get ( ' id ' ) ) . all ( ) )
rels . extend ( db . query ( Release ) . filter_by ( status_id = missing_status . get ( ' id ' ) ) . all ( ) )
scan_items = [ ]
scan_items = [ ]
scan_required = False
scan_required = False
@ -699,39 +701,36 @@ Remove it if you want it to be renamed (again, or at least let it try again)
log . debug ( ' Found %s : %s , time to go: %s ' , ( item [ ' name ' ] , item [ ' status ' ] . upper ( ) , timeleft ) )
log . debug ( ' Found %s : %s , time to go: %s ' , ( item [ ' name ' ] , item [ ' status ' ] . upper ( ) , timeleft ) )
if item [ ' status ' ] == ' busy ' :
if item [ ' status ' ] == ' busy ' :
# Set the release to snatched if it was missing before
fireEvent ( ' release.update_status ' , rel . id , status = snatched_status , single = True )
# Tag folder if it is in the 'from' folder and it will not be processed because it is still downloading
# Tag folder if it is in the 'from' folder and it will not be processed because it is still downloading
if item [ ' folder ' ] and self . conf ( ' from ' ) in item [ ' folder ' ] :
if item [ ' folder ' ] and self . conf ( ' from ' ) in item [ ' folder ' ] :
self . tagDir ( item [ ' folder ' ] , ' downloading ' )
self . tagDir ( item [ ' folder ' ] , ' downloading ' )
elif item [ ' status ' ] == ' seeding ' :
elif item [ ' status ' ] == ' seeding ' :
# Set the release to seeding
fireEvent ( ' release.update_status ' , rel . id , status = seeding_status , single = True )
#If linking setting is enabled, process release
#If linking setting is enabled, process release
if self . conf ( ' file_action ' ) != ' move ' and not rel . movie . status_id == done _status. get ( ' id ' ) and self . statusInfoComplete ( item ) :
if self . conf ( ' file_action ' ) != ' move ' and not rel . status_id == seeding _status. get ( ' id ' ) and self . statusInfoComplete ( item ) :
log . info ( ' Download of %s completed! It is now being processed while leaving the original files alone for seeding. Current ratio: %s . ' , ( item [ ' name ' ] , item [ ' seed_ratio ' ] ) )
log . info ( ' Download of %s completed! It is now being processed while leaving the original files alone for seeding. Current ratio: %s . ' , ( item [ ' name ' ] , item [ ' seed_ratio ' ] ) )
# Remove the downloading tag
# Remove the downloading tag
self . untagDir ( item [ ' folder ' ] , ' downloading ' )
self . untagDir ( item [ ' folder ' ] , ' downloading ' )
rel . status_id = seeding_status . get ( ' id ' )
rel . last_edit = int ( time . time ( ) )
db . commit ( )
# Scan and set the torrent to paused if required
# Scan and set the torrent to paused if required
item . update ( { ' pause ' : True , ' scan ' : True , ' process_complete ' : False } )
item . update ( { ' pause ' : True , ' scan ' : True , ' process_complete ' : False } )
scan_items . append ( item )
scan_items . append ( item )
else :
else :
if rel . status_id != seeding_status . get ( ' id ' ) :
rel . status_id = seeding_status . get ( ' id ' )
rel . last_edit = int ( time . time ( ) )
db . commit ( )
#let it seed
#let it seed
log . debug ( ' %s is seeding with ratio: %s ' , ( item [ ' name ' ] , item [ ' seed_ratio ' ] ) )
log . debug ( ' %s is seeding with ratio: %s ' , ( item [ ' name ' ] , item [ ' seed_ratio ' ] ) )
elif item [ ' status ' ] == ' failed ' :
elif item [ ' status ' ] == ' failed ' :
# Set the release to failed
fireEvent ( ' release.update_status ' , rel . id , status = failed_status , single = True )
fireEvent ( ' download.remove_failed ' , item , single = True )
fireEvent ( ' download.remove_failed ' , item , single = True )
rel . status_id = failed_status . get ( ' id ' )
rel . last_edit = int ( time . time ( ) )
db . commit ( )
if self . conf ( ' next_on_failed ' ) :
if self . conf ( ' next_on_failed ' ) :
fireEvent ( ' movie.searcher.try_next_release ' , media_id = rel . media_id )
fireEvent ( ' movie.searcher.try_next_release ' , media_id = rel . media_id )
@ -743,24 +742,23 @@ Remove it if you want it to be renamed (again, or at least let it try again)
if rel . status_id == seeding_status . get ( ' id ' ) :
if rel . status_id == seeding_status . get ( ' id ' ) :
if rel . movie . status_id == done_status . get ( ' id ' ) :
if rel . movie . status_id == done_status . get ( ' id ' ) :
# Set the release to done as the movie has already been renamed
# Set the release to done as the movie has already been renamed
rel . status_id = downloaded_status . get ( ' id ' )
fireEvent ( ' release.update_status ' , rel . id , status = downloaded_status , single = True )
rel . last_edit = int ( time . time ( ) )
db . commit ( )
# Allow the downloader to clean-up
# Allow the downloader to clean-up
item . update ( { ' pause ' : False , ' scan ' : False , ' process_complete ' : True } )
item . update ( { ' pause ' : False , ' scan ' : False , ' process_complete ' : True } )
scan_items . append ( item )
scan_items . append ( item )
else :
else :
# Set the release to snatched so that the renamer can process the release as if it was never seeding
# Set the release to snatched so that the renamer can process the release as if it was never seeding
rel . status_id = snatched_status . get ( ' id ' )
fireEvent ( ' release.update_status ' , rel . id , status = snatched_status , single = True )
rel . last_edit = int ( time . time ( ) )
db . commit ( )
# Scan and Allow the downloader to clean-up
# Scan and Allow the downloader to clean-up
item . update ( { ' pause ' : False , ' scan ' : True , ' process_complete ' : True } )
item . update ( { ' pause ' : False , ' scan ' : True , ' process_complete ' : True } )
scan_items . append ( item )
scan_items . append ( item )
else :
else :
# Set the release to snatched if it was missing before
fireEvent ( ' release.update_status ' , rel . id , status = snatched_status , single = True )
# Remove the downloading tag
# Remove the downloading tag
self . untagDir ( item [ ' folder ' ] , ' downloading ' )
self . untagDir ( item [ ' folder ' ] , ' downloading ' )
@ -776,6 +774,14 @@ Remove it if you want it to be renamed (again, or at least let it try again)
if not found :
if not found :
log . info ( ' %s not found in downloaders ' , nzbname )
log . info ( ' %s not found in downloaders ' , nzbname )
#Check status if already missing and for how long, if > 1 week, set to ignored else to missing
if rel . status_id == missing_status . get ( ' id ' ) :
if rel . last_edit < int ( time . time ( ) ) - 7 * 24 * 60 * 60 :
fireEvent ( ' release.update_status ' , rel . id , status = ignored_status , single = True )
else :
# Set the release to missing
fireEvent ( ' release.update_status ' , rel . id , status = missing_status , single = True )
except :
except :
log . error ( ' Failed checking for release in downloader: %s ' , traceback . format_exc ( ) )
log . error ( ' Failed checking for release in downloader: %s ' , traceback . format_exc ( ) )