{"id":13494371,"url":"https://github.com/ryukinix/mal","last_synced_at":"2025-04-09T14:12:23.950Z","repository":{"id":57439378,"uuid":"58887576","full_name":"ryukinix/mal","owner":"ryukinix","description":"MAL: A MyAnimeList Command Line Interface [BROKEN: BLAME MyAnimeList]","archived":false,"fork":false,"pushed_at":"2024-06-17T03:13:32.000Z","size":521,"stargazers_count":110,"open_issues_count":6,"forks_count":11,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-02T10:09:23.240Z","etag":null,"topics":["anime","archlinux","aur","cli","list","mal","myanimelist","pypi","python"],"latest_commit_sha":null,"homepage":"https://mal.readthedocs.io","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/ryukinix.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","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}},"created_at":"2016-05-15T22:23:59.000Z","updated_at":"2025-02-16T18:43:14.000Z","dependencies_parsed_at":"2024-06-21T02:37:26.434Z","dependency_job_id":"0e93ec5f-3d39-4d34-8912-b46319f94289","html_url":"https://github.com/ryukinix/mal","commit_stats":{"total_commits":237,"total_committers":8,"mean_commits":29.625,"dds":0.3080168776371308,"last_synced_commit":"2267f3e6719dcce5db37648d4cab47bc64a73940"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryukinix%2Fmal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryukinix%2Fmal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryukinix%2Fmal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryukinix%2Fmal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ryukinix","download_url":"https://codeload.github.com/ryukinix/mal/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248054195,"owners_count":21039952,"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","archlinux","aur","cli","list","mal","myanimelist","pypi","python"],"created_at":"2024-07-31T19:01:24.369Z","updated_at":"2025-04-09T14:12:23.911Z","avatar_url":"https://github.com/ryukinix.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# mal - MyAnimeList Command Line Interface\n\n[![Build Status](https://travis-ci.org/ryukinix/mal.svg?branch=master)](https://travis-ci.org/ryukinix/mal)\n[![codecov](https://codecov.io/gh/ryukinix/mal/branch/master/graph/badge.svg)](https://codecov.io/gh/ryukinix/mal)\n[![PyPi version](https://img.shields.io/pypi/v/mal.svg)](https://pypi.python.org/pypi/mal/)\n[![PyPi License](https://img.shields.io/pypi/l/mal.svg)](https://pypi.python.org/pypi/mal/)\n[![PyPI pyversions](https://img.shields.io/pypi/pyversions/mal.svg)](https://pypi.python.org/pypi/mal/)\n[![PyPI status](https://img.shields.io/pypi/status/mal.svg)](https://pypi.python.org/pypi/mal)\n\n## Description\n\n`mal` is a command-line client for [MyAnimeList](http://myanimelist.net/), via the [official API](http://myanimelist.net/modules.php?go=api).\n\nOne of the major design goals of this project is to avoid the use of web-scraping, which means it should work indefinitely. Other projects\nthat scrape the website tend to break whenever MyAnimeList has an update, rarely ever recovering from the needed maintenance as a result.\n\nDevelopment is currently in alpha. New ideas are welcome! But please check [CONTRIBUTING.md](CONTRIBUTING.md) before you submit that pull\nrequest.\n\nThis project is an unofficial fork of [pushrax/mal](https://github.com/pushrax/mal), which seems to have fallen out of maintenance.\n\n## Features\n\n- Search your anime list.\n- Fetch your anime list.\n- List animes by their status (e.g. `watching`).\n- Increment or decrement episode watch count.\n- Add anime to your `Plan To Watch` list.\n- Edit anime metadata (currently `tags`, `status` and `score`) using your favorite text editor.\n- Print your MAL stats! Just like you do on MyAnimeList.\n\nMore features are currently being developed! \n\nIf you have a suggestion for a new feature, a bug to report or something else, you can submit an [issue](https://github.com/ryukinix/mal/issues).\n\nPlease note that as this project is still in alpha development, pretty much everything is subject to change.\n\n## TL;DR | Demos\n\n![Main Usage](https://cloud.githubusercontent.com/assets/7642878/19803847/59295fd0-9ce1-11e6-9292-7e52266de4af.gif)\n\n![Listing Animes By Status](https://cloud.githubusercontent.com/assets/7642878/19803846/59157a9c-9ce1-11e6-93a7-30665ae859bf.gif)\n\n## Requirements\n\n- Python 3.4+\n- [setuptools](https://pypi.python.org/pypi/setuptools/3.5.1) (For installing and developing)\n- [requests](http://docs.python-requests.org/en/latest/index.html)\n- [appdirs](https://pypi.python.org/pypi/appdirs)\n- [decorating](https://pypi.python.org/pypi/decorating/)\n- [argparse](https://docs.python.org/3.5/library/argparse.html) (Merged into stdlib since version 3.2)\n\nSee [requirements.txt](requirements.txt) for detailed version information.\n\n## Installation\n\n### Preface\n\nEnsure that you are using **Python 3** before attempting to install.\n\nIt's common for systems to have both Python 2 and 3, so if necessary, use `pip3` or `python3 -m pip`.\n\nIf your system has both `python2` and `python3`, replace all instances of `python` and `pip` with `python3` and `pip3` (or `python3 -m pip`).\n\n### Install via `pip`\n\nFrom the command line, run:\n\n    $ pip install --user mal\n\nThis will install the latest stable build of `mal` from the `PyPi` repository.\n\n### Manual Installation\n\nIf you want the absolute latest, bleeding-edge version, you'll have to install manually.\n\nClone this project and run `pip`:\n\n    $ git clone https://github.com/ryukinix/mal\n    $ cd mal\n    $ sudo pip install --user .\n\nNote: If installing in a `virtualenv`, the `sudo` is not necessary.\n\nIt's also possible to install with the makefile (`sudo make install`) and the setup script (`sudo python3 ./setup.py install`),\nbut we strongly recommend `pip`, as it tracks dependencies, and can uninstall. It *is* a package manager, after all.\n\nFinally, if you want to update after having already installed, you can do this:\n\n    $ git pull origin master\n    $ sudo pip install --user .\n\n### On Arch Linux\n\nThis project has been packaged and uploaded to the AUR as\n[python-mal-git](https://aur.archlinux.org/packages/python-mal-git) in case you're using Arch Linux or a similar distro (like Manjaro).\n\n### Troubleshooting\n\nIf you just *can't* get `mal` to run because it's crashing upon startup, make sure that everything is using `python3`\n\n    $ head -1 $(which mal)\n    #!/usr/bin/python\n    $ sudo ed $(which mal) \u003c\u003c\u003c $'1s/python$/python3\\nwq'\n    28\n    #!/usr/bin/python3\n    29\n    $ head -1 $(which mal)\n    #!/usr/bin/python3\n\nYou might have to go through a few files to get it to work, but usually, editing the launcher is enough. Failing that,\ndelete the launcher, re-clone the repo, and try again in a `virtualenv`. If it works there, be careful to follow the above steps and\nmake sure you're using python3 for everything.\n\n## Usage\n\n### Authenticating\n\nFor some reason, the MAL API requires a username and password for most actions... including searching the main database. Thus, `mal` needs\nyour MAL login to be useful. To prevent this from being a headache, `mal` stores your credentials in your OS's default config path\n(e.g. `~/.config/mal/myanimelist.ini` for Linux). Your username and password are stored unencrypted in **plain text** in that file. \nIf you haven't already authenticated (`mal login`), the program will ask for your credentials when needed.\n\nCurrently, there is an [open issue](https://github.com/ryukinix/mal/issues/81) hoping to resolve the whole \"plain text password\" kerfuffle.\n\nThe format of `myanimelist.ini` is as follows:\n\n```ini\n[mal]\nusername = your_username\npassword = your_password\n\n```\n\n### Using The Interface\n\nWhen `mal` is executed without any arguments, a help message is displayed:\n\n    $ mal\n    usage: mal [-h] [-v]\n               {search,filter,increase,inc,decrease,dec,login,list,config,drop,stats,add,edit}\n               ...\n\n    MyAnimeList command line client.\n\n    positional arguments:\n      {search,filter,increase,inc,decrease,dec,login,list,config,drop,stats,add,edit}\n                            commands\n        search              search an anime\n        filter              find anime in users list\n        increase (inc)      increase anime's watched episodes by one\n        decrease (dec)      decrease anime's watched episodes by one\n        login               save login credentials\n        list                list animes\n        config              Print current config file and its path\n        drop                Put a selected anime on drop list\n        stats               Show anime watch stats\n        add                 add an anime to the list\n        edit                edit entry\n\n    optional arguments:\n      -h, --help            show this help message and exit\n      -v, --version         show the version of mal\n\nYou can also use the `-h` or `--help` options with `mal` or any of its subcommands to see specific help messages.\n\n    $ mal list -h\n    usage: mal list [-h] [--extend] [--user USER] [section]\n\n    positional arguments:\n      section      section to display, can be one of: [all, watching, completed,\n                   on hold, dropped, plan to watch, rewatching] (default: all)\n\n    optional arguments:\n      -h, --help   show this help message and exit\n      --extend     display extra info such as start/finish dates and tags\n      --user USER  choose which users list to show\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md)\n\n## License\n\n[GPLv3](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryukinix%2Fmal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fryukinix%2Fmal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryukinix%2Fmal/lists"}