def _search_url(self): date = self.session['last_url_search'] if date and date > datetime.utcnow() - DELTA_URL_SEARCH: return False if self.category not in NETFLIX_CATEGORIES: return False netflix_ = Settings.get_settings('netflix') if not netflix_['username'] or not netflix_['password']: return False netflix = get_netflix_object(netflix_['username'], netflix_['password']) if not netflix: return False res = netflix.get_info(self.name, self.category) if res: Media.add_url(url=res['url'], name=res['title'], category=self.category) logger.info('found "%s" on netflix (%s)', res['title'], res['url']) if self.category == 'movies': MSearch.remove({'_id': self._id}, safe=True) logger.info('removed %s search "%s": found url %s', self.category, self.name, res['url']) return True MSearch.update({'_id': self._id}, {'$set': {'session.last_url_search': datetime.utcnow()}}, safe=True) return False
def _search_file(self): if self.mode == 'ever': return date = self.session['last_file_search'] if date and date > datetime.utcnow() - DELTA_FILE_SEARCH: return media_ = Media.search(**self) files = [] for res in media_: files.extend(res.get('files', [])) if media_ and files: if self.mode == 'inc': self._add_next('episode') src = self.get('src') if src: Media.update({'_id': {'$in': [m['_id'] for m in media_]}}, {'$set': {'src': src}}, safe=True) MSearch.remove({'_id': self._id}, safe=True) logger.info('removed %s search "%s": found files %s', self.category, self._get_query(), files) return True MSearch.update({'_id': self._id}, {'$set': {'session.last_file_search': datetime.utcnow()}}, safe=True)
def _is_obsolete(self): if self.mode in ('inc', 'ever'): return date = self.session['last_result'] or self.session['first_search'] if date and date < datetime.utcnow() - DELTA_OBSOLETE: MSearch.remove({'_id': self._id}, safe=True) logger.info('removed search "%s" (no result for %d days)', self._get_query(), DELTA_OBSOLETE.days) return True
def remove_media(): data = request.json ids = data.get('ids') if not ids: return jsonify(error='missing ids') if not isinstance(ids, (tuple, list)): ids = [ids] spec = {'_id': {'$in': [ObjectId(i) for i in ids]}} type = data.get('type') if type == 'media': for id in ids: map(remove_file, Media.get_bases(id)) Media.remove(spec) elif type == 'search': Search.remove(spec) elif type == 'similar': SimilarSearch.remove(spec) else: return jsonify(error='unknown type %s' % type) return jsonify(result=True)