9fd036d494
Added a little more detail in the README for the curious who wish to try it out
84 lines
2.3 KiB
Markdown
84 lines
2.3 KiB
Markdown
# LBRY File Format
|
|
|
|
The LBRY format is a multimedia-format designed to promote interoperability and transmission of complex digital media.
|
|
|
|
This repo contains some tools & libraries for working with `*.lbry` files.
|
|
|
|
## CLI Installation
|
|
|
|
Requires: [NodeJS](https://nodejs.org/en/download/), [Git](https://git-scm.com/downloads)
|
|
|
|
Windows: `npm i -g https://github.com/lbryio/lbry-format`
|
|
Mac / Linux: `sudo npm i -g https://github.com/lbryio/lbry-format`
|
|
|
|
Once installed, run `lbry-format --help`
|
|
|
|
## CLI Usage
|
|
|
|
`lbry-format pack ./sourceDirectory ./outputPackage.lbry`
|
|
|
|
## What It's For
|
|
A lbry-format file is a compressed web site, much like a zip file. More specifically, it's a directory of files individually zipped with Zstandard, then collected into a tar archive.
|
|
|
|
It is recognized and launched by the LBRY-desktop app to enable rich, interactive media in the client.
|
|
|
|
When the LBRY desktop app encounters the .lbry extension, and the user presses "play," it decompresses the .lbry file, launches a sandboxed web server in the background, and 'serves up' this file like a real web server might.
|
|
|
|
This enables a lot of possibilities. To see what is currently possible with this format, check out the LBRY channel [@OpenSourceGames](https://open.lbry.io/@OpenSourceGames#e8fed337dc4ee260f4bcfa6d24ae1e4dd75c2fb3).
|
|
|
|
There are more restrictions to a .lbry archive than normal websites, because of the security issues and the fact that it's not running on a domain.
|
|
|
|
## Name
|
|
|
|
- Name Format: `*.lbry`
|
|
- Character Set: `UTF-8`
|
|
- Extension: `lbry`
|
|
|
|
## Metadata
|
|
|
|
- Media Type: `application/x-lbry`
|
|
|
|
## Container
|
|
|
|
- Compression: `Zstandard`
|
|
- Archival: `tar`
|
|
|
|
## Contents
|
|
|
|
### Descriptor
|
|
|
|
- Format: `JSON`, `UTF-8`
|
|
|
|
# lbry-format
|
|
|
|
## Requirements
|
|
|
|
- Node.js v11.6.0 (see https://nodejs.org/docs/v11.6.0/api/esm.html)
|
|
|
|
## Usage
|
|
|
|
**WARNING:** These method signatures will change as the `JSON` `Descriptor` is finalized.
|
|
|
|
Install `npm i https://github.com/lbryio/lbry-format.git`
|
|
|
|
### Pack
|
|
```
|
|
const lbryFormat = require('lbry-format');
|
|
|
|
// Pack `./` to `package.lbry`
|
|
lbryFormat.packDirectory('./', {
|
|
fileName: 'package.lbry',
|
|
});
|
|
|
|
```
|
|
|
|
### Unpack
|
|
```
|
|
const lbryFormat = require('lbry-format');
|
|
|
|
// Unpack `package.lbry` to `./`
|
|
lbryFormat.unpackDirectory('./', {
|
|
fileName: 'package.lbry',
|
|
});
|
|
|
|
```
|