Tag and untag dashboard media
This commit is contained in:
1 parent
5797348bb3
commit
6f766aae8c
6 files changed
+65
-1
No files matched your search
@@ -82,6 +82,8 @@ class MediaPlugin(MediaBase):
|
|||||||
addEvent('media.list', self.list)
|
addEvent('media.list', self.list)
|
||||||
addEvent('media.delete', self.delete)
|
addEvent('media.delete', self.delete)
|
||||||
addEvent('media.restatus', self.restatus)
|
addEvent('media.restatus', self.restatus)
|
||||||
|
addEvent('media.tag', self.tag)
|
||||||
|
addEvent('media.untag', self.unTag)
|
||||||
|
|
||||||
def refresh(self, id = '', **kwargs):
|
def refresh(self, id = '', **kwargs):
|
||||||
handlers = []
|
handlers = []
|
||||||
@@ -469,3 +471,41 @@ class MediaPlugin(MediaBase):
|
|||||||
return True
|
return True
|
||||||
except:
|
except:
|
||||||
log.error('Failed restatus: %s', traceback.format_exc())
|
log.error('Failed restatus: %s', traceback.format_exc())
|
||||||
|
|
||||||
|
def tag(self, media_id, tag):
|
||||||
|
|
||||||
|
try:
|
||||||
|
db = get_db()
|
||||||
|
m = db.get('id', media_id)
|
||||||
|
|
||||||
|
tags = m.get('tags') or []
|
||||||
|
if tag not in tags:
|
||||||
|
tags.append(tag)
|
||||||
|
m['tags'] = tags
|
||||||
|
db.update(m)
|
||||||
|
|
||||||
|
return True
|
||||||
|
except:
|
||||||
|
log.error('Failed tagging: %s', traceback.format_exc())
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
|
def unTag(self, media_id, tag):
|
||||||
|
|
||||||
|
try:
|
||||||
|
db = get_db()
|
||||||
|
m = db.get('id', media_id)
|
||||||
|
|
||||||
|
tags = m.get('tags') or []
|
||||||
|
if tag in tags:
|
||||||
|
new_tags = list(set(tags))
|
||||||
|
new_tags.remove(tag)
|
||||||
|
|
||||||
|
m['tags'] = new_tags
|
||||||
|
db.update(m)
|
||||||
|
|
||||||
|
return True
|
||||||
|
except:
|
||||||
|
log.error('Failed untagging: %s', traceback.format_exc())
|
||||||
|
|
||||||
|
return False
|
||||||
@@ -149,6 +149,7 @@ class MovieBase(MovieTypeBase):
|
|||||||
m['profile_id'] = params.get('profile_id', default_profile.get('id'))
|
m['profile_id'] = params.get('profile_id', default_profile.get('id'))
|
||||||
m['category_id'] = cat_id if cat_id is not None and len(cat_id) > 0 else (m.get('category_id') or None)
|
m['category_id'] = cat_id if cat_id is not None and len(cat_id) > 0 else (m.get('category_id') or None)
|
||||||
m['last_edit'] = int(time.time())
|
m['last_edit'] = int(time.time())
|
||||||
|
m['tags'] = []
|
||||||
|
|
||||||
do_search = True
|
do_search = True
|
||||||
db.update(m)
|
db.update(m)
|
||||||
|
|||||||
@@ -131,6 +131,7 @@ class MovieSearcher(SearcherBase, MovieTypeBase):
|
|||||||
outside_eta_results = 0
|
outside_eta_results = 0
|
||||||
alway_search = self.conf('always_search')
|
alway_search = self.conf('always_search')
|
||||||
ignore_eta = manual
|
ignore_eta = manual
|
||||||
|
total_result_count = 0
|
||||||
|
|
||||||
default_title = getTitle(movie)
|
default_title = getTitle(movie)
|
||||||
if not default_title:
|
if not default_title:
|
||||||
@@ -199,6 +200,7 @@ class MovieSearcher(SearcherBase, MovieTypeBase):
|
|||||||
|
|
||||||
results = fireEvent('searcher.search', search_protocols, movie, quality, single = True) or []
|
results = fireEvent('searcher.search', search_protocols, movie, quality, single = True) or []
|
||||||
results_count = len(results)
|
results_count = len(results)
|
||||||
|
total_result_count += results_count
|
||||||
if results_count == 0:
|
if results_count == 0:
|
||||||
log.debug('Nothing found for %s in %s', (default_title, quality['label']))
|
log.debug('Nothing found for %s in %s', (default_title, quality['label']))
|
||||||
|
|
||||||
@@ -235,6 +237,9 @@ class MovieSearcher(SearcherBase, MovieTypeBase):
|
|||||||
if self.shuttingDown() or ret:
|
if self.shuttingDown() or ret:
|
||||||
break
|
break
|
||||||
|
|
||||||
|
if total_result_count > 0:
|
||||||
|
fireEvent('media.tag', movie['_id'], 'recent', single = True)
|
||||||
|
|
||||||
if len(too_early_to_search) > 0:
|
if len(too_early_to_search) > 0:
|
||||||
log.info2('Too early to search for %s, %s', (too_early_to_search, default_title))
|
log.info2('Too early to search for %s, %s', (too_early_to_search, default_title))
|
||||||
|
|
||||||
|
|||||||
@@ -104,6 +104,8 @@ class Release(Plugin):
|
|||||||
elif rel['status'] in ['snatched', 'downloaded']:
|
elif rel['status'] in ['snatched', 'downloaded']:
|
||||||
self.updateStatus(rel['_id'], status = 'ignore')
|
self.updateStatus(rel['_id'], status = 'ignore')
|
||||||
|
|
||||||
|
fireEvent('media.untag', media.get('_id'), 'recent', single = True)
|
||||||
|
|
||||||
def add(self, group, update_info = True, update_id = None):
|
def add(self, group, update_info = True, update_id = None):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -346,6 +348,8 @@ class Release(Plugin):
|
|||||||
mdia['last_edit'] = int(time.time())
|
mdia['last_edit'] = int(time.time())
|
||||||
db.update(mdia)
|
db.update(mdia)
|
||||||
|
|
||||||
|
fireEvent('media.tag', media['_id'], 'recent', single = True)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
# Assume release downloaded
|
# Assume release downloaded
|
||||||
|
|||||||
@@ -457,9 +457,15 @@ class Renamer(Plugin):
|
|||||||
mdia['last_edit'] = int(time.time())
|
mdia['last_edit'] = int(time.time())
|
||||||
db.update(mdia)
|
db.update(mdia)
|
||||||
|
|
||||||
|
# List movie on dashboard
|
||||||
|
fireEvent('media.tag', media['_id'], 'recent', single = True)
|
||||||
|
|
||||||
except:
|
except:
|
||||||
log.error('Failed marking movie finished: %s', (traceback.format_exc()))
|
log.error('Failed marking movie finished: %s', (traceback.format_exc()))
|
||||||
|
|
||||||
|
# Mark media for dashboard
|
||||||
|
mark_as_recent = False
|
||||||
|
|
||||||
# Go over current movie releases
|
# Go over current movie releases
|
||||||
for release in fireEvent('release.for_media', media['_id'], single = True):
|
for release in fireEvent('release.for_media', media['_id'], single = True):
|
||||||
|
|
||||||
@@ -506,14 +512,21 @@ class Renamer(Plugin):
|
|||||||
# Set the release to downloaded
|
# Set the release to downloaded
|
||||||
fireEvent('release.update_status', release['_id'], status = 'downloaded', single = True)
|
fireEvent('release.update_status', release['_id'], status = 'downloaded', single = True)
|
||||||
group['release_download'] = release_download
|
group['release_download'] = release_download
|
||||||
|
mark_as_recent = True
|
||||||
elif release_download['status'] == 'seeding':
|
elif release_download['status'] == 'seeding':
|
||||||
# Set the release to seeding
|
# Set the release to seeding
|
||||||
fireEvent('release.update_status', release['_id'], status = 'seeding', single = True)
|
fireEvent('release.update_status', release['_id'], status = 'seeding', single = True)
|
||||||
|
mark_as_recent = True
|
||||||
|
|
||||||
elif release.get('identifier') == group['meta_data']['quality']['identifier']:
|
elif release.get('identifier') == group['meta_data']['quality']['identifier']:
|
||||||
# Set the release to downloaded
|
# Set the release to downloaded
|
||||||
fireEvent('release.update_status', release['_id'], status = 'downloaded', single = True)
|
fireEvent('release.update_status', release['_id'], status = 'downloaded', single = True)
|
||||||
group['release_download'] = release_download
|
group['release_download'] = release_download
|
||||||
|
mark_as_recent = True
|
||||||
|
|
||||||
|
# Mark media for dashboard
|
||||||
|
if mark_as_recent:
|
||||||
|
fireEvent('media.tag', group['media'].get('_id'), 'recent', single = True)
|
||||||
|
|
||||||
# Remove leftover files
|
# Remove leftover files
|
||||||
if not remove_leftovers: # Don't remove anything
|
if not remove_leftovers: # Don't remove anything
|
||||||
|
|||||||
@@ -54,7 +54,8 @@ Page.Home = new Class({
|
|||||||
})
|
})
|
||||||
),
|
),
|
||||||
'filter': {
|
'filter': {
|
||||||
'release_status': 'snatched,missing,available,downloaded'
|
'release_status': 'snatched,missing,available,downloaded,done,seeding',
|
||||||
|
'with_tags': 'recent'
|
||||||
},
|
},
|
||||||
'limit': null,
|
'limit': null,
|
||||||
'onLoaded': function(){
|
'onLoaded': function(){
|
||||||
|
|||||||
Reference in new issue
Block a user