{"id":20139660,"url":"https://github.com/livesplit/speedruncomsharp","last_synced_at":"2025-04-09T18:22:56.140Z","repository":{"id":34049398,"uuid":"37828479","full_name":"LiveSplit/SpeedrunComSharp","owner":"LiveSplit","description":"A .NET Library that can be used to interact with the Speedrun.com API","archived":false,"fork":false,"pushed_at":"2024-09-05T01:43:09.000Z","size":209,"stargazers_count":33,"open_issues_count":9,"forks_count":10,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-23T20:22:51.019Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":"Unmaintained","scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LiveSplit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-06-21T22:23:23.000Z","updated_at":"2025-01-04T00:52:06.000Z","dependencies_parsed_at":"2024-04-07T19:30:48.923Z","dependency_job_id":"43a3fb2e-56ec-4df0-aef2-29835290d0ad","html_url":"https://github.com/LiveSplit/SpeedrunComSharp","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LiveSplit%2FSpeedrunComSharp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LiveSplit%2FSpeedrunComSharp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LiveSplit%2FSpeedrunComSharp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LiveSplit%2FSpeedrunComSharp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LiveSplit","download_url":"https://codeload.github.com/LiveSplit/SpeedrunComSharp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248085881,"owners_count":21045235,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T21:46:35.702Z","updated_at":"2025-04-09T18:22:56.118Z","avatar_url":"https://github.com/LiveSplit.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SpeedrunComSharp\n\n[![API Version](https://img.shields.io/badge/API-c4413b...-blue.svg)](https://github.com/speedruncom/api/tree/c4413b86d7c2088c317de8e3940b022b11c26323)\n\nSpeedrunComSharp is a .NET wrapper Library for the [Speedrun.com API](https://github.com/speedruncom/api).\n\n## How to use\n\nDownload and compile the library and add it as a reference to your project. You then need to create an object of the `SpeedrunComClient` like so:\n\n```C#\nvar client = new SpeedrunComClient();\n```\n\nThe Client is separated into the following Sub-Clients, just like the Speedrun.com API:\n* Categories\n* Games\n* Guests\n* Leaderboards\n* Levels\n* Notifications\n* Platforms\n* Profile\n* Regions\n* Runs\n* Series\n* Users\n* Variables\n\nThe Sub-Clients implement all the API Calls for retrieving the Objects from the API. Once you obtained objects from those Clients, you can either use the References within the Objects to retrieve additional objects or you can use their IDs to retrieve them through the Clients.\n\n## Example Usage\n\n```C#\n//Creating the Client\nvar client = new SpeedrunComClient();\n\n//Searching for a game called \"Wind Waker\"\nvar game = client.Games.SearchGame(name: \"Wind Waker\");\n\n//Printing all the categories of the game\nforeach (var category in game.Categories)\n{\n  Console.WriteLine(category.Name);\n}\n\n//Searching for the category \"Any%\"\nvar anyPercent = game.Categories.First(category =\u003e category.Name == \"Any%\");\n\n//Finding the World Record of the category\nvar worldRecord = anyPercent.WorldRecord;\n\n//Printing the World Record's information\nConsole.WriteLine(\"The World Record is {0} by {1}\", worldRecord.Times.Primary, worldRecord.Player.Name);\n\n```\n\n## Optimizations\n\nThe Clients are somewhat more flexible as the Properties in the individual Objects for traversing the API, because they can embed additional objects to decrease Network Usage. If you want to optimize your API usage, make sure to use the Clients where possible.\n\nThe Library automatically minimizes Network Usage, so iterating over `category.Runs` multiple times for example only results in a single API Call. If you are iterating over an IEnumerable that results in a Paginated API Call, the API will only be called for those pages that you are iterating over. If two completely unrelated events result in the same API Call, the SpeedrunComSharp Library will notice that and return a cached result for the second API Call.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flivesplit%2Fspeedruncomsharp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flivesplit%2Fspeedruncomsharp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flivesplit%2Fspeedruncomsharp/lists"}