From 0bb74810ecd88561ce134306a46299b08027691e Mon Sep 17 00:00:00 2001 From: Yomguithereal Date: Wed, 13 Dec 2023 17:59:02 +0100 Subject: [PATCH] CrowdTangleList --- minet/cli/crowdtangle/lists.py | 4 ++-- minet/crowdtangle/constants.py | 2 -- minet/crowdtangle/formatters.py | 7 ------- minet/crowdtangle/lists.py | 4 ++-- minet/crowdtangle/types.py | 8 +++++++- 5 files changed, 11 insertions(+), 14 deletions(-) diff --git a/minet/cli/crowdtangle/lists.py b/minet/cli/crowdtangle/lists.py index 8ee64cf61a..b52f494632 100644 --- a/minet/cli/crowdtangle/lists.py +++ b/minet/cli/crowdtangle/lists.py @@ -7,12 +7,12 @@ import casanova from minet.cli.crowdtangle.utils import with_crowdtangle_utilities -from minet.crowdtangle.constants import CROWDTANGLE_LIST_CSV_HEADERS +from minet.crowdtangle.types import CrowdTangleList @with_crowdtangle_utilities def action(cli_args, client): - writer = casanova.writer(cli_args.output, fieldnames=CROWDTANGLE_LIST_CSV_HEADERS) + writer = casanova.writer(cli_args.output, fieldnames=CrowdTangleList) lists = client.lists() diff --git a/minet/crowdtangle/constants.py b/minet/crowdtangle/constants.py index 57a2ac9a3d..7303bba261 100644 --- a/minet/crowdtangle/constants.py +++ b/minet/crowdtangle/constants.py @@ -165,6 +165,4 @@ "%s_%s" % (post_type, substitute_key) ) -CROWDTANGLE_LIST_CSV_HEADERS = ["id", "title", "type"] - CROWDTANGLE_DEFAULT_START_DATE = "2010" diff --git a/minet/crowdtangle/formatters.py b/minet/crowdtangle/formatters.py index b4feaf35f1..fc2988597d 100644 --- a/minet/crowdtangle/formatters.py +++ b/minet/crowdtangle/formatters.py @@ -13,7 +13,6 @@ CROWDTANGLE_SUMMARY_CSV_HEADERS, CROWDTANGLE_LEADERBOARD_CSV_HEADERS, CROWDTANGLE_LEADERBOARD_CSV_HEADERS_WITH_BREAKDOWN, - CROWDTANGLE_LIST_CSV_HEADERS, CROWDTANGLE_STATISTICS, CROWDTANGLE_FULL_STATISTICS, ) @@ -38,8 +37,6 @@ boolean=["verified"], ) -CrowdTangleList = namedrecord("CrowdTangleList", CROWDTANGLE_LIST_CSV_HEADERS) - def map_key(key, target): return [item[key] for item in target] @@ -141,7 +138,3 @@ def format_leaderboard(item, with_breakdown=False): return CrowdTangleLeaderboardWithBreakdown(*row) return CrowdTangleLeaderboard(*row) - - -def format_list(item): - return CrowdTangleList(item["id"], item["title"], item["type"]) diff --git a/minet/crowdtangle/lists.py b/minet/crowdtangle/lists.py index a0167c94ed..5786fde4a5 100644 --- a/minet/crowdtangle/lists.py +++ b/minet/crowdtangle/lists.py @@ -5,7 +5,7 @@ # Function used to retrieved lists from a given dashboard. # from minet.crowdtangle.exceptions import CrowdTangleMissingTokenError -from minet.crowdtangle.formatters import format_list +from minet.crowdtangle.types import CrowdTangleList URL_TEMPLATE = "https://api.crowdtangle.com/lists?token=%s" @@ -21,6 +21,6 @@ def crowdtangle_lists(request, token=None, raw=False): lists = data["lists"] if not raw: - return [format_list(l) for l in lists] + return [CrowdTangleList.from_payload(l) for l in lists] return lists diff --git a/minet/crowdtangle/types.py b/minet/crowdtangle/types.py index 4354c741a6..bb278bcefd 100644 --- a/minet/crowdtangle/types.py +++ b/minet/crowdtangle/types.py @@ -84,4 +84,10 @@ class CrowdTangleLeaderboardWithBreakdown(TabularRecord): @dataclass class CrowdTangleList(TabularRecord): - pass + id: str + title: str + type: str + + @classmethod + def from_payload(cls, payload) -> "CrowdTangleList": + return cls(payload["id"], payload["title"], payload["type"])