{"id":20418344,"url":"https://github.com/katsutedev/mal4j","last_synced_at":"2025-04-12T17:26:11.200Z","repository":{"id":37899387,"uuid":"314903928","full_name":"KatsuteDev/Mal4J","owner":"KatsuteDev","description":"Java wrapper for the official MyAnimeList API","archived":false,"fork":false,"pushed_at":"2024-04-22T11:59:56.000Z","size":7472,"stargazers_count":35,"open_issues_count":4,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-04-22T12:02:20.347Z","etag":null,"topics":["anime","api","api-anime","api-manga","java","json","lib","library","mal","mal4j","manga","myanimelist","myanimelist-api","myanimelistapi-wrapper","oauth","oauth2","rest","rest-api"],"latest_commit_sha":null,"homepage":"https://katsute.dev/product/mal4j","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KatsuteDev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"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},"funding":{"custom":["katsute.dev"]}},"created_at":"2020-11-21T21:09:54.000Z","updated_at":"2024-05-10T02:29:05.930Z","dependencies_parsed_at":"2023-02-09T14:16:16.086Z","dependency_job_id":"a5c59f48-832e-4888-ab11-f5b589f2506d","html_url":"https://github.com/KatsuteDev/Mal4J","commit_stats":null,"previous_names":[],"tags_count":40,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KatsuteDev%2FMal4J","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KatsuteDev%2FMal4J/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KatsuteDev%2FMal4J/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KatsuteDev%2FMal4J/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KatsuteDev","download_url":"https://codeload.github.com/KatsuteDev/Mal4J/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248603576,"owners_count":21131821,"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":["anime","api","api-anime","api-manga","java","json","lib","library","mal","mal4j","manga","myanimelist","myanimelist-api","myanimelistapi-wrapper","oauth","oauth2","rest","rest-api"],"created_at":"2024-11-15T06:31:41.669Z","updated_at":"2025-04-12T17:26:11.179Z","avatar_url":"https://github.com/KatsuteDev.png","language":"Java","readme":"\u003cdiv id=\"top\" align=\"center\"\u003e\n    \u003ca href=\"https://github.com/KatsuteDev/Mal4J#readme\"\u003e\n        \u003cimg src=\"https://raw.githubusercontent.com/KatsuteDev/Mal4J/main/assets/banner.png\" alt=\"Mal4J - MyAnimeList for Java\"\u003e\n    \u003c/a\u003e\n    \u003ch3\u003eJava wrapper for the official MyAnimeList API\u003c/h3\u003e\n    \u003cdiv\u003e\n        \u003ca href=\"https://docs.katsute.dev/mal4j\"\u003eDocumentation\u003c/a\u003e\n        •\n        \u003ca href=\"https://myanimelist.net/apiconfig/references/api/v2\"\u003eAPI Docs\u003c/a\u003e\n        •\n        \u003ca href=\"https://github.com/KatsuteDev/Mal4J/blob/main/setup.md#readme\"\u003eSetup\u003c/a\u003e\n        •\n        \u003ca href=\"https://github.com/KatsuteDev/Mal4J/blob/main/faq.md#readme\"\u003eFAQ\u003c/a\u003e\n        •\n        \u003ca href=\"https://myanimelist.net/forum/?topicid=1897569\"\u003eForum Post\u003c/a\u003e\n    \u003cbr\u003e\n        \u003ca href=\"https://mvnrepository.com/artifact/dev.katsute/mal4j\"\u003eMaven Central\u003c/a\u003e\n        •\n        \u003ca href=\"https://github.com/KatsuteDev/Mal4J/packages/1769630\"\u003eGitHub Packages\u003c/a\u003e\n        •\n        \u003ca href=\"https://github.com/KatsuteDev/Mal4J/releases\"\u003eReleases\u003c/a\u003e\n    \u003c/div\u003e\n\u003c/div\u003e\n\n\u003cbr\u003e\n\nMal4J is a Java wrapper for the [MyAnimeList](https://myanimelist.net/) API. This library is compatible with Java 8+, Java 9+ modules, and Android.\n\nThis library supports read and write operations, including list updates.\n\n\u003cdiv align=\"right\"\u003e\u003ca href=\"#top\"\u003e\u003ccode\u003e▲\u003c/code\u003e\u003c/a\u003e\u003c/div\u003e\n\n## Installation\n\nMal4J requires at least Java 8. No additional dependencies/libraries are required.\n\nCompiled binaries can be installed from:\n\n - [Maven Central](https://mvnrepository.com/artifact/dev.katsute/mal4j)\n - [GitHub Packages](https://github.com/KatsuteDev/Mal4J/packages/1769630)\n - [Releases](https://github.com/KatsuteDev/Mal4J/releases)\n\nSee [setup](https://github.com/KatsuteDev/Mal4J/blob/main/setup.md#readme) for steps to authenticate and actually use this library.\n\n\u003cdiv align=\"right\"\u003e\u003ca href=\"#top\"\u003e\u003ccode\u003e▲\u003c/code\u003e\u003c/a\u003e\u003c/div\u003e\n\n## Features\n\n#### Search Queries\n\nFind Anime and Manga by search, ranking, season, and suggestions.\n\n```java\nMyAnimeList mal = MyAnimeList.withClientID(\"\");\nList\u003cAnime\u003e search =\n    mal.getAnime()\n        .withQuery(\"さくら荘のペットな彼女\")\n        .withLimit(1)\n        .withOffset(1)\n        .includeNSFW(false)\n        .search();\n```\n\n#### Anime and Manga Lists\n\nRead and edit your Anime and Manga listings.\n\n```java\nMyAnimeList mal = MyAnimeList.withToken(\"\");\nMangaListStatus status =\n    mal.updateMangaListing(28107)\n        .status(MangaStatus.Reading)\n        .volumesRead(7)\n        .chaptersRead(2)\n        .rereading(false)\n        .priority(Priority.High)\n        .timesReread(0)\n        .rereadValue(RereadValue.VeryHigh)\n        .tags(\"tags\", \"more tags\")\n        .comments(\"comments\")\n        .update();\n```\n\n#### Everything Else\n\n**All** information provided in the [MyAnimeList API](https://myanimelist.net/apiconfig/references/api/v2) including Anime, Manga, forums, genres, pictures, statistics, and characters, are accessible in this library.\n\n```java\nMyAnimeList mal = MyAnimeList.withClientID(\"\");\nAnime anime = mal.getAnime(13759);\n\nString ja = anime.getAlternativeTitles().getJapanese();\nGenre[] genres = anime.getGenres();\nRelatedAnime[] relatedAnime = anime.getRelatedAnime();\nAnimeRecommendation[] recs = anime.getRecommendations();\nOpeningTheme[] op = anime.getOpeningThemes();\nVideo[] PV = anime.getVideos();\nList\u003cCharacter\u003e characters = anime.getCharacters().search();\n\nCharacter character = mal.getCharacter(61371);\nPerson person = mal.getPerson(10765);\n```\n\n\u003cdiv align=\"right\"\u003e\u003ca href=\"#top\"\u003e\u003ccode\u003e▲\u003c/code\u003e\u003c/a\u003e\u003c/div\u003e\n\n## Contributing\n\n#### Before you start\n\nFor Anime/Manga list tests *Sakura-sou no Pet na Kanojo* ([Anime#13759](https://myanimelist.net/anime/13759) and [Manga#28107](https://myanimelist.net/manga/28107)) will be used.\n\nThe test cases will create a backup of your list in the `anime-list.txt` and `manga-list.txt` files. Make sure you fix your ratings and any other information that might be overwritten by this test.\n\nIgnore test failures for these known issues: [**⚠️ External Issues**](https://github.com/KatsuteDev/Mal4J/projects/10).\n\n#### Running Tests Locally\n\nFor local tests you can use Java 8+, however only methods in the Java 8 API may be used. The `src/main/java9` and `src/main/java11` folders should not be marked as a source root.\n\nRun tests locally by adding a text file named `client.txt` that contains the client ID in the `src/test/java/resources` directory.\n\nPlease note that the client ID being used for tests must not have a client secret and must have an app redirect url of `http://localhost:5050`.\n\n#### Running Tests using GitHub Actions\n\nTests can be run using GitHub Actions by running the `MyAnimeList CI` workflow manually in the actions tab of your fork. Note that this requires two secrets, a `MAL_CLIENT` which contains the client ID, and a `MAL_TOKEN` which contains the OAuth token (ex: `Bearer \u003coauth token\u003e`).\n\n\u003cdiv align=\"right\"\u003e\u003ca href=\"#top\"\u003e\u003ccode\u003e▲\u003c/code\u003e\u003c/a\u003e\u003c/div\u003e\n\n## \u0026nbsp;\n\nThis library is released under the [GNU General Public License (GPL) v2.0](https://github.com/KatsuteDev/Mal4J/blob/main/LICENSE).\n\n * [@Katsute](https://github.com/Katsute) and [@KatsuteDev](https://github.com/KatsuteDev) are not affiliated with MyAnimeList.\n * By using the MyAnimeList API you are subject to their [Terms Of Service](https://myanimelist.net/static/apiagreement.html).","funding_links":["katsute.dev"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkatsutedev%2Fmal4j","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkatsutedev%2Fmal4j","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkatsutedev%2Fmal4j/lists"}