[Wiki documentation](https://github.com/Calculamatrise/frpy/wiki)
### Installation
```
pip install frpy
```
### Example usage
```py
from frpy import Client
client = Client()
# Create event listener
def ready(self):
print("Ready!")
# Add event listener
client.on("ready", ready)
# Authentication
# token = Client.get_token(
# username='username',
# password='password'
# )
client.login("token")
```
### Data Retrievers
Retrieving user info:
```py
from frpy.rest import get_user
username = "Guest"
user = get_user(username)
print(user.json())
```
Expected Output:
```json
{
"admin": false,
"avatar": "https://cdn.freeriderhd.com/free_rider_hd/sprites/guest_profile_v2.png",
"classic": false,
"cosmetics": {
"head": {
"img": "head_icons_4 head_icons_4-classic"
}
},
"createdTracks": [],
"displayName": "Guest",
"forums": null,
"friendLimitReached": false,
"friends": [],
"id": 0,
"likedTracks": [],
"mobileStats": {
"connected": "1",
"headCount": "--",
"level": "--",
"wins": "--"
},
"moderator": false,
"plus": false,
"recentlyCompleted": [],
"recentlyPlayed": [],
"stats": {
"comments": 0,
"completed": 0,
"created": 0,
"headCount": 1,
"rated": 0,
"totalHeadCount": 200,
"totalPoints": 0
},
"username": "guest"
}
```
Retrieving track data:
```py
from frpy.rest import get_track
track_id = 1001
track = get_track(track_id)
print(track.json())
```
Expected Output:
```json
{
"author": "weewam",
"comments": [],
"createdAt": "11/19/13",
"createdDateAgo": "9 years ago",
"description": "Wild West is a Free Rider community classic track by weewam.",
"featured": false,
"hidden": 0,
"id": 1001,
"maxCommentLength": 500,
"size": 66,
"stats": {
"averageRating": 79,
"averageTime": "38:37.83",
"completionRate": 0.03,
"downVotes": 67,
"firstRuns": null,
"plays": "59.5k",
"runs": 571,
"upVotes": 257,
"votes": 324
},
"thumbnail": "https://cdn.freeriderhd.com/free_rider_hd/tracks/prd/b/8c/1001/768x250-v5.png",
"title": "Wild West",
"trackOfTheDay": {
"entries": [],
"gems": 500,
"lives": 30,
"refillCost": 10
},
"vehicle": "MTB",
"vehicles": [
"BMX",
"MTB"
]
}
```
Raw data
{
"_id": null,
"home_page": "https://github.com/Calculamatrise/frpy",
"name": "frpy",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "api, bot, frhd, frhd-api, freeriderhd, freeriderhd-api",
"author": "Calculamatrise",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/8a/d3/85c40b229e5aa2d109f2fb49e4e7b19ecd518664fdd374607305198a1b00/frpy-0.3.1.tar.gz",
"platform": null,
"description": "[Wiki documentation](https://github.com/Calculamatrise/frpy/wiki)\n\n### Installation\n\n```\npip install frpy\n```\n\n### Example usage\n\n```py\nfrom frpy import Client\n\nclient = Client()\n\n# Create event listener\ndef ready(self):\n\tprint(\"Ready!\")\n\n# Add event listener\nclient.on(\"ready\", ready)\n\n# Authentication\n# token = Client.get_token(\n# \tusername='username',\n# \tpassword='password'\n# )\n\nclient.login(\"token\")\n```\n\n### Data Retrievers\n\nRetrieving user info:\n\n```py\nfrom frpy.rest import get_user\n\nusername = \"Guest\"\nuser = get_user(username)\n\nprint(user.json())\n```\n\nExpected Output:\n```json\n{\n\t\"admin\": false,\n\t\"avatar\": \"https://cdn.freeriderhd.com/free_rider_hd/sprites/guest_profile_v2.png\",\n\t\"classic\": false,\n\t\"cosmetics\": {\n\t\t\"head\": {\n\t\t\t\"img\": \"head_icons_4 head_icons_4-classic\"\n\t\t}\n\t},\n\t\"createdTracks\": [],\n\t\"displayName\": \"Guest\",\n\t\"forums\": null,\n\t\"friendLimitReached\": false,\n\t\"friends\": [],\n\t\"id\": 0,\n\t\"likedTracks\": [],\n\t\"mobileStats\": {\n\t\t\"connected\": \"1\",\n\t\t\"headCount\": \"--\",\n\t\t\"level\": \"--\",\n\t\t\"wins\": \"--\"\n\t},\n\t\"moderator\": false,\n\t\"plus\": false,\n\t\"recentlyCompleted\": [],\n\t\"recentlyPlayed\": [],\n\t\"stats\": {\n\t\t\"comments\": 0,\n\t\t\"completed\": 0,\n\t\t\"created\": 0,\n\t\t\"headCount\": 1,\n\t\t\"rated\": 0,\n\t\t\"totalHeadCount\": 200,\n\t\t\"totalPoints\": 0\n\t},\n\t\"username\": \"guest\"\n}\n```\n\nRetrieving track data:\n```py\nfrom frpy.rest import get_track\n\ntrack_id = 1001\ntrack = get_track(track_id)\n\nprint(track.json())\n```\n\nExpected Output:\n```json\n{\n\t\"author\": \"weewam\",\n\t\"comments\": [],\n\t\"createdAt\": \"11/19/13\",\n\t\"createdDateAgo\": \"9 years ago\",\n\t\"description\": \"Wild West is a Free Rider community classic track by weewam.\",\n\t\"featured\": false,\n\t\"hidden\": 0,\n\t\"id\": 1001,\n\t\"maxCommentLength\": 500,\n\t\"size\": 66,\n\t\"stats\": {\n\t\t\"averageRating\": 79,\n\t\t\"averageTime\": \"38:37.83\",\n\t\t\"completionRate\": 0.03,\n\t\t\"downVotes\": 67,\n\t\t\"firstRuns\": null,\n\t\t\"plays\": \"59.5k\",\n\t\t\"runs\": 571,\n\t\t\"upVotes\": 257,\n\t\t\"votes\": 324\n\t},\n\t\"thumbnail\": \"https://cdn.freeriderhd.com/free_rider_hd/tracks/prd/b/8c/1001/768x250-v5.png\",\n\t\"title\": \"Wild West\",\n\t\"trackOfTheDay\": {\n\t\t\"entries\": [],\n\t\t\"gems\": 500,\n\t\t\"lives\": 30,\n\t\t\"refillCost\": 10\n\t},\n\t\"vehicle\": \"MTB\",\n\t\"vehicles\": [\n\t\t\"BMX\",\n\t\t\"MTB\"\n\t]\n}\n```\n",
"bugtrack_url": null,
"license": "GPL-3.0 license",
"summary": "An api wrapper for Free Rider HD",
"version": "0.3.1",
"project_urls": {
"Bug Tracker": "https://github.com/Calculamatrise/frpy/issues",
"Homepage": "https://github.com/Calculamatrise/frpy",
"Source": "https://github.com/Calculamatrise/frpy"
},
"split_keywords": [
"api",
" bot",
" frhd",
" frhd-api",
" freeriderhd",
" freeriderhd-api"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "8c9716e65eefb0ab2411bf94190116cb2f4fb0995ecf4ce6b3da8f0c1ae55946",
"md5": "5309ce544ce6222fa5e8b83c26f6951c",
"sha256": "b10b4ebede49edc04dac1ef53f386331fe261c8b09e5bfc028073bc40a0fbd56"
},
"downloads": -1,
"filename": "frpy-0.3.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "5309ce544ce6222fa5e8b83c26f6951c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 36440,
"upload_time": "2025-09-12T05:10:37",
"upload_time_iso_8601": "2025-09-12T05:10:37.069960Z",
"url": "https://files.pythonhosted.org/packages/8c/97/16e65eefb0ab2411bf94190116cb2f4fb0995ecf4ce6b3da8f0c1ae55946/frpy-0.3.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8ad385c40b229e5aa2d109f2fb49e4e7b19ecd518664fdd374607305198a1b00",
"md5": "8659b45a20d4074fd762ff7831ff9ec9",
"sha256": "14cd34af24753ad8017be0e8fb038cc8251ff2b26a95af4ca6e0a8934dd2c10f"
},
"downloads": -1,
"filename": "frpy-0.3.1.tar.gz",
"has_sig": false,
"md5_digest": "8659b45a20d4074fd762ff7831ff9ec9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 29170,
"upload_time": "2025-09-12T05:10:38",
"upload_time_iso_8601": "2025-09-12T05:10:38.592441Z",
"url": "https://files.pythonhosted.org/packages/8a/d3/85c40b229e5aa2d109f2fb49e4e7b19ecd518664fdd374607305198a1b00/frpy-0.3.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-12 05:10:38",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Calculamatrise",
"github_project": "frpy",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "frpy"
}