Javakky/NicoApiClient

View on GitHub
examples/json_filter.py

Summary

Maintainability
A
0 mins
Test Coverage
from datetime import datetime

from nicovideo_api_client.api.v2.json_filter import JsonFilterOperator, JsonFilterTerm
from nicovideo_api_client.api.v2.snapshot_search_api_v2 import SnapshotSearchAPIV2
from nicovideo_api_client.constants import FieldType


def main():
    # URL生成
    request = (
        SnapshotSearchAPIV2()
        .tags_exact()
        .single_query("VOCALOID")
        .field({FieldType.TITLE})
        .sort(FieldType.VIEW_COUNTER)
        .json_filter(
            JsonFilterOperator.or_(
                JsonFilterTerm.set_range(
                    FieldType.START_TIME,
                    from_=datetime(2021, 1, 1, 0, 0, 0),
                    include_lower=True,
                ),
                JsonFilterTerm.set_range(FieldType.START_TIME, to_=datetime(2010, 1, 1, 0, 0, 0)),
            )
        )
        .limit(10)
        .user_agent("NicoApiClient", "0.5.0")
    )

    # https://api.search.nicovideo.jp/api/v2/snapshot/video/contents/search?targets=tagsExact&q=VOCALOID&fields=title&_sort=-viewCounter&jsonFilter=%7B%22type%22%3A+%22or%22%2C+%22filters%22%3A+%5B%7B%22type%22%3A+%22range%22%2C+%22field%22%3A+%22startTime%22%2C+%22from%22%3A+%222021-01-01T00%3A00%3A00%2B09%3A00%22%2C+%22include_lower%22%3A+true%2C+%22include_upper%22%3A+true%7D%2C+%7B%22type%22%3A+%22range%22%2C+%22field%22%3A+%22startTime%22%2C+%22to%22%3A+%222010-01-01T00%3A00%3A00%2B09%3A00%22%2C+%22include_lower%22%3A+true%2C+%22include_upper%22%3A+true%7D%5D%7D
    print(request.build_url())
    print(request.request().json())


if __name__ == "__main__":
    main()