Rishikant181 / Rettiwt-API

A CLI tool and an API for fetching data from Twitter for free!
https://rishikant181.github.io/Rettiwt-API/
MIT License
486 stars 46 forks source link

Feature Request: X Premium Analytics #613

Open Timtendo12 opened 2 months ago

Timtendo12 commented 2 months ago

Feature Request: X Premium Analytics

Hey! I would like to request the feature to fetch analytic data for the account. This might be a big feature so I will (if needed) be able to help you implement this in core and the API. I've already figured out most of the API endpoints needed to fetch the data.

The analytic internal API is divided in 3 sections

Overview

URL:

https://x.com/i/api/graphql/NlJ6RM-hgHxt-iu9cPQz7A/overviewDataUserQuery

Payload:

{
    "rest_id": "715786798056779776",
    "requested_metrics": [
        "Engagements",
        "Impressions",
        "ProfileVisits",
        "Follows",
        "VideoViews",
        "Replies",
        "Likes",
        "Retweets",
        "MediaViews",
        "Bookmark",
        "Share"
    ],
    "to_time": "2024-09-15T00:00:00.000Z",
    "from_time": "2024-09-01T00:00:00.000Z",
    "granularity": "Daily"
}
Property Type Description Example Value
rest_id String Rest ID 715786798056779776
requested metric String[] n/a "Engagements"
to_time Timestamp End date timestamp to request analytic data from 2024-09-15T00:00:00.000Z
from_time Timestamp Start date timestamp to request analytic data from 2024-09-1T00:00:00.000Z
granularity String Determines the level of detail for the analytic report. If set to "Daily", it will return daily reports of analytic numbers between from_date and to_date. Other possible values could be "Weekly" or "Monthly" for different levels of aggregation. "Daily

Response:

{
    "data": {
        "result": {
            "result": {
                "__typename": "User",
                "organic_metrics_time_series": [
                  // ...
                ],
                "id": "{{  User:{ID} but decoded as base64  }}"
            },
            "id": "VXNlclJlc3VsdHM6NzE1Nzg2Nzk4MDU2Nzc5Nzc2"
        }
    }
}

organic_metrics_time_series response object

[
    "metric_values": [
        {
            "metric_value": "{{ VALUE:INT }}",
            "metric_type": "{{ TYPE:STRING }}"
        },
    ],
    "timestamp": {
        "iso8601_time": "2024-09-01T00:00:00Z"
    }
]

You still have the other 2 pages left, However I don't think they supply information that someone needs daily,weekly or monthly so for now we could skip that one and focus on this. LMK If you need more information or want help.

Rishikant181 commented 2 months ago

Thanks for the information. Unfortunately, I don't have X premium to test it out or implement it and it seems X doesn't have any trial for X premium which might have helped me implement this feature.

Still, I'll be keeping this issue open in case someone with premium is willing to work on this.

Timtendo12 commented 2 months ago

I'll probaly be able to take a look into it.

Timtendo12 commented 2 months ago

Started working on this in both Core and API.

Rishikant181 commented 2 months ago

@Timtendo12 Sorry for the late reply.

Once you add the request config and the associated types in rettiwt-core, ping me so I'll make a new alpha release of rettiwt-core which we can then use to make the same changes on rettiwt-api.

Timtendo12 commented 2 months ago

@Timtendo12 Sorry for the late reply.

Once you add the request config and the associated types in rettiwt-core, ping me so I'll make a new alpha release of rettiwt-core which we can then use to make the same changes on rettiwt-api.

Don't worry about it! :)

I’ve submitted a PR for the core. Since this is my first time working on this project, I’d appreciate any critical feedback.

https://github.com/Rishikant181/Rettiwt-Core/pull/185

Rishikant181 commented 2 months ago

@Timtendo12 Rettiwt-Core v4.4.0-alpha.0 has been released with the required request configuration. The request config can be accessed by the user.analytics endpoint of rettiwt-core. You may use that alpha package to develop the feature in Rettiwt-API.

Ping me if you need an explanation on how to go about implementing those changes OR I can implement those by going in blind and ask you to test it :P

Timtendo12 commented 2 months ago

I'll see if I can figure it out.