Пример #1
0
def get_media(request, *args, **kwargs):
    """
    :param request:
    :return: list of media (movies and/or series)
    """
    category_id = request.GET.get('category_id') if request.GET.get('category_id') else None
    start_movies = request.GET.get('start_movies') if request.GET.get('start_movies') else ''
    start_series = request.GET.get('start_series') if request.GET.get('start_series') else ''
    length = int(request.GET.get('length')) if request.GET.get('length') else None

    category = Category.objects.get(pk=category_id)
    if not length:
        length = category.previews_length
    response = []
    if category_id and length and (start_movies != '' or start_series != ''):
        start_movies = int(start_movies)
        start_series = int(start_series)
        cache_key = '%s-%d-%d-%d' % (category_id, start_movies, start_series, length)
        media = cache.get(cache_key)
        if not media:
            movies_length, series_length = get_movies_series_share(length)
            limit_movies = start_movies + movies_length
            limit_series = start_series + series_length
            media = list(Movie.objects.raw_query({'categories': {'$elemMatch': {'id': ObjectId(category.id)}}, 'visible': True}).order_by('-id')[start_movies:limit_movies])
            series = list(Series.objects.raw_query({'categories': {'$elemMatch': {'id': ObjectId(category.id)}}, 'visible': True}).order_by('-id')[start_series:limit_series])
            media.extend(series)
            cache.set(cache_key, media, 8 * 3600)
        if request.GET.get('shuffle'):
            shuffle(media)
        response = [item.to_dict() for item in media]
    return HttpResponse(
        json.dumps(response),
        'content-type: text/json'
    )
Пример #2
0
def get_media(request, *args, **kwargs):
    """
    :param request:
    :return: list of media (movies and/or series)
    """
    category_id = request.GET.get('category_id') if request.GET.get('category_id') else None
    start_movies = request.GET.get('start_movies') if request.GET.get('start_movies') else ''
    start_series = request.GET.get('start_series') if request.GET.get('start_series') else ''
    length = int(request.GET.get('length')) if request.GET.get('length') else None

    category = Category.objects.get(pk=category_id)
    if not length:
        length = category.previews_length
    response = []
    if category_id and length and (start_movies != '' or start_series != ''):
        start_movies = int(start_movies)
        start_series = int(start_series)
        cache_key = '%s-%d-%d-%d' % (category_id, start_movies, start_series, length)
        media = cache.get(cache_key)
        if not media:
            movies_length, series_length = get_movies_series_share(length)
            limit_movies = start_movies + movies_length
            limit_series = start_series + series_length
            media = list(Movie.objects.raw_query({'categories': {'$elemMatch': {'id': ObjectId(category.id)}}, 'visible': True}).order_by('-id')[start_movies:limit_movies])
            series = list(Series.objects.raw_query({'categories': {'$elemMatch': {'id': ObjectId(category.id)}}, 'visible': True}).order_by('-id')[start_series:limit_series])
            media.extend(series)
            cache.set(cache_key, media, 8 * 3600)
        if request.GET.get('shuffle'):
            shuffle(media)
        response = [item.to_dict() for item in media]
    return HttpResponse(
        json.dumps(response),
        'content-type: text/json'
    )
Пример #3
0
 def grab_items_by_radix(self, terms, use_limit=False):
     total = 10 if use_limit else 10000
     if use_limit:
         limit_movies, limit_series = get_movies_series_share(total)
     else:
         limit_movies, limit_series = 10000, 10000
     items = []
     if terms and len(terms) >= 2:
         stripped_terms = ' '.join([term.strip()[:4] for term in terms.split(' ') if term])
         if limit_movies > 0:
             movies = [movie for movie in Movie.objects.raw_query(
                 {'$text': {'$search': stripped_terms}, 'visible': True}
             )[:limit_movies]]
             items.extend(movies)
         if limit_series:
             series = [series for series in Series.objects.raw_query(
                 {'$text': {'$search': stripped_terms}, 'visible': True}
             )[:limit_series]]
             items.extend(series)
     if getattr(settings, 'DEBUG'):
         show_adult = self.request.user.is_authenticated() and self.request.user.profile.get_can_access_adult_content()
     else:
         show_adult = self.request.user.is_authenticated() and self.request.user.can_access_adult_content
     for item in items:
         if type(item).__name__ == "Movie" and item.is_adult:
             if not show_adult:
                 items.remove(item)
     return items
Пример #4
0
 def grab_items_by_radix(self, terms, use_limit=False):
     total = 10 if use_limit else 10000
     if use_limit:
         limit_movies, limit_series = get_movies_series_share(total)
     else:
         limit_movies, limit_series = 10000, 10000
     items = []
     if terms and len(terms) >= 2:
         stripped_terms = ' '.join([term.strip()[:4] for term in terms.split(' ') if term])
         if limit_movies > 0:
             movies = [movie for movie in Movie.objects.raw_query(
                 {'$text': {'$search': stripped_terms}, 'visible': True}
             )[:limit_movies]]
             items.extend(movies)
         if limit_series:
             series = [series for series in Series.objects.raw_query(
                 {'$text': {'$search': stripped_terms}, 'visible': True}
             )[:limit_series]]
             items.extend(series)
     if getattr(settings, 'DEBUG'):
         show_adult = self.request.user.is_authenticated() and self.request.user.profile.get_can_access_adult_content()
     else:
         show_adult = self.request.user.is_authenticated() and self.request.user.can_access_adult_content
     for item in items:
         if type(item).__name__ == "Movie" and item.is_adult:
             if not show_adult:
                 items.remove(item)
     return items