1.1.3 • Published 7 months ago

asf-file-props v1.1.3

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

ASF-file-props

MIT License

Overview

ASF-file-props is a tiny lightweight library, designed to extract the basic metadata from ASF-format files, including .asf, .wma, and .wmv. It supports usage on both server-side (Node.js) and client-side (browser) environments.

Why it's good

  • Web and Node compatible: Works for both Node.js and Web (browser) environment.
  • No overhead: It does only the bare minimum using the bult-in native JS APIs of the environment making it tiny and lightning-fast.
  • No Runtime Dependencies: ASF-file-props is dependency-free. You can even just drop in the files without bothering to use NPM.
  • Ideal for learning: It's so bare-bones that it's a good jump-start into handling binary data in JS/TS.

Why it's not

It only parses one single metadata object from the file content. Though you can always build on it using the other GUIDs and object specs from the official spec sheet. Feel free to send Pull Requests.

What does it do

Given the file contents (File for web or PathLike | FileHandle for node) it returns the following properties extracted from the ASF_File_Properties_Object:

export type ASFFileProps = {
    fileSize: bigint,
    creationDate: bigint,
    playDuration: bigint,
    preRoll: bigint,
    durationInSeconds: number,
}

(see ASFFileProps.ts)

Installation

Install via npm:

npm i asf-file-props

Usage

With node.js:

import GetASFProps from 'asf-file-props';

const props = await GetASFProps.node("./test.wma")
if (props) {
    const duration = props.durationInSeconds;
    console.log(`File: test.wma`);
    console.log(`Audio duration: ${duration} seconds`);
    const seconds = duration % 60;
    const minutes = (duration - seconds) / 60;
    console.log(`that is ${minutes}:${Math.round(seconds)}`);
} else {
    console.log('Could not determine the audio duration.');
};

In browser context:

See demo/demo.html

Other

The source is also basic and straighforward, making it a good kick-start into working with binary data in JS/TS.

License

asf-file-props is freely distributable under the terms of the MIT license.

1.1.1

7 months ago

1.1.0

7 months ago

1.1.3

7 months ago

1.1.2

7 months ago

1.0.4

7 months ago

1.0.3

8 months ago

1.0.2

9 months ago

1.0.1

9 months ago

1.0.0

9 months ago