etl/glean_auto_events.py (41 lines of code) (raw):

import logging import requests import copy logger = logging.getLogger(__name__) _auto_event_template = { "name": "", "type": "event", "expiration": "never", "description": "", "event_info": { "is_auto": True, "auto_event_id": "", }, } def get_auto_events_names(): """Get the automatic events names for the app""" data = [] file_list_endpoint = "https://public-data.telemetry.mozilla.org/api/v1/tables/glean_auto_events_derived/apps_auto_events_metadata/v1/files" # Mozilla's public-data API returns a list of files for a given dataset. file_resp = requests.get(file_list_endpoint) if file_resp.status_code == 404: logging.error("No data files found.") # Returns an empty list if no data files are found. return data files = file_resp.json() if not files: raise ValueError("No data files found.") for _, file in enumerate(files): logging.info(f"Extracting file: {file}") data.extend(requests.get(file).json()) return data def get_auto_events_for_app(app, auto_events): """Get the automatic events for the app""" event_names = [event for event in auto_events if event["app"] == app] auto_events = [] for row in event_names: auto_event_id = row["event_name"].split(".")[-1] event_template = copy.deepcopy(_auto_event_template) event_template["name"] = row["event_name"] event_template["description"] = ( f"An event triggered whenever the {auto_event_id} element is clicked on a page." ) event_template["event_info"]["auto_event_id"] = auto_event_id auto_events.append(event_template) return auto_events