Пример #1
0
    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
Пример #2
0
    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)
Пример #3
0
 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
Пример #4
0
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)