Giter Club home page Giter Club logo

pickleparser's Introduction

Pickle Parser

NPM Version Unit Test Demo License

A pure Javascript implemented parser for Python pickle format

Features

  • Fully supports Pickle protocol version 0~5 opcodes.
  • Pure Typescript implemented.
  • Provides ParserOptions to customize Unpickling.
  • Supports Browser.
  • Supports Node.js.
  • Provides tool to convert pickle file to JSON.

Supported Protocol Version

For more details, see: Supported Opcodes

Demo

Online Pickle to JSON Convertor

Installation

$ npm install pickleparser

Usage

Node.js

import fs from 'node:fs/promises';
import path from 'node:path';
import { Parser } from 'pickleparser';

async function unpickle(fname: string) {
    const pkl = await fs.readFile(path.join(fname), 'binary');
    const buffer = Buffer.from(pkl, 'binary');
    const parser = new Parser();
    return parser.parse(buffer);
}

const obj = await unpickle('pickled.pkl');
console.log(obj);

Browser

const fileSelector = document.getElementById('file_selector');
const jsonResultPreviewer = document.getElementById('json_result_previewer');

fileSelector.addEventListener('change', function (e) {
    const file = fileSelector.files[0];
    const reader = new FileReader();

    reader.onload = function (event) {
        const buffer = new Uint8Array(event.target.result);
        const parser = new pickleparser.Parser();
        const obj = parser.parse(buffer);
        const json = JSON.stringify(obj, null, 4);
        jsonResultPreviewer.innerText = json;
    }

    reader.readAsArrayBuffer(file);
});

Terminal

npx pickleparser file.pkl file.json
# or
npm i pickleparser -g
pickletojson file.pkl file.json

License

MIT

pickleparser's People

Contributors

ewfian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

pickleparser's Issues

Can this lib pickle "jsonable" objects made of primitives?

Thanks for your great projects!

Can this library create a 'pickled' string or bytes array from a javascript object made of primitive data types ?
(with sensible type conversion such as arrays as lists, and objects as dicts, undefined/null as None, etc... )

How can I build a pickle file instead of read from pickle ?

Hi, I have a node backend and I want to send a message to python masonite queue backend and expect to masonites to read it as a pickle object

I want to make a Node class to become a pickle object to send it via AMQP protocol to python

Why one should consider to use pickleparser ?

Thank you for your library!

I am currently choosing an unpickle implementation for the browser.

I am interested in why you decided to create a separate library instead of using existing ones. I found node-jpickle and some others which are older.

It would be nice to have a section in the documentation explaining why it's better. Of course, it's new now, but all the older libs also were new and supported some time back.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.