Esempio n. 1
0
def related_video():
    args = request.args
    key = http_util.check_params(args, 'res_id')
    if key:
        return http_util.return_param_not_found(key)

    res_id = args.get('res_id')
    # TODO 需要真正的相关逻辑
    res = Video.query_related_videos(res_id)

    return http_util.return_model(data=res)
Esempio n. 2
0
    def get_resource_detail(cls, res_id, res_type, source_include=[], **params):
        """获取资源详情"""
        detail = None
        login_user_id = g.user_id
        if res_type == BaseConfig.TYPE_VIDEO_PLAY:
            detail = Video.get_video_detail(res_id)
        elif res_type == BaseConfig.TYPE_ARTICLE:
            detail = Article.get_article_detail(res_id)
            if not detail:
                app.logger.error('{} not found'.format(res_id))
                return None
            del detail['content']
        elif res_type == BaseConfig.TYPE_AUDIO:
            detail = Audio.get_audio_detail(res_id)
        elif res_type == BaseConfig.TYPE_IMAGE:
            detail = Image.get_image_detail(res_id)
        elif res_type == BaseConfig.TYPE_COLLECTION:
            detail = Collection.get_collection_detail(res_id)
            subs = []
            if 'items' in source_include:
                items = CollectionResource.query_items(collection_id=res_id)
                for item in items:
                    sub_id = item.res_id
                    sub_type = item.res_type

                    sub_detail = Resource.get_resource_detail(
                        res_id=sub_id,
                        res_type=sub_type,
                        source_include=['comment_count', 'view_count',
                                        'like_count'],
                        login_user_id=login_user_id
                    )
                    if sub_detail:
                        subs.append(sub_detail)
            detail['items'] = subs

        if not detail:
            return None

        # 添加评论
        if 'comments' in source_include:
            comments = get_comments(
                res_id=res_id,
                start=BaseConfig.MAX_START,
                per_page=5
            )
            detail['comments'] = comments

        # 相关视频
        if 'related_items' in source_include and res_type != BaseConfig.TYPE_COLLECTION:
            related_videos = Video.query_related_videos(res_id)
            detail['related_items'] = related_videos

        ext = detail.get('ext', {})
        # 观看数量
        if 'view_count' in source_include:
            count = Action.query_count(
                type=BaseConfig.TYPE_ACTION_VIEW,
                res_id=res_id
            )
            ext['view_count'] = count

        # 点赞数量
        if 'like_count' in source_include:
            count = LikeInfo.query_count(
                res_id=res_id,
                res_type=res_type
            )
            ext['like_count'] = count

        # 评论数量
        if 'comment_count' in source_include:
            count = Comment.query_count(
                res_id=res_id,
                res_type=res_type
            )
            ext['comment_count'] = count

        detail['ext'] = ext

        # 关注状态
        detail['is_like'] = 0
        if login_user_id:
            is_like = LikeInfo.query_like(
                user_id=login_user_id,
                res_id=res_id,
                res_type=res_type
            )
            if is_like:
                detail['is_like'] = 1
        return detail