{"id":16765654,"url":"https://github.com/galarzaa90/tibiakt","last_synced_at":"2025-07-13T15:31:02.175Z","repository":{"id":49556133,"uuid":"285669589","full_name":"Galarzaa90/TibiaKt","owner":"Galarzaa90","description":"Kotlin library to fetch and parse Tibia.com pages.","archived":false,"fork":false,"pushed_at":"2025-07-09T05:15:36.000Z","size":34960,"stargazers_count":2,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-07-11T12:40:41.285Z","etag":null,"topics":["jsoup","jvm","kotlin","ktor","tibia","webcrawler"],"latest_commit_sha":null,"homepage":"https://galarzaa90.github.io/TibiaKt","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Galarzaa90.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","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,"zenodo":null},"funding":{"github":["Galarzaa90"],"patreon":null,"open_collective":null,"ko_fi":"galarzaa","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"custom":null}},"created_at":"2020-08-06T20:55:01.000Z","updated_at":"2025-07-09T05:13:56.000Z","dependencies_parsed_at":"2024-08-02T23:02:31.399Z","dependency_job_id":"01ee379f-d2bf-468d-a0dd-3c0be0c76fd6","html_url":"https://github.com/Galarzaa90/TibiaKt","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/Galarzaa90/TibiaKt","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Galarzaa90%2FTibiaKt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Galarzaa90%2FTibiaKt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Galarzaa90%2FTibiaKt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Galarzaa90%2FTibiaKt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Galarzaa90","download_url":"https://codeload.github.com/Galarzaa90/TibiaKt/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Galarzaa90%2FTibiaKt/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265162691,"owners_count":23720813,"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":["jsoup","jvm","kotlin","ktor","tibia","webcrawler"],"created_at":"2024-10-13T05:43:08.558Z","updated_at":"2025-07-13T15:31:01.524Z","avatar_url":"https://github.com/Galarzaa90.png","language":"Kotlin","funding_links":["https://github.com/sponsors/Galarzaa90","https://ko-fi.com/galarzaa"],"categories":[],"sub_categories":[],"readme":"# TibiaKt\n\nKotlin library to fetch and parse Tibia.com pages.\n\n![GitHub release](https://img.shields.io/github/v/release/Galarzaa90/TibiaKt?sort=semver)\n![GitHub commits since latest release](https://img.shields.io/github/commits-since/Galarzaa90/TibiaKt/latest?sort=semver)\n![Sonatype Nexus (Snapshots)](https://img.shields.io/nexus/s/com.galarzaa/tibiakt-core?server=https%3A%2F%2Fs01.oss.sonatype.org)\n[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=Galarzaa90_TibiaKt\u0026metric=ncloc)](https://sonarcloud.io/summary/new_code?id=Galarzaa90_TibiaKt)\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=Galarzaa90_TibiaKt\u0026metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=Galarzaa90_TibiaKt)\n\n* [Dokka](https://galarzaa90.github.io/TibiaKt)\n* [Coverage](https://galarzaa90.github.io/TibiaKt/kover)\n\n## Installation\n\nThe latest version available on maven central is:  \n![Maven Central](https://img.shields.io/maven-central/v/com.galarzaa/tibiakt-core?label=maven)\n\nFor snapshots, use `{branch}-SNAPSHOT` (e.g. `main-SNAPSHOT`).\n\n### Groovy\n\n```groovy\nrepositories {\n    mavenCentral()\n    // Only if you want to use snapshots\n    maven {\n        url \"https://s01.oss.sonatype.org/content/repositories/snapshots\"\n    }\n}\n\ndependencies {\n    implementation \"com.galarzaa:tibiakt-core:{version}\"\n    // OR\n    implementation \"com.galarzaa:tibiakt-client:{version}\"\n}\n\n```\n\n### Kotlin DSL\n\n```kotlin\nrepositories {\n    mavenCentral()\n    // Only if you want to use snapshots\n    maven(\"https://s01.oss.sonatype.org/content/repositories/snapshots\")\n}\n\ndependencies {\n    implementation(\"com.galarzaa:tibiakt-core:{version}\")\n    // OR\n    implementation(\"com.galarzaa:tibiakt-client:{version}\")\n}\n```\n\n## Usage\n\nTibiaKt comes in two different packages, and a runnable application, to be used according to your needs.\n\n### tibiakt-core\n\nThis is the heart of TibiaKt, it contains all the model definitions and parsing logic.\n\nYou can use this to parse the HTML content of Tibia pages obtained with any library.\n\n```kotlin\nval characterUrl: String = getCharacterUrl(\"Galarzaa Fidera\")\nval content: String = client.get(characterUrl) // Replace with any HTTP library you want\nval character: Character = CharacterParser.fromContent(content)\n```\n\n### tibiakt-client\n\nA ready to use client based on [ktor](https://ktor.io/).\n\nAll you need is to create an instance of `TibiaKtClient` and you're ready to go!\n\n```kotlin\nval client = TibiaKtClient()\n\nval character: TibiaResponse\u003cCharacter\u003e = client.fetchCharacter(\"Galarzaa Fidera\")\nval world: TibiaResponse\u003cWolrd\u003e = client.fetchWorld(\"Gladera\")\n```\n\nThe `TibiaResponse` object contains information such as the time it took to fetch the data, the time it took to parse it\nand whether the data is fresh or cached.\n\n### tibiakt-server\n\nA standalone application that deploys an HTTP server to provide endpoints to serve Tibia data in JSON format.\n\n#### Docker\n\nA [Dockerfile](Dockerfile) is also available, or it can be pulled\nfrom [Docker Hub](https://hub.docker.com/repository/docker/galarzaa90/tibiakt)   \n\n[![Docker Image Size (latest by date)](https://img.shields.io/docker/image-size/galarzaa90/tibiakt?sort=semver)](https://hub.docker.com/repository/docker/galarzaa90/tibiakt)\n[![Docker Image Version (latest semver)](https://img.shields.io/docker/v/galarzaa90/tibiakt?sort=semver)](https://hub.docker.com/repository/docker/galarzaa90/tibiakt)\n[![Docker Pulls](https://img.shields.io/docker/pulls/galarzaa90/tibiakt)](https://hub.docker.com/repository/docker/galarzaa90/tibiakt)\n\n```shell\ndocker pull galarzaa90/tibiakt\ndocker run --rm -ti -p 8080:8080 galarzaa90/tibiakt\n```\n\n#### Example\n\n**GET** `\u003cbaseUrl\u003e/characters/Galarzaa+Fidera`\n\n```json\n{\n  \"timestamp\": \"2022-01-23T16:57:26.275Z\",\n  \"isCached\": false,\n  \"cacheAge\": 0,\n  \"isCachingEnabled\": true,\n  \"fetchingTime\": 0.271,\n  \"parsingTime\": 0.016,\n  \"data\": {\n    \"name\": \"Galarzaa Fidera\",\n    \"title\": null,\n    \"formerNames\": [],\n    \"unlockedTitles\": 12,\n    \"sex\": \"MALE\",\n    \"vocation\": \"ROYAL_PALADIN\",\n    \"level\": 287,\n    \"achievementPoints\": 410,\n    \"world\": \"Gladera\",\n    \"formerWorld\": null,\n    \"residence\": \"Thais\",\n    \"marriedTo\": \"Auron Freezecaster\",\n    \"houses\": [],\n    \"guildMembership\": {\n      \"name\": \"Bald Dwarfs\",\n      \"rank\": \"Ironbreaker\"\n    },\n    \"lastLogin\": \"2022-01-08T16:21:10Z\",\n    \"position\": null,\n    \"comment\": \"03/11/15 - Character created\\n09/01/16 - Level 100\\n07/02/16 - Mortal Combat (Level 122)\\n29/02/16 - Cave Explorer Outfit (Level 135)\\n04/04/16 - Annihilator Quest (Level 152) with Nezune, Miraxe and Ir Yut\\n01/04/19 - Nezune deleted by almighty and completely accurate CipSoft detection tool.\\n\\n RIP Nezune - Don't get hunted by Pablinn in Deletera \\n\\nNabBot's support discord server:\\nhttps://support.nabbot.xyz/\\n\\n/NB-23FC13AC7400000/\",\n    \"accountStatus\": \"PREMIUM_ACCOUNT\",\n    \"recentlyTraded\": false,\n    \"deletionDate\": null,\n    \"badges\": [\n      {\n        \"name\": \"Ancient Hero\",\n        \"description\": \"The account is older than 15 years.\",\n        \"imageUrl\": \"https://static.tibia.com/images//badges/badge_accountage4.png\"\n      },\n      {\n        \"name\": \"Senior Hero\",\n        \"description\": \"The account is older than 10 years.\",\n        \"imageUrl\": \"https://static.tibia.com/images//badges/badge_accountage3.png\"\n      },\n      {\n        \"name\": \"Veteran Hero\",\n        \"description\": \"The account is older than 5 years.\",\n        \"imageUrl\": \"https://static.tibia.com/images//badges/badge_accountage2.png\"\n      },\n      {\n        \"name\": \"Fledgeling Hero\",\n        \"description\": \"The account is older than 1 year.\",\n        \"imageUrl\": \"https://static.tibia.com/images//badges/badge_accountage1.png\"\n      },\n      {\n        \"name\": \"Tibia Loyalist (Grade 2)\",\n        \"description\": \"The account earned more than 1000 loyalty points.\",\n        \"imageUrl\": \"https://static.tibia.com/images//badges/badge_tibialoyalist2.png\"\n      },\n      {\n        \"name\": \"Tibia Loyalist (Grade 1)\",\n        \"description\": \"The account earned more than 100 loyalty points.\",\n        \"imageUrl\": \"https://static.tibia.com/images//badges/badge_tibialoyalist1.png\"\n      },\n      {\n        \"name\": \"Global Player (Grade 1)\",\n        \"description\": \"Summing up the levels of all characters on the account amounts to at least 500.\",\n        \"imageUrl\": \"https://static.tibia.com/images//badges/badge_globalplayer1.png\"\n      },\n      {\n        \"name\": \"Freshman of the Tournament\",\n        \"description\": \"The account participated 1x in a Tournament.\",\n        \"imageUrl\": \"https://static.tibia.com/images//badges/badge_tournamentparticipance1.png\"\n      }\n    ],\n    \"achievements\": [\n      {\n        \"name\": \"Cave Completionist\",\n        \"grade\": 1,\n        \"secret\": false\n      },\n      {\n        \"name\": \"Dream's Over\",\n        \"grade\": 1,\n        \"secret\": false\n      },\n      {\n        \"name\": \"Friend of the Apes\",\n        \"grade\": 2,\n        \"secret\": false\n      },\n      {\n        \"name\": \"True Lightbearer\",\n        \"grade\": 2,\n        \"secret\": true\n      },\n      {\n        \"name\": \"Warlord of Svargrond\",\n        \"grade\": 2,\n        \"secret\": false\n      }\n    ],\n    \"deaths\": [],\n    \"accountInformation\": {\n      \"creation\": \"2004-05-22T04:35:43Z\",\n      \"loyaltyTitle\": \"Squire of Tibia\",\n      \"position\": null,\n      \"tutorStars\": null\n    },\n    \"characters\": [\n      {\n        \"name\": \"Don Heron\",\n        \"world\": \"Antica\",\n        \"main\": false,\n        \"isOnline\": false,\n        \"isDeleted\": false,\n        \"recentlyTraded\": false,\n        \"position\": null\n      },\n      {\n        \"name\": \"Eggplant Galarzaa\",\n        \"world\": \"Secura\",\n        \"main\": false,\n        \"isOnline\": false,\n        \"isDeleted\": false,\n        \"recentlyTraded\": false,\n        \"position\": null\n      },\n      {\n        \"name\": \"Galarzaa\",\n        \"world\": \"Calmera\",\n        \"main\": false,\n        \"isOnline\": false,\n        \"isDeleted\": false,\n        \"recentlyTraded\": false,\n        \"position\": null\n      },\n      {\n        \"name\": \"Galarzaa Deathbringer\",\n        \"world\": \"Gladera\",\n        \"main\": false,\n        \"isOnline\": false,\n        \"isDeleted\": false,\n        \"recentlyTraded\": false,\n        \"position\": null\n      },\n      {\n        \"name\": \"Galarzaa Fidera\",\n        \"world\": \"Gladera\",\n        \"main\": true,\n        \"isOnline\": false,\n        \"isDeleted\": false,\n        \"recentlyTraded\": false,\n        \"position\": null\n      },\n      {\n        \"name\": \"Galarzaa Redd\",\n        \"world\": \"Gladera\",\n        \"main\": false,\n        \"isOnline\": false,\n        \"isDeleted\": false,\n        \"recentlyTraded\": false,\n        \"position\": null\n      },\n      {\n        \"name\": \"Galarzaa The Druid\",\n        \"world\": \"Gladera\",\n        \"main\": false,\n        \"isOnline\": false,\n        \"isDeleted\": false,\n        \"recentlyTraded\": false,\n        \"position\": null\n      },\n      {\n        \"name\": \"Gallan Doente\",\n        \"world\": \"Belobra\",\n        \"main\": false,\n        \"isOnline\": false,\n        \"isDeleted\": false,\n        \"recentlyTraded\": false,\n        \"position\": null\n      },\n      {\n        \"name\": \"Lord de los Druidas\",\n        \"world\": \"Calmera\",\n        \"main\": false,\n        \"isOnline\": false,\n        \"isDeleted\": false,\n        \"recentlyTraded\": false,\n        \"position\": null\n      },\n      {\n        \"name\": \"Porfirio Diaz Mori\",\n        \"world\": \"Tournament - restricted Store\",\n        \"main\": false,\n        \"isOnline\": false,\n        \"isDeleted\": false,\n        \"recentlyTraded\": false,\n        \"position\": null\n      },\n      {\n        \"name\": \"Sir Galarzaa\",\n        \"world\": \"Calmera\",\n        \"main\": false,\n        \"isOnline\": false,\n        \"isDeleted\": false,\n        \"recentlyTraded\": false,\n        \"position\": null\n      },\n      {\n        \"name\": \"Sir Heron\",\n        \"world\": \"Zunera\",\n        \"main\": false,\n        \"isOnline\": false,\n        \"isDeleted\": false,\n        \"recentlyTraded\": false,\n        \"position\": null\n      }\n    ]\n  }\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgalarzaa90%2Ftibiakt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgalarzaa90%2Ftibiakt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgalarzaa90%2Ftibiakt/lists"}