dme

destiny-manifest-extractor

Easily extract the Destiny API manifest.

Showing:

Popularity

Downloads/wk

5

GitHub Stars

0

Maintenance

Last Commit

4yrs ago

Contributors

0

Package

Dependencies

5

Size (min+gzip)

466.3KB

License

MIT

Type Definitions

Tree-Shakeable

No?

Categories

Readme

Easily extract the Destiny API manifest.

Installation

Install with npm.

npm install destiny-manifest-extractor

Documentation

Usage

The extract function will download the sqlite databases that contain the destiny manifest (in one or more languages) and pass them to a processing function you provide.

const extract = require('destiny-manifest-extractor');

extract({
    langs: ['en'],
    apiKey: 'your-api-key',
    processor: function(lang, entry) {
        console.log(entry);
    }
})
.then(() => console.log('done'));

The database files will be downloaded to disk and require (at time of writing) ~57MB of space if all possible languages are included. The extract process does not delete the database files after completion.

Bundled processors

Two processors come with the extract package as examples or to be used as is.

file-tree

Converts each manfest entry into a json file and saves them to a file tree based on the language, table name, and primary hash/key of the entry:

file-tree/
└── en
    ├── DestinyActivityBundleDefinition
    │   ├── 1005705920.json
    │   ├── 1019616175.json
    (...)

Usage

let fileTree = require('destiny-manifest-extractor/file-tree');
let tree = fileTree('root/directory/path');
extract({
    langs: ['en'],
    apiKey: 'your-api-key',
    processor: tree.processor
})
.then(() => tree.waitDone())
.then(() => console.log('done'));

The destiny manifest contains ~25,000 entries per language. The file tree processor by default limits itself to a maximum of 100 active writes at a time to avoid running out of file descriptors. This limit can be changed by passing a second argument when creating the processor:

let fileTree = require('destiny-manifest-extractor/file-tree');
let tree = fileTree('root/directory/path', 1000);

plumbing

And extractor based on the excellent destiny.plumbing (joshhunt/destinyPlumbing). This produces one json file per table and additionally divides the item definitions table up by item type:

plumbing/
├── en
│   ├── items
│   │   ├── Artifacts.json
│   │   ├── Bounties.json
│   │   ├── ChestArmor.json
│   │   ├── ClassArmor.json
│   │   (...)
│   └── raw
│       ├── DestinyActivityBundleDefinition.json
│       ├── DestinyActivityCategoryDefinition.json
│       ├── DestinyActivityDefinition.json
│       ├── DestinyActivityModeDefinition.json
│       (...)
└── index.json

Usage

let plumbing = require('destiny-manifest-extractor/plumbing')('root/directory/path');
extract({
    langs: ['en'],
    apiKey: 'your-api-key',
    processor: plumbing.processor
})
.then(() => plumbing.write());
.then(() => console.log('done'));

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100
No reviews found
Be the first to rate

Alternatives

No alternatives found

Tutorials

No tutorials found
Add a tutorial