MediaList was my personal replacement for MyAnimeList/Kitsu.io/AniDB/etc.
The intention was that there would be different types of programs for different use cases (e.g. CLI, Desktop GUI, Mobile GUI).
The heart of all those programs would be the MediaList library.

Programs that use MediaList allow you to create and maintain lists for media that you have watched or read.
You can view the documentation for the MediaList library as a PDF.
The only known program using MediaList is medialist-cli.

Status

Development of MediaList has been discontinued.
It was fun to work on and use, but I found myself wondering why I bother even keeping a list for this stuff.
So, I've stopped developing and using MediaList (and by extension, medialist-cli).

The rest of this page has been left mostly in tact, with some of the tense changed and the GUI/GTK sections removed as they were empty.

Configuration

MediaList doesn't provide any form of configuration, that is left up to the program.
As such, the programs on this page use the following configuration format, which you can adopt if you want.

The configuration files are located in the following directories:

A single file is located in those directories called medialist.conf, which contains the configuration of the programs on this page.
The format the file uses is called CNI, which is quite similar to INI files.
The configuration options (and their meaning) are explained below:

# Settings related to all medialist programs on this page.
[general]

# The directory where lists are stored.
# Below is the default and fallback location for POSIX
directory = $HOME/.local/share/medialist/

# Below is the default and fallback location for Windows
# NOTE: You cannot use Windows-style environment variables
# (e.g. %appdata%).  You can, however, use POSIX style
# environment variables (e.g. $appdata).
directory = $appdata\YumeNeru Software\medialist\data\

# Should programs verify when deleting
# items from a list, or when deleting
# an entire list?
verify_delete = no

# Settings pertaining to medialist-cli
[cli]

# Should medialist-cli verify when deleting
# items from a list, or when deleting an
# an entire list?
verify_delete = yes

If you are developing your own program using MediaList, it is not recommended to use this file.
Instead, create your own to avoid any duplication or overwriting of settings.

As the above snippet states, the directory option does have a default value:

You should take care in changing this value, as previously created lists will not be moved automatically — you must move them yourself.

medialist mTSV

The internal file format used by MediaList programs is mTSV.
An mTSV file is quite similar to a normal Tab-Separated Values (TSV) file, with the exception of supporting “comments”.
Comments are lines that start with an octothorpe (#) and can be ignored by any parsers.
The MediaList Suite of Programs (i.e. programs on this page) use these comment lines not only for comments, but also for configuration.

If a line starts with an octothorpe and is followed by a space, then it is ignored.
However, if the octothorpe isn't followed by a space (or a new line), then we attempt to treat it as a key-value line for configuration.
It would be similar to this:

# normal comment that is ignored
#key=values with spaces

This results in key having the value of "value with spaces".
These lines must appear before the first non-comment line, anything after that line is ignored.

medialist-cli

medialist-cli is the Command-Line Interface (CLI) for MediaList that allows you to create and maintain lists from the command line.
It's possible to run the CLI on both Linux and Windows.
For usage instructions it is recommended to read the included manual page (also available by running man medialist-cli after installing), or by running medialist-cli --help for a quick overview.

medialist-cli Installation

To install medialist-cli you need the source code, which is available on Codeberg.
You can obtain a local copy of the source code by using git and running: git clone https://codeberg.org/supercell/medialist-cli.

Building medialist-cli requires a compiler for the D Programming Language (versions 2.076–2.102 were tested) and either dub or GNU Make.
The last version of medialist-cli is 0.4, which is what we will build. The complete steps are shown below:

  1. git clone https://codeberg.org/supercell/medialist-cli
  2. cd medialist-cli
  3. git checkout v0.4
  4. make
  5. sudo make install

Some factors to take note of: Installation (make install) will only work on POSIX systems.
A method of installing medialist-cli on Windows is not available.
The other important piece of information is that the default compiler (when using GNU Make) is GDC.
You can, however, choose to use a different compiler with the DC environment variable:

If you want to uninstall medialist-cli, then simply run sudo make uninstall from the cloned repository.

medialist-cli News

version 0.4 - medialist-cli - April 6, 2023

It's time for another release of MediaList/medialist-cli.
It has been a while (over a year!) which was largely unintentional, but that's the life goes.
Anyway, for the most part medialist-cli should be complete.
There are probably some bugs that need to be discovered and fixed, and there should be better handling of errors; but in terms of features… it's pretty much done.
Perhaps some more user-friendly enhancements somewhere.
Anyway, here is the list of notable changes:

medialist-cli

MediaList

A full copy of the fossil timeline between 0.3 and 0.4 is provided in the changelogs directory.

The plan from here was to move MediaList in to a separate repository (i.e. medialist-d) and clean up some of the code for medialist-cli.
Ideally I would have been nice to begin working on a GUI version of MediaList, which would have help refine MediaList.

medialist mTSV

This is just a brief overview on how medialist-cli makes use of the mTSV file comments described earlier.
When a line in a mTSV file begins with an octothorpe and is not followed by a space or newline, then it is treated as a human-friendly header.
If the key matches a header in the mTSV file, then the value is displayed when calling medialist-cli show $listname --show-headers.