UNPKG

asf-file-props

Version:

Extract basic metadata from ASF/WMA/WMV files

62 lines (52 loc) 2.45 kB
# ASF-file-props [![MIT License][license-image]][license-url] ## 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`: ``` typescript export type ASFFileProps = { fileSize: bigint, creationDate: bigint, playDuration: bigint, preRoll: bigint, durationInSeconds: number, } ``` (see [ASFFileProps.ts](./src/ASFFileProps.ts)) ## Installation Install via npm: ```bash npm i asf-file-props ``` ## Usage ### With node.js: ```typescript 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](./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][license-url]. [license-image]: https://img.shields.io/badge/license-MIT-blue.svg?style=flat [license-url]: LICENSE