{"id":23446575,"url":"https://github.com/abcxff/db","last_synced_at":"2025-04-10T00:50:39.982Z","repository":{"id":46021238,"uuid":"512026683","full_name":"abcxff/db","owner":"abcxff","description":"Dump of a 5 day small scale data scraping project on the io game \"arras.io\"","archived":false,"fork":false,"pushed_at":"2022-07-19T00:07:48.000Z","size":8812,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-10T00:50:35.921Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/abcxff.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-07-08T21:08:22.000Z","updated_at":"2024-10-14T01:37:50.000Z","dependencies_parsed_at":"2022-07-18T18:42:15.134Z","dependency_job_id":null,"html_url":"https://github.com/abcxff/db","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abcxff%2Fdb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abcxff%2Fdb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abcxff%2Fdb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abcxff%2Fdb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abcxff","download_url":"https://codeload.github.com/abcxff/db/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248137998,"owners_count":21053775,"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-12-23T20:36:13.899Z","updated_at":"2025-04-10T00:50:38.722Z","avatar_url":"https://github.com/abcxff.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Arras DB\n\nA bot built to scan all [arras.io](https://arras.io) game servers (besides sandbox) in search of bulk server and player data. This bot was run 5 days straight, althought [arras.io#oc](https://arras.io#oc) and [arras.io#ob](https://arras.io#ob) were not processed for majority of the run (due lack of IPv6 support on those servers).\n\n## About the Dump\n\nFor perspective, every server in arras.io (identifiable by a unique id, for example #oc, #ha, #wa etc) runs a single gamemode at a time, and each gamemode has a series of players. Our bot collected gamemode meta data from the arras.io gamemode \"status\" API, and it collected player data from both the leaderboard as well as in game. The database is accessable in JSON format (zipped) at [`/arras.json.zip`](./arras.json.zip), while the more compressed formats are located in the `/db/` folder.\n\n## Layout of the Database\n\n(Section of the README is WIP - this will be completed and written to text for non coders soon)\n```ts\n// arras.json is an array of `Game`s\ninterface Game {\n  // Contains the identifier for the server / vps\n  // (insert id into arras.io#${id} to get the server link)\n  // Example:\n  //   \"id\": \"vcx\"\n  id: string; // ascii (len is 1 to 3)\n  // The start time of the server / when the server first\n  // started being scanned\n  // Example:\n  //   \"start\": 1657424582585\n  start: number; // float64\n  // Meta includes data like mspt, uptime, and game/server information\n  meta: GameMeta;\n  // The amount of players retrieved from the scanning\n  // Example:\n  //   \"playerCount\": 272\n  playerCount: number; // uint16\n  // Array of player datas (array.length === playerCount)\n  players: PlayerData[];\n}\n\ninterface GameMeta {\n  // The average milliseconds per tick in the game (retrieved from API)\n  // Example:\n  //   \"mspt\": 4.856888294219971\n  mspt: number; // float32\n  // The uptime of the game in seconds\n  // Example:\n  //   \"uptime\": 17781.03125\n  uptime: number; // float32\n  // The unparsed code of the server, you can use lib/parseCode\n  // to parseCode(code: string): string and see a more readable format\n  // Example:\n  //   \"code\": \"vultr-sgp-mf\"\n  code: string; // ascii\n  // The host server of the game (its technically specific to\n  // server ID, but it was put here anyway)\n  // Example:\n  //   \"host\": \"f6jklqqdgr0l0kbm.uvwx.xyz:5001\"\n  host: string; // ascii\n}\n\ninterface PlayerData {\n  // The player's body's entity id - part of the in game\n  // protocol and can be used for identifying players per game\n  // Example:\n  //   \"id\": 197956\n  id: number;\n  // The player's in game name\n  // Example:\n  //   \"name\": \"!\"\n  name: string; // utf8\n  // The player's team color (part of the arras protocol)\n  // Example:\n  //   \"teamColor\": 12;\n  teamColor: number; // uint8\n  // Whether or not the player data was collected from\n  // the leaderboard or not (if false, found in from fov)\n  // Example:\n  //   \"onLb\": true\n  onLb: boolean; // bool\n  // Name of the player's last tank\n  // Example:\n  //   \"tankName\": \"Falcon\"\n  tankName: string; // utf8\n  // Uptime of the server when the player was first found\n  // Example:\n  //   \"firstSeen\": 9854.556640625\n  firstSeen: number; // float32\n  // Uptime of the server when the player was last seen\n  // Example:\n  //   \"lastSeen\": 9948.310546875\n  lastSeen: number; // float32\n  // The last seen score of the player\n  // Example:\n  //   \"lastSeenScore\": 283571\n  lastSeenScore: number; // float32\n}\n```\n\n## Executing\n\n\u003e Be warned, the headless bot code is now outdated as of July 18th - use at your own risk\n\nAfter putting your CaptchaV3Solver™ API_TOKEN into config.js, see below\n\n### Standalone\n\n```\nnpm install\nnpm run start\n```\n\n### Using Docker\n\n```bash\ndocker build .\n\ndocker start\n```\n\n## Credits\n\n- Thank you to [Altanis](https://github.com/CoderSudaWuda) for preliminaries on the socket interface, as well as for providing servers to host recaptcha solvers.\n\n- Thank you to [bird](https://github.com/lolbird) for running the bot for more than 80% of its lifetime (he saved the project).\n\n- Thank you to [cx88](https://github.com/CX88) for being the developer of arras\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabcxff%2Fdb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabcxff%2Fdb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabcxff%2Fdb/lists"}