/lizzy

Multimedia playlist parser, supporting a wide range of playlist file formats.

Primary LanguageJavaMIT LicenseMIT

CI Maven Central javadoc

Lizzy

Lizzy is an open source Java library allowing to parse, create, edit, convert and save almost any type of multimedia playlist.

Two versatile command-line tools are also available at Lizzy Transcode.

Origin

Lizzy has been forked from sourceforge.net/projects/lizzy

Features

  • Automatic detection of the type of input playlist
  • Information on playlist format support by some media players (input and output)
  • Physical access to the individual contents of a playlist is not required (performed on demand)
  • Information on playlist items (media contents): MIME type, length, duration, width/height
  • Powerful yet simple generic playlist representation
  • Direct handling of a given specific playlist type (e.g. ASX, WPL) is possible
  • Playlist normalization (empty items removal, simplification, reduction)

Supported Playlist Formats

Extension Playlist type
.asx,.wmx, .wax Advanced Stream Redirector (ASX)
.atom Atom Document, RFC4287
.b4s Winamp playlist versions 3 and later
.m3u, .m3u8, .m4u Winamp M3U
.mpcpl Media Player Classic Playlist
.pla iRiver iQuickList File
.plist, .xml Property list, iTunes Library File
.plp Sansa Playlist File
.pls Winamp PLSv2 Playlist
.ram Real Audio Metadata (RAM)
.rmp Real Metadata Package (RMP)
.rss RSS Document
.smil Synchronized Multimedia Integration Language (SMIL), W3C
.wpl Windows Media Player Playlist (WPL)
.xspf XML Shareable Playlist Format (XSPF)

License

Lizzy is licensed through a MIT licensing model: see the text LICENSE.txt.

Download

Lizzy Maven artifacts are published to mvnrepository.com.

Check the GitHub releases page.

Getting started

Example application, using Lizzy, to read a playlist provided via command line argument, and print the playlist media (track) sources:

package io.github.borewit.lizzy.example;

import io.github.borewit.lizzy.playlist.Media;
import io.github.borewit.lizzy.playlist.SpecificPlaylist;
import io.github.borewit.lizzy.playlist.SpecificPlaylistFactory;

import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;

public class ReadPlaylistExample
{
   public static void main(String[] args) throws IOException
   {
      Path playlistPath = Paths.get(System.getProperty("user.dir"), "samples", "asx", "test01.asx");
      SpecificPlaylist specificPlaylist = SpecificPlaylistFactory.getInstance().readFrom(playlistPath);
      if (specificPlaylist == null)
      {
         System.exit(-1);
      }
      specificPlaylist.toPlaylist().getRootSequence().getComponents().forEach(component -> {
         if (component instanceof Media)
         {
            Media media = (Media) component;
            System.out.printf("Media with content-source=%s\n", media.getSource().toString());
         }
      });
   }
}

Documentation

JavaDoc of released versions

Build

In order to build Lizzy from the sources, you first have to download and install the following tools:

  1. Install Java SDK 15 (may work with other versions as well)
  2. Install Gradle
  3. You may have to set JAVA_HOME and directory bin folder of the Maven installation to your PATH System variable.

Execute the following command in order to build the distribution and store it in your local Maven cache:

Build

Publish local

Publish to local Maven repository:

./gradlew :clean :publishToMavenLocal

Publish to Maven Central

Publish to local Sonatype Maven Central - Sonatype:

./gradlew :sign
./gradlew :publish