示例#1
0
def query_video_list(request):
    """
    Query video list by title <-- generated regex
    :param request:
    :return:
    """
    query_keyword = request.GET["name"]
    page_size = int(get_request_with_default(request, "n", "30"))
    page_index = int(get_request_with_default(request, "p", "1"))
    like_video = get_request_with_default(request, "like", "no") == "yes"
    if like_video:
        like_condition = {"$eq": True}
    else:
        like_condition = {"$ne": None}

    assert page_size >= 1
    assert page_index >= 1
    with MongoDBDatabase("website_pron") as mgdb:
        query_res = mgdb.get_collection("video_info").find({
            "name": {
                "$regex": "(%s)" % "|".join(query_keyword.split(" "))
            },
            "like":
            like_condition
        }).sort("_id", -1).skip((page_index - 1) * page_size).limit(page_size)
        return [x for x in query_res]
示例#2
0
def query_xhamster_bylabel(request):
    tags = json.loads(request.GET["tags"])
    page_size = int(get_request_with_default(request, "n", "30"))
    page_index = int(get_request_with_default(request, "p", "1"))
    with MongoDBCollection("spider", "xhamster_storage") as coll:
        return [
            x for x in coll.find({
                "$or": [{
                    "label": {
                        "$regex": keyword,
                        "$options": "i"
                    }
                } for keyword in tags]
            }).skip((page_index - 1) * page_size).limit(page_size)
        ]
示例#3
0
def query_novel_by_condition(request):
    """
    Query novel list by title <-- json condition
    :param request:
    :return:
    """
    query_condition = json.loads(request.GET["condition"])
    page_size = int(get_request_with_default(request, "n", "30"))
    page_index = int(get_request_with_default(request, "p", "1"))
    assert page_size >= 1
    assert page_index >= 1
    with MongoDBDatabase("website_pron") as mgdb:
        query_res = mgdb.get_collection("novels").find(query_condition).sort(
            "words_count", -1).skip(
                (page_index - 1) * page_size).limit(page_size)
        return [x for x in query_res]
示例#4
0
def render_view_images(request):
    return render(
        request, "view_images.html", {
            "images_id": request.GET["id"],
            "query_key_words": get_request_with_default(
                request, "key_words", "")
        })
示例#5
0
def query_images_list(request):
    """
    Query images list via title<--generated regex
    :param request:
    :return:
    """
    query_keyword = request.GET["key_words"]
    page_size = int(get_request_with_default(request, "n", "30"))
    page_index = int(get_request_with_default(request, "p", "1"))
    assert page_size >= 1
    assert page_index >= 1
    with MongoDBDatabase("website_pron") as mgdb:
        query_res = mgdb.get_collection("images_info").find({
            "title": {
                "$regex": "(%s)" % "|".join(query_keyword.split(" "))
            }
        }).sort("_id", -1).skip((page_index - 1) * page_size).limit(page_size)
        return [x for x in query_res]
示例#6
0
def query_novel_by_title(request):
    """
    Query novel list by title <-- generated regex
    :param request:
    :return:
    """
    query_keyword = request.GET["query"]
    block_settings = json.loads(
        get_request_with_default(request, "block", "[]"))
    page_size = int(get_request_with_default(request, "n", "30"))
    page_index = int(get_request_with_default(request, "p", "1"))
    assert page_size >= 1
    assert page_index >= 1
    with MongoDBDatabase("website_pron") as mgdb:
        query_res = mgdb.get_collection("novels").find({
            "title": {
                "$regex": "(%s)" % "|".join(query_keyword.split(" "))
            },
            "novel_type": {
                "$nin": block_settings
            }
        }).sort("words_count", -1).skip(
            (page_index - 1) * page_size).limit(page_size)
        return [x for x in query_res]
示例#7
0
def get_nearby_images(request):
    """
    Query next/last images block info by given id and keywords
    :param request:
    :return:
    """
    current_id = int(request.GET["id"])
    keywords = get_request_with_default(request, "key_words", "")
    direction = request.GET["dir"].upper() == "NEXT"
    if direction:
        query_dir_condition = {"$gt": current_id}
        sort_flip = 1
    else:
        query_dir_condition = {"$lt": current_id}
        sort_flip = -1
    with MongoDBDatabase("website_pron") as mgdb:
        query_res = mgdb.get_collection("images_info").find({
            "title": {
                "$regex": "(%s)" % "|".join(keywords.split(" "))
            },
            "_id":
            query_dir_condition
        }).sort("_id", sort_flip).next()
        return query_res