The rusty metal heart of the Basspistol release machine. 🤖🧡
Find a file
2020-03-19 17:04:11 +02:00
.vscode Use XO for linting 2018-11-11 10:28:14 +01:00
src Change track slug to include album slug 2018-11-19 13:10:57 +01:00
.gitignore Initial release 2018-08-14 19:41:01 +03:00
LICENSE Initial commit 2018-08-14 16:54:44 +03:00
nodemon.json Initial release 2018-08-14 19:41:01 +03:00
package.json Update dependencies 2020-03-19 17:04:11 +02:00
publikator.js Use XO for linting 2018-11-11 10:28:14 +01:00
README.md Fix typo in readme 2018-09-05 11:24:41 +02:00
yarn.lock Update dependencies 2020-03-19 17:04:11 +02:00

Publikator

The rusty metal heart of the Basspistol release machine.

Given a folder of tracks (supports mp3, ogg, flac, and many more), it will read the track metadata and re-organise them into a Jekyll-friendly layout. Here's the example output for a single album foo with two tracks bar and baz:

_albums/
  foo.md

_data/
  albums.yml

_tracks/
  foo/
    1-bar.md
    2-baz.md

assets/
  foo/
    1-bar.mp3
    2-baz.mp3

All Markdown files will encode the metadata in the Front Matter.

Installation

  1. Make sure Node.js is installed and up-to-date:

    brew install node
    
  2. Install Publikator globally via npm:

    npm install -g https://github.com/aengl/publikator
    
  3. Repeat the previous step to update to the latest version.

Usage

To get help, run:

publikator -h

To organise tracks and generate release information:

publikator organise <pathToMySongs> <outputPath>

Use the --delete flag to start with a clean output directory.

Jekyll Configuration

To take advantage of the collections, add the following to your _config.yml:

collections:
  albums:
    output: true
    permalink: /albums/:name
  tracks:
    output: true

Albums

To list all albums, create a file named albums.md in your Jekyll root with the following contents:

---
layout: default
---

<ul>
  {% for album in site.albums %}
  <li>
    <a href="/{{ album.slug }}">
      {{ album.name }}
    </a>
  </li>
  {% endfor %}
</ul>

Each individual album will be available at the url /albums/<album_slug>. To create a detail page for an album, create a new layout _layouts/album.html:

<h1>{{ page.album }}</h1>
<img src="{{ page.cover }}" />
<ul>
  {% for track in page.tracks %}
  <li>
    <a href="/{{ page.slug }}/{{ track.slug }}">
      {{ track.common.title }}
    </a>
  </li>
  {% endfor %}
</ul>

Tracks

Each individual track will be available at the url /<album_slug>/<track_slug>. To create a detail page for a track, create a new layout _layouts/track.html:

<h1>{{ page.common.title }}</h1>
<img src="{{ page.cover }}" />