Cleanup dashboard snatched movies
This commit is contained in:
1 parent
d0fc20ca6e
commit
4fcba70c9a
3 files changed
+45
-33
No files matched your search
@@ -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()
|
||||||
|
|||||||
@@ -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'])
|
||||||
|
|||||||
@@ -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())
|
||||||
|
|||||||
Reference in new issue
Block a user