{"id":13491143,"url":"https://github.com/aQaTL/MAL","last_synced_at":"2025-03-28T07:31:55.708Z","repository":{"id":57520524,"uuid":"105939143","full_name":"aQaTL/MAL","owner":"aQaTL","description":"Yet another myanimelist/anilist client. This time a console one, with CLI.","archived":false,"fork":false,"pushed_at":"2023-04-07T16:14:17.000Z","size":381,"stargazers_count":20,"open_issues_count":3,"forks_count":1,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-10-31T04:35:05.211Z","etag":null,"topics":["anilist","anime","cli","mal","myanimelist","myanimelist-api"],"latest_commit_sha":null,"homepage":"","language":"Go","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/aQaTL.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,"governance":null,"roadmap":null,"authors":null}},"created_at":"2017-10-05T20:50:59.000Z","updated_at":"2024-06-28T23:09:12.000Z","dependencies_parsed_at":"2024-01-16T09:05:46.046Z","dependency_job_id":"0822b5c9-253d-430d-b93c-528b4a92f0f7","html_url":"https://github.com/aQaTL/MAL","commit_stats":null,"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aQaTL%2FMAL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aQaTL%2FMAL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aQaTL%2FMAL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aQaTL%2FMAL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aQaTL","download_url":"https://codeload.github.com/aQaTL/MAL/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245989415,"owners_count":20705827,"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":["anilist","anime","cli","mal","myanimelist","myanimelist-api"],"created_at":"2024-07-31T19:00:53.967Z","updated_at":"2025-03-28T07:31:53.671Z","avatar_url":"https://github.com/aQaTL.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# Another MAL/AniList client\r\n\r\nThis time with CLI\r\n\r\n- [Dependencies](#dependencies)\r\n- [Quick start](#quick-start)\r\n- [Commands](#commands) - usage of some commands\r\n- [Examples](#examples) usage\r\n\r\n## Dependencies\r\n\r\n### For Linux\r\n\r\nIn order to have `mal copy` command working, you need to have either `xsel` or `xclip` installed.\r\n\r\n## Quick start\r\n\r\nIf you have a working Go environment, you can download the app via `go get -u github.com/aqatl/mal`.\r\nOtherwise, download binaries from the [release](https://github.com/aQaTL/MAL/releases) page.\r\n\r\nConfig files location: \r\n\r\n1. Linux: `$XDG_CONFIG_DIR/mal` (`$HOME/.config/mal` if `$XDG_CONFIG_DIR` env var is not set) .\r\n2. Windows: `%AppData%\\mal`\r\n3. MacOS: `$HOME/Library/Application Support/mal`\r\n\r\n### AniList mode\r\n\r\nAniList mode is used by default. All you need to do to configure the app is to simply execute the program.\r\nIt'll open AniList login page in your browser. Log in and authorize the app. And that's it - mal will cache\r\nthe received token on your disk and use it to authenticate your requests.\r\n\r\nRun mal with `-r` flag to refresh cached lists.\r\n\r\n### MyAnimeList mode\r\n\r\n**Notice:** MAL API is shut down, currently it is not possible to access it.\r\n\r\nTo switch between AniList and MyAnimeList mode use the `s` command (e.g. `mal s`).\r\n\r\nFirst, you need to give the app your credentials - username and password. To do that, execute\r\n`mal --prompt-credentials --verify --save-password`. If everything went good, you should see\r\na list of 10 entries.\r\n\r\n### Default behavior\r\n\r\nThe base command for everything is `mal`, which by default displays 10 last updated entries\r\nfrom your MAL. You can change the displayed list through some flags:\r\n\r\n```\r\n--max value                    visible entries threshold (default: 0)\r\n--a\t\t               display all entries; same as max -1\r\n--status value                 display entries only with given status [watching|planning|completed|repeating|paused|dropped]\r\n--sort value                   display entries sorted by: [last-updated|title|episodes|score]\r\n--reversed                     reversed list order\r\n```\r\n\r\nIt's also good to run the app with `-r` (or `--refresh`) to update the cached list. Mind that there is not refresh interval so you have to refresh manually.\r\n\r\nList of all commands and possible flags is available via `mal --help`.\r\n\r\n### Commands\r\n\r\nAll actions are done by variety of commands. They are in the following form:\r\n`mal [global flags] command [command flags] [command arguments]`\r\n\r\nCommands listed in `help` are divides into categories:\r\n\r\n* **Update** command changes entry data and sends the updated version to your account\r\n* **Action** command performs action that uses the entry data like printing it to the console\r\n* **Config** command manipulates on the app configuration file (look at `mal cfg --help` for details)\r\n\r\nYou can always see the details of the specific command via `help` like this:\r\n`mal \u003ccommand\u003e --help`\r\n\r\n#### Select entry to work with\r\n\r\nCommands that use entry data need to know which entry you want to use. And there's a thing\r\ncalled \"selected entry\". To select an entry, use the `mal sel` command. And here's a usage\r\nof that command (` mal sel --help`):\r\n\r\n```\r\nNAME:\r\n   mal sel - Select an entry\r\n\r\nUSAGE:\r\n   mal sel [entry title]\r\n\r\nCATEGORY:\r\n   Config\r\n```\r\n\r\nFor example, to select \"Naruto\", type `mal sel naruto` (case insensitive).\r\nIf `sel` is given no arguments, it will open a fuzzy search cui (console gui).\r\n\r\n#### Update entry\r\n\r\nFor now, you can update your entry with the following commands:\r\n\r\n```\r\neps, episodes  Set the watched episodes value. If n not specified, the number will be increased by one\r\nscore          Set your rating for selected entry\r\nstatus         Set your status for selected entry\r\ncmpl           Alias for 'mal status completed'\r\ndelete, del    Delete entry\r\n```\r\n\r\n##### `mal eps` command\r\n\r\n```\r\nNAME:\r\n   mal eps - Set the watched episodes value. If n not specified, the number will be increased by one\r\n\r\nUSAGE:\r\n   mal eps \u003cn\u003e\r\n\r\nCATEGORY:\r\n   Update\r\n```\r\n\r\nThere's an option to have mal automatically turn the entry status to completed after updating\r\nthe watched episodes value. To do that, use the `status-auto-update` config command.\r\n\r\n```\r\nNAME:\r\n   mal cfg status-auto-update - Allows entry to be automatically set to completed when number of all episodes is reached or exceeded\r\n\r\nUSAGE:\r\n   mal cfg status-auto-update [off|normal|after-threshold]\r\n```\r\n\r\nAs you can see, there are 2 modes of auto-update: normal and after-threshold.\r\n\r\nThe first behaves as you would expect -\u003e the status is changes when entry has 12 episodes\r\nand you hit the 12 watched episodes.\r\n\r\nAs for the `after-threshold`, the status will change after you exceed the number of\r\nepisodes. For example: when entry has 12 episodes and you hit 13 -\u003e status is changed to\r\ncompleted and your watched entries value is changed back to 12.\r\n\r\n##### `mal score` command\r\n\r\n```\r\nNAME:\r\n   mal score - Set your rating for selected entry\r\n\r\nUSAGE:\r\n   mal score \u003c0-10\u003e\r\n\r\nCATEGORY:\r\n   Update\r\n```\r\n\r\n##### `mal status` command\r\n\r\n```\r\nNAME:\r\n   mal status - Set your status for selected entry\r\n\r\nUSAGE:\r\n   mal status [watching|planning|completed|dropped|paused|repeating]\r\n\r\nCATEGORY:\r\n   Update\r\n```\r\n\r\nThere is also `cmpl` command that is an alias for `status completed`.\r\n\r\nUnfortunately, some commands may slightly differ between MyAnimeList and AniList mode and some may not\r\nbe present in both.\r\n\r\n## Examples\r\n\r\nA few examples of how I use this program.\r\n\r\nRemember that everything is in `--help` :)\r\n\r\n### Everyday usage\r\n\r\nOkay, so when I add a new anime to my list, I run `mal -r` to update the cache. Then, if I\r\nwant to watch it, I select it with `mal sel [name]`. Then I go to the web browser to find a\r\nwebsite where I can watch it. If the name is long, I copy the title with `mal copy title`.\r\nTo not forget the website and make it a little bit more convenient for me in the future, I\r\ncopy the website's link and bind it to the selected anime with `mal web [website url]`.\r\n\r\nNow, when I want to watch it, I can just type `mal web` and it will open saved url in the\r\nweb browser (you can configure which browser to use). When I finish an episode I type\r\n`mal eps` to update watched episodes and that's it. There's an option to automatically set\r\nthe status to \"completed\", so I don't have to do anything more.\r\n\r\nOh, and usually I also rate the show by `mal score [number from 0 to 10]`.\r\n\r\n### Showing all entries from plan to watch list\r\n\r\nUseful when you want to choose what to watch next.\r\n\r\n`mal --status plantowatch --max -1`\r\n\r\nThe `--max -1` flag tells the program not to limit the displayed list length.\r\n\r\n### Checking highest ranked (by you) shows\r\n\r\n`mal --status all --sort score`\r\n\r\nAgain, you can add `--max -1` flag to turn off the list length limit.\r\n\r\n### Showing your account stats\r\n\r\n`mal stats`\r\n\r\n### Checking entry details\r\n\r\n`mal details`\r\n\r\n`mal related`\r\n\r\n`mal music`\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FaQaTL%2FMAL","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FaQaTL%2FMAL","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FaQaTL%2FMAL/lists"}