npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

messenger-personal-api

v1.0.0

Published

Hacky solution for receiving messages on personal accounts

Downloads

1

Readme

Why hacky? messenger-personal-api is an Electron app that extracts messages from Messenger.com's DOM... so not optimal, but working solution.

Install

npm install messenger-personal-api --save

You will need to have electron package installed as well.

Getting Started

import { MessengerAPI } from 'messenger-personal-api'

const api = new MessengerAPI({
    email: '[email protected]',
    pass: 'SuperSecretPassword'
})

api.start()

api.on('new_message', message => {
    console.log(`${message.sender}: ${message.content}`)
})

Run

electron .

You will need to run your program as an Electron app.

TIP: If you need the API for non-electron app, you can build a very simple http(s) server on Electron and let it send POST requests to your app.

API in Detail

New instance of API

If you initialize the API with both e-mail and password, user will be logged in automatically.

If you only fill in the e-mail, you'll be prompted to type in your password securely via HTTPS connection to Messenger.com.

Password encryption will hopefully be implemented in future versions of the API.

const api = new MessengerAPI({
    email: '[email protected]',
    // Hard-code your password only if
    // you don't distribute this piece of app
    // where it could get decompiled
    pass: 'SuperSecretPassword'
})

Start the API

// Simply start the API
api.start()

// Or start and listen to useful messages
// (e.g. logged in, couldn't log in etc)
api.start((err, message) => {
    if (err) {
        console.error(err.content)
    } else {
        console.log(message)
    }
})

Listen to new messages

api.on('new_message', message => {
    // new message object
})

Messages Format

All messages are sent to you as objects, e.g.:

{
    type: 'text',
    date: 1496966580162, // Date in UTC format
    sender: 'Your Friend',
    sender_id: '1032752459',
    content: 'Chill out my friend 😎'
}

Message type:

text

Returns plain text with emojis in content

image

Returns URL of the image/s in content

video

Returns URL of the video in content

attachment

Returns URL of the attached file in content

thumbs_up

Returns 👍 in content

sticker

Returns URL of the sticker in content

huge_emoji

Returns URL of the inflated emoji in content

gif

Returns the GIF URL in content

link

Returns the link from featured tab in content

voice

Currently can't retrieve the actual message.

Contribute

These are some points that need few hours of work:

  • ability to send messages
  • leave DOM as much as possible (during final debugging, I found out messages are also passed to front-end in server response inside thread_info.php)
  • genuinely secure way to store password in configuration

So if you're awesome and want to contribute to this project, go fork, clone and send pull requests!

Shout-out!

Thanks to Caprine for DOM-wrapped-in-Electron app inspiration.

Disclaimer

This is a third-party application and is not affiliated with Facebook.