Skip to content

Manual - Trends

ManualDownload ¤

Download trend using config

Parameters:

Name Type Description Default
parent_folder AnyPath

parent folder for the data

required
snapshot_date datetime.date

snapshot date for the path

required
trends_service

trend service

required
Source code in sm_trendy/manual/get_trends.py
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
class ManualDownload:
    """Download trend using config

    :params parent_folder: parent folder for the data
    :param snapshot_date: snapshot date for the path
    :param trends_service: trend service
    """

    def __init__(
        self,
        parent_folder: AnyPath,
        snapshot_date: datetime.date,
        manual_folder: AnyPath,
    ):
        self.parent_folder = parent_folder
        self.snapshot_date = snapshot_date
        self.manual_folder = manual_folder

    def __call__(self, config):
        """
        :param config: config for the keyword
        """
        path_params = config.path_params
        target_folder = path_params.path(parent_folder=self.parent_folder)

        sdf = StoreDataFrame(
            target_folder=target_folder, snapshot_date=self.snapshot_date
        )
        sst = ManualSingleTrend(
            path_params=path_params, manual_folder=self.manual_folder
        )

        logger.info(
            f"keyword: {config.serpapi_params.q}\n"
            f"target_path: {target_folder}\n"
            "..."
        )

        logger.info(f"Saving to {target_folder} ...")
        sdf.save(sst, formats=["csv", "parquet"])

__call__(config) ¤

Parameters:

Name Type Description Default
config

config for the keyword

required
Source code in sm_trendy/manual/get_trends.py
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
def __call__(self, config):
    """
    :param config: config for the keyword
    """
    path_params = config.path_params
    target_folder = path_params.path(parent_folder=self.parent_folder)

    sdf = StoreDataFrame(
        target_folder=target_folder, snapshot_date=self.snapshot_date
    )
    sst = ManualSingleTrend(
        path_params=path_params, manual_folder=self.manual_folder
    )

    logger.info(
        f"keyword: {config.serpapi_params.q}\n"
        f"target_path: {target_folder}\n"
        "..."
    )

    logger.info(f"Saving to {target_folder} ...")
    sdf.save(sst, formats=["csv", "parquet"])

ManualSingleTrend ¤

get trend from manually downloaded file

Source code in sm_trendy/manual/get_trends.py
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
class ManualSingleTrend:
    """get trend from manually downloaded file"""

    def __init__(self, path_params: PathParams, manual_folder: AnyPath):
        self.path_params = path_params
        self.manual_folder = manual_folder

    @cached_property
    def dataframe(self) -> pd.DataFrame:
        """
        Build the dataframe
        """

        temp_path = self.path_params.path(parent_folder=self.manual_folder)
        temp_path.mkdir(parents=True, exist_ok=True)

        with open(temp_path / "manual.json", "r") as fp:
            manual_config = json.load(fp)

        df_downloaded = pd.read_csv(temp_path / "multiTimeline.csv", skiprows=2)
        columns = df_downloaded.columns.tolist()
        value_column = [c for c in columns if c != "Week"][0]

        df_downloaded.rename(
            columns={
                "Week": "date",
                value_column: "extracted_value",
            },
            inplace=True,
        )

        df_downloaded["query"] = manual_config["keyword"]
        df_downloaded["geo"] = manual_config["geo"]
        df_downloaded["timeframe"] = manual_config["timeframe"]
        df_downloaded["cat"] = manual_config["cat"]

        return df_downloaded

    @cached_property
    def metadata(self) -> Dict[str, Dict]:
        return {"path": self.path_params.model_dump()}

dataframe: pd.DataFrame cached property ¤

Build the dataframe