- - - - - yumeneru - - - - - nemuru - - - - -

MediaList

MediaList is my personal replacement for MyAnimeList/Kitsu.io/AniDB/etc. The intention is that there will be various types of programs to fill in all use cases (e.g. CLI, Desktop GUI, Mobile GUI). The heart of all those programs will be the MediaList library. Currently it's only written in the D Programming Language, but will soon have libraries in other languages to support the different platforms. You can view the source code online.

Programs using MediaList will allow you to create and maintain various lists. You can view the documentation for the MediaList library as a PDF. At the moment, the only program using MediaList is medialist-cli.

MediaList Suite 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:

You will need to run one of the programs first for the directory to be created.

Within the configuration directory there can be a single file called medialist.conf, which will contain all the configuration for the programs on this page. The format the configuration 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 unintentional overwriting of settings.

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

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

medialist mTSV

The internal file format used by MediaList programs is mTSV. A 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=value 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

A Command-Line Interface (CLI) for MediaList that allows you to create and maintain lists from the CLI. 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 OSDN. You can obtain a local copy of the source code by using git and running: git clone https://pf.osdn.net/gitroot/n/ne/nemophila/medialist-cli.git

Building medialist-cli requires a compiler for the D Programming Language (versions 2.076 and newer are supported) and either dub or GNU Make. The latest version of medialist-cli at the time of writing is 0.4, which is what we will build. The complete steps are shown below:

  1. git clone https://pf.osdn.net/gitroot/n/ne/nemophila/medialist-cli.git
  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 yet 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 is 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 like to begin working on a GUI version of MediaList, which would help refine MediaList.

If you have any issues, please let me know.

medialist-cli 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.

medialist-gui

coming soon (desktop gnu/linux)

medialist-gtk

coming soon (mobile gnu/linux)

Last Update: 2022-03-07