Cleanup dashboard snatched movies

This commit is contained in:
Ruud committed 2013-03-16 11:53:55 +01:00
1 parent d0fc20ca6e
commit 4fcba70c9a
3 files changed
+45 -33

No files matched your search

+18 -15
View File
@@ -12,6 +12,7 @@ from couchpotato.environment import Env
from sqlalchemy.orm import joinedload_all from sqlalchemy.orm import joinedload_all
from sqlalchemy.sql.expression import or_, asc, not_, desc from sqlalchemy.sql.expression import or_, asc, not_, desc
from string import ascii_lowercase from string import ascii_lowercase
import time
log = CPLog(__name__) log = CPLog(__name__)
@@ -96,32 +97,33 @@ class MoviePlugin(Plugin):
addEvent('movie.list', self.list) addEvent('movie.list', self.list)
addEvent('movie.restatus', self.restatus) addEvent('movie.restatus', self.restatus)
# Clean releases that didn't have activity in the last week
addEvent('app.load', self.cleanReleases) addEvent('app.load', self.cleanReleases)
fireEvent('schedule.interval', 'movie.clean_releases', self.cleanReleases, hours = 4)
def cleanReleases(self): def cleanReleases(self):
prop_name = 'cleaned_releases' log.debug('Removing releases from dashboard')
already_cleaned = Env.prop(prop_name, default = False)
if already_cleaned:
return True
log.info('Removing releases from library movies') now = time.time()
week = 262080
db = get_session()
movies = db.query(Movie).all()
done_status = fireEvent('status.get', 'done', single = True) done_status = fireEvent('status.get', 'done', single = True)
available_status = fireEvent('status.get', 'available', single = True) available_status = fireEvent('status.get', 'available', single = True)
snatched_status = fireEvent('status.get', 'snatched', single = True) snatched_status = fireEvent('status.get', 'snatched', single = True)
for movie in movies: db = get_session()
if movie.status_id == done_status.get('id'):
for rel in movie.releases:
if rel.status_id in [available_status.get('id'), snatched_status.get('id')]:
fireEvent('release.delete', id = rel.id, single = True)
Env.prop(prop_name, True) # get movies last_edit more than a week ago
movies = db.query(Movie) \
.filter(Movie.status_id == done_status.get('id'), Movie.last_edit < (now - week)) \
.all()
#
for movie in movies:
for rel in movie.releases:
if rel.status_id in [available_status.get('id'), snatched_status.get('id')]:
fireEvent('release.delete', id = rel.id, single = True)
def getView(self): def getView(self):
@@ -402,6 +404,7 @@ class MoviePlugin(Plugin):
if force_readd: if force_readd:
m.status_id = status_id if status_id else status_active.get('id') m.status_id = status_id if status_id else status_active.get('id')
m.last_edit = int(time.time())
do_search = True do_search = True
db.commit() db.commit()
+6
View File
@@ -13,6 +13,7 @@ import errno
import os import os
import re import re
import shutil import shutil
import time
import traceback import traceback
log = CPLog(__name__) log = CPLog(__name__)
@@ -275,6 +276,7 @@ class Renamer(Plugin):
for profile_type in movie.profile.types: for profile_type in movie.profile.types:
if profile_type.quality_id == group['meta_data']['quality']['id'] and profile_type.finish: if profile_type.quality_id == group['meta_data']['quality']['id'] and profile_type.finish:
movie.status_id = done_status.get('id') movie.status_id = done_status.get('id')
movie.last_edit = int(time.time())
db.commit() db.commit()
except Exception, e: except Exception, e:
log.error('Failed marking movie finished: %s %s', (e, traceback.format_exc())) log.error('Failed marking movie finished: %s %s', (e, traceback.format_exc()))
@@ -316,8 +318,10 @@ class Renamer(Plugin):
log.debug('Marking release as downloaded') log.debug('Marking release as downloaded')
try: try:
release.status_id = downloaded_status.get('id') release.status_id = downloaded_status.get('id')
release.last_edit = int(time.time())
except Exception, e: except Exception, e:
log.error('Failed marking release as finished: %s %s', (e, traceback.format_exc())) log.error('Failed marking release as finished: %s %s', (e, traceback.format_exc()))
db.commit() db.commit()
# Remove leftover files # Remove leftover files
@@ -556,6 +560,7 @@ class Renamer(Plugin):
if rel.movie.status_id == done_status.get('id'): if rel.movie.status_id == done_status.get('id'):
log.debug('Found a completed movie with a snatched release : %s. Setting release status to ignored...' , default_title) log.debug('Found a completed movie with a snatched release : %s. Setting release status to ignored...' , default_title)
rel.status_id = ignored_status.get('id') rel.status_id = ignored_status.get('id')
rel.last_edit = int(time.time())
db.commit() db.commit()
continue continue
@@ -580,6 +585,7 @@ class Renamer(Plugin):
fireEvent('searcher.try_next_release', movie_id = rel.movie_id) fireEvent('searcher.try_next_release', movie_id = rel.movie_id)
else: else:
rel.status_id = failed_status.get('id') rel.status_id = failed_status.get('id')
rel.last_edit = int(time.time())
db.commit() db.commit()
elif item['status'] == 'completed': elif item['status'] == 'completed':
log.info('Download of %s completed!', item['name']) log.info('Download of %s completed!', item['name'])
+21 -18
View File
@@ -209,6 +209,7 @@ class Searcher(Plugin):
db.add(rls) db.add(rls)
else: else:
[db.delete(old_info) for old_info in rls.info] [db.delete(old_info) for old_info in rls.info]
rls.last_edit = int(time.time())
db.commit() db.commit()
@@ -301,26 +302,28 @@ class Searcher(Plugin):
log.info(snatch_message) log.info(snatch_message)
fireEvent('movie.snatched', message = snatch_message, data = rls.to_dict()) fireEvent('movie.snatched', message = snatch_message, data = rls.to_dict())
# If renamer isn't used, mark movie done # If renamer isn't used, mark movie done
if not Env.setting('enabled', 'renamer'): if not Env.setting('enabled', 'renamer'):
active_status = fireEvent('status.get', 'active', single = True) active_status = fireEvent('status.get', 'active', single = True)
done_status = fireEvent('status.get', 'done', single = True) done_status = fireEvent('status.get', 'done', single = True)
try: try:
if movie['status_id'] == active_status.get('id'): if movie['status_id'] == active_status.get('id'):
for profile_type in movie['profile']['types']: for profile_type in movie['profile']['types']:
if rls and profile_type['quality_id'] == rls.quality.id and profile_type['finish']: if profile_type['quality_id'] == rls.quality.id and profile_type['finish']:
log.info('Renamer disabled, marking movie as finished: %s', log_movie) log.info('Renamer disabled, marking movie as finished: %s', log_movie)
# Mark release done # Mark release done
rls.status_id = done_status.get('id') rls.status_id = done_status.get('id')
db.commit() rls.last_edit = int(time.time())
db.commit()
# Mark movie done # Mark movie done
mvie = db.query(Movie).filter_by(id = movie['id']).first() mvie = db.query(Movie).filter_by(id = movie['id']).first()
mvie.status_id = done_status.get('id') mvie.status_id = done_status.get('id')
db.commit() mvie.last_edit = int(time.time())
except: db.commit()
log.error('Failed marking movie finished, renamer disabled: %s', traceback.format_exc()) except:
log.error('Failed marking movie finished, renamer disabled: %s', traceback.format_exc())
except: except:
log.error('Failed marking movie finished: %s', traceback.format_exc()) log.error('Failed marking movie finished: %s', traceback.format_exc())