{"id":18249460,"url":"https://github.com/mrpudn/maltrends","last_synced_at":"2026-04-20T14:02:08.514Z","repository":{"id":159539250,"uuid":"528276269","full_name":"mrpudn/maltrends","owner":"mrpudn","description":"(mirror) MyAnimeList.net manga and anime trend data.","archived":false,"fork":false,"pushed_at":"2026-03-30T00:06:25.000Z","size":116945,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-30T03:47:12.379Z","etag":null,"topics":["anime","data","json","jsonl","jsonlines","manga","myanimelist"],"latest_commit_sha":null,"homepage":"https://gitlab.com/mrpudn/maltrends","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mrpudn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-08-24T05:18:40.000Z","updated_at":"2026-03-30T00:06:28.000Z","dependencies_parsed_at":"2023-10-16T14:37:55.870Z","dependency_job_id":"8bcfefeb-1275-42dc-b161-c5f52b0dfc32","html_url":"https://github.com/mrpudn/maltrends","commit_stats":null,"previous_names":[],"tags_count":211,"template":false,"template_full_name":null,"purl":"pkg:github/mrpudn/maltrends","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrpudn%2Fmaltrends","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrpudn%2Fmaltrends/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrpudn%2Fmaltrends/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrpudn%2Fmaltrends/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mrpudn","download_url":"https://codeload.github.com/mrpudn/maltrends/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrpudn%2Fmaltrends/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32050451,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T11:35:06.609Z","status":"ssl_error","status_checked_at":"2026-04-20T11:34:48.899Z","response_time":94,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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","data","json","jsonl","jsonlines","manga","myanimelist"],"created_at":"2024-11-05T09:40:04.764Z","updated_at":"2026-04-20T14:02:08.495Z","avatar_url":"https://github.com/mrpudn.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# maltrends\n\n[MyAnimeList.net] manga and anime trend data.\n\n[![Pipeline Status](https://gitlab.com/mrpudn/maltrends/badges/main/pipeline.svg)](https://gitlab.com/mrpudn/maltrends/-/commits/main)\n\n## Overview\n\nThis project collects manga and anime data from [MyAnimeList.net] for the\npurpose of tracking current and historical popularity trends. The data is\nprovided in the [jsonlines] format.\n\nYou can download the latest files here:\n\n| File                    | Description        |\n| ----------------------- | ------------------ |\n| [`anime.jsonl`]         | Anime title data   |\n| [`anime-ranking.jsonl`] | Anime ranking data |\n| [`manga.jsonl`]         | Manga title data   |\n| [`manga-ranking.jsonl`] | Manga ranking data |\n\nThese files are automatically updated every week.\n\nThe schema of these records is expressed in the following schema files:\n\n| File             | Description                |\n| ---------------- | -------------------------- |\n| [`anime.json`]   | Anime title schema         |\n| [`manga.json`]   | Manga title schema         |\n| [`ranking.json`] | Anime/Manga ranking schema |\n\n## Usage\n\nYou can read and work with the data files from this project as-is, line-by-line.\nEach line is a JSON array containing a record's *values*. There is no need to\neven load the entire file into memory if your use-case does not require it -\nsimply read and work with one line at a time.\n\nBy storing only values instead of highly redundant dictionaries (i.e. *keys* and\n*values*), we are able to achieve a massive reduction in file size while still\nretaining the ability to express the complex structure of these records in JSON.\nIf you would prefer to convert these records into dictionaries/objects, a\nreference implementation is provided below.\n\n### Converting Records to Dictionaries\n\nThe reference implementation below uses the [`manga.json`] schema file to\nconvert records from the [`manga.jsonl`] file into dictionaries/objects.\n\n```py\nimport json\nfrom pathlib import Path\n\ndef map_schema(value, schema):\n    if type(schema) is list:\n        return [map_schema(v, schema[0]) for v in value]\n    if type(schema) is dict:\n        kvs = zip(schema.keys(), value, schema.values())\n        return {k: map_schema(v, s) for k, v, s in kvs}\n    return value\n\nwith open(Path('schema') / 'manga.json') as file:\n    schema = json.load(file)\n\nwith open(Path('data') / 'manga.jsonl') as file:\n    records = [map_schema(json.loads(line), schema) for line in file]\n```\n\nThe `records` variable should now contain the records as dictionaries.\n\n## License\n\nSee the [`LICENSE`] file before using any of the files provided by this project\nin your own work.\n\n\n\u003c!-- links --\u003e\n\n[`LICENSE`]: LICENSE\n[`anime.json`]: schema/anime.json\n[`anime.jsonl`]: data/anime.jsonl\n[`anime-ranking.jsonl`]: data/anime-ranking.jsonl\n[`manga.json`]: schema/manga.json\n[`manga.jsonl`]: data/manga.jsonl\n[`manga-ranking.jsonl`]: data/anime-ranking.jsonl\n[`ranking.json`]: schema/ranking.json\n\n[MyAnimeList.net]: https://myanimelist.net\n[jsonlines]: https://jsonlines.org/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrpudn%2Fmaltrends","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrpudn%2Fmaltrends","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrpudn%2Fmaltrends/lists"}