npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

mediastic

v1.1.4

Published

Simple music auto-tag, without the write part

Downloads

18

Readme

Mediastic

Middleware based track identification tool.

Mediastic aims to find artist, title and album from any given track By default it will support tag parsing, file name parsing and spotify search. Its middleware architecture allows to configure and write plugins easily, layer that can add piece of metadata if found (or not).

API

Mediastic

constructor(): constructor. new is optional. No arguments needed.

use(middleware: function): adds a middleware function on top of the stack. The function is called with two arguments. First one is the metadata object, second is next function. This function has to be called once and only once. Returns nothing.

call(path: string): call the middleware stack with {path: path} as metadata object. Returns a promise, which resolves when stack finished. Promise argument:

{
  artist: string, // Artist name
  album: string, // Album name
  title: string, // Track name
  bitrate: int, // Bitrate, in bits
  duration: int, // Duration in seconds,
  track: string, // Track number on disc
  [probed: Object] // FFprobe result, if ffprobe was found and succesful
}

loadDefaults([opts]): configure mediastic with default stack provided with Mediastic (TagParser => FileNameParser => SpotifyAPI). opts is the options passed to middlewares.

static tagParser(): TagParser middleware constructor. No arguments needed

static fileNameParser(): FileNameParser middleware.

static spotifyApi([opts]) SpotifyAPI middleware. Options is:

const defaultOpts = {
  // Duration treshold used to compare tracks
  // When spotify returns several results for a given query,
  // We can't know which track to choose
  // So we filter them based on their duration
  // Any result which exceeds Math.abs(resultDuration - fileDuration)
  // by this value will be removed. Duration in seconds

  durationTreshold: 2,

  // When comparing durations, that comparison may only be relevant for
  // long enough tracks: any result shorter than this value will be accepted

  minimumDuration: 15,

  // Any result which album name matches this
  // will be filtered out if there are too many results
  // WARNING: Do not set GLOBAL flag. This will break everything

  albumKeywordBlacklist: /deluxe|renditions/i
}

Roadmap

Support AcoustID

Support Discogs

Support Gracenote SDK (looking for help for making addon)