Giter Site home page Giter Site logo

facebook-export's Introduction

facebook-export

Export data from your Facebok groups.

NPM

Install

This program comes with two executables: facebook-export which handles downloading and saving your information from Facebook and facebook-analyze which provides several ways for you to inspect and analyze your data.

To install:

First install node.js.

Then run in your terminal:

npm install -g facebook-export

Export data from Facebook.

To access your data through the Facebook API, Facebook requires you to use an access token. This must be included when you run facebook-export. The easiest way I've found is to grab one from Facebook's API explorer https://developers.facebook.com/tools/explorer

There click on the "Get Access Token" button and make sure you check the "user_groups" data permission. Once you've approved this app, copy the long random alphanumeric Access Token. We'll use it next to export your Facebook data.

screen shot 2014-05-16 at 4 45 40 pm

screen shot 2014-05-16 at 4 46 06 pm

You need to know the Group ID of the group you wish to export data from. To see a list of all your groups and their Group IDs run:

facebook-export -a <YOUR-ACCESS-TOKEN> -l

This should return a list something like:

FACEBOOK GROUPS
* The Vinyl Club [122351275176234206]
* The Stanford 2nd Ward [1881523481214555]
* Frisbee [1462342888234234]
* etc.

To export the information (posts and members) for one of these groups run:

facebook-export -a <ACCESS-TOKEN> -g <GROUP-ID> -d

The downloaded information will be saved in LevelDB DBs at ~/.facebook-export

Playing with your data

Once you've saved your information locally, you'll probably want to have a look at it. You'll use the facebook-analyze command for this.

To get a raw dump of the JSON encoded information from the API run:

facebook-analyze -g <GROUP-ID> -s

This will write all the group's posts to STDOUT.

You can filter posts by the year and month they were created in. E.g. to grab all posts from 2013 and save them to a file run:

facebook-analyze -g <GROUP-ID> -y 2013 -s >> posts_2013.json

I've also added a script which calculates an activity score for each member of the group. Members get points when they post/comment/like. To emphasize more recent activity, points have a 1/2 life of six months. Generate the activity chart by running:

facebook-analyze -g <GROUP-ID> -a

facebook-export's People

Contributors

kyleamathews avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

facebook-export's Issues

can't pull all the history

Can't pull all the history

in the end it gives me error:

fetched undefined posts. The oldest post fetched was last updated: Thursday, August 4th 2016, 4:45:36 pm
/usr/local/lib/node_modules/facebook-export/lib/fetch_posts.coffee:40
      for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
                               ^
TypeError: Cannot read property 'length' of undefined
    at Request._callback (/usr/local/lib/node_modules/facebook-export/lib/fetch_posts.coffee:40:32)
    at Request.self.callback (/usr/local/lib/node_modules/facebook-export/node_modules/request/request.js:123:22)
    at Request.emit (events.js:110:17)
    at Request.<anonymous> (/usr/local/lib/node_modules/facebook-export/node_modules/request/request.js:893:14)
    at Request.emit (events.js:129:20)
    at IncomingMessage.<anonymous> (/usr/local/lib/node_modules/facebook-export/node_modules/request/request.js:844:12)
    at IncomingMessage.emit (events.js:129:20)
    at _stream_readable.js:908:16
    at process._tickCallback (node.js:355:11)

SyntaxError: Unexpected end of input

Getting a syntax error after a couple of iterations. I can't recreate it consistently, it happens at random.

fetched 99 posts. The oldest post fetched was last updated: Monday, June 15th 2015, 10:42:47 am
fetched 99 posts. The oldest post fetched was last updated: Sunday, June 14th 2015, 5:48:46 pm
fetched 99 posts. The oldest post fetched was last updated: Saturday, June 13th 2015, 10:54:20 pm
fetched 98 posts. The oldest post fetched was last updated: Saturday, June 13th 2015, 11:51:45 am

SyntaxError: Unexpected end of input
    at Object.parse (native)
    at Request._callback (/usr/local/lib/node_modules/facebook-export/lib/fetch_posts.coffee:28:20)
    at Request.self.callback (/usr/local/lib/node_modules/facebook-export/node_modules/request/request.js:123:22)
    at Request.emit (events.js:98:17)
    at Request.<anonymous> (/usr/local/lib/node_modules/facebook-export/node_modules/request/request.js:893:14)
    at Request.emit (events.js:117:20)
    at IncomingMessage.<anonymous> (/usr/local/lib/node_modules/facebook-export/node_modules/request/request.js:844:12)
    at IncomingMessage.emit (events.js:117:20)
    at _stream_readable.js:944:16
    at process._tickCallback (node.js:442:13)

Using -d only downloads a couple recent posts

On my group, it only downloaded 3 posts:

$ facebook-export -a $FACEBOOK_TOKEN -g 123456789 -d

Exporting posts and members list for the group "Some Group"


fetched 3 posts. The oldest post fetched was last updated: Wednesday, October 22nd 2014, 8:14:11 pm
fetched 1 posts. The oldest post fetched was last updated: Monday, September 29th 2014, 7:00:15 pm
fetched 0 posts. The oldest post fetched was last updated: Tuesday, November 18th 2014, 7:26:10 pm

However, using -s 1 works for all posts:

$ facebook-export -a $FACEBOOK_TOKEN -g 123456789 -s 1

Exporting posts and members list for the group "Some Group"


fetched 88 posts. The oldest post fetched was last updated: Friday, June 14th 2013, 9:08:52 pm
fetched 94 posts. The oldest post fetched was last updated: Monday, December 17th 2012, 10:24:02 pm

et cetera...

Either the docs need to be updated or the -d option needs to be modified to download all posts.

The stdout data for likes and comments seems to be incomplete

first of all, thanks for the great work! Saved me tons of time.
I realized that the default setting doesn't result in complete data for the likes and comments, it will ask you to page through the likes and comments if the post's likes/comments exceeds a certain number. Please see the stack post for the work-around.
http://stackoverflow.com/questions/6984526/facebook-graph-api-get-like-count-on-page-group-photos

edit:
nvm, I just saw your comment in fetch_posts.coffee, please close this issue

only extract 25 groups & TypeError: Cannot read property 'name' of undefined error in facebook-export package

error log.txt

Hi Mathews,

it's fresh idea to download and save information from Facebook groups in such a method, nice project, but after trying several times, i got 2 points stuck, as beneath:

  1. tried with 2 tokens, both with only 25 groups can be extracted, but essentially i have more than 100 groups that i'm in; what's the possible reasons?

  2. i've tried several random groups(i'm in, but not administrated) with the command: facebook-export -a -g -d, but seems like all with the same error prompt, log as attached, any reason here?

Thank you a lot for taking the time to investigation.

Only 25 likes by post are retrieved

I used
facebook-export -a XXX -g 164688833612008 -d

And I found that it retrieves data for only 25 likes by post, even if there were more.

As I understand to get more likes it should use paging.
Is it possible to add a such function?

gyp ERR! stack Error: `make` failed with exit code: 2

When I install the library I receive this error:

> npm install -g facebook-export
npm WARN deprecated [email protected]: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)
npm WARN deprecated [email protected]: CoffeeScript on NPM has moved to "coffeescript" (no hyphen)
npm WARN deprecated [email protected]: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated [email protected]: Use uuid module instead
npm WARN deprecated [email protected]: This module moved to @hapi/hawk. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.
npm WARN deprecated [email protected]: ReDoS vulnerability parsing Set-Cookie https://nodesecurity.io/advisories/130
npm WARN deprecated [email protected]: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
npm WARN deprecated [email protected]: This module moved to @hapi/sntp. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.
npm WARN deprecated [email protected]: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
npm WARN deprecated [email protected]: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
/usr/local/bin/facebook-export -> /usr/local/lib/node_modules/facebook-export/bin/export.js
/usr/local/bin/facebook-analyze -> /usr/local/lib/node_modules/facebook-export/bin/analyze.js

> [email protected] install /usr/local/lib/node_modules/facebook-export/node_modules/leveldown
> prebuild-install || node-gyp rebuild

prebuild-install WARN install No prebuilt binaries found (target=12.18.3 runtime=node arch=x64 platform=darwin)
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/db/builder.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/db/db_impl.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/db/db_iter.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/db/filename.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/db/dbformat.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/db/log_reader.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/db/log_writer.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/db/memtable.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/db/repair.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/db/table_cache.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/db/version_edit.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/db/version_set.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/db/write_batch.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/helpers/memenv/memenv.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/port/port_posix_sse.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/table/block.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/table/block_builder.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/table/filter_block.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/table/format.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/table/iterator.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/table/merger.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/table/table.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/table/table_builder.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/table/two_level_iterator.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/util/arena.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/util/bloom.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/util/cache.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/util/coding.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/util/comparator.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/util/crc32c.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/util/env.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/util/filter_policy.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/util/hash.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/util/logging.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/util/options.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/util/status.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/port/port_posix.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.20/util/env_posix.o
  LIBTOOL-STATIC Release/leveldb.a
  CXX(target) Release/obj.target/snappy/deps/snappy/snappy-1.1.4/snappy-sinksource.o
  CXX(target) Release/obj.target/snappy/deps/snappy/snappy-1.1.4/snappy-stubs-internal.o
  CXX(target) Release/obj.target/snappy/deps/snappy/snappy-1.1.4/snappy.o
  LIBTOOL-STATIC Release/snappy.a
  CXX(target) Release/obj.target/leveldown/src/batch.o
In file included from ../src/batch.cc:3:
In file included from ../../nan/nan.h:192:
../../nan/nan_maybe_43_inl.h:112:15: error: no member named 'ForceSet' in 'v8::Object'
  return obj->ForceSet(isolate->GetCurrentContext(), key, value, attribs);
         ~~~  ^
In file included from ../src/batch.cc:3:
In file included from ../../nan/nan.h:197:
In file included from ../../nan/nan_converters.h:67:
../../nan/nan_converters_43_inl.h:22:1: warning: 'ToBoolean' is deprecated: ToBoolean can never throw. Use Local version. [-Wdeprecated-declarations]
X(Boolean)
^
../../nan/nan_converters_43_inl.h:18:12: note: expanded from macro 'X'
      val->To ## TYPE(v8::Isolate::GetCurrent()->GetCurrentContext())          \
           ^
<scratch space>:218:1: note: expanded from here
ToBoolean
^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:2663:3: note: 'ToBoolean' has been explicitly marked deprecated here
  V8_DEPRECATED("ToBoolean can never throw. Use Local version.",
  ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8config.h:328:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
In file included from ../src/batch.cc:3:
In file included from ../../nan/nan.h:197:
In file included from ../../nan/nan_converters.h:67:
../../nan/nan_converters_43_inl.h:40:1: warning: 'BooleanValue' is deprecated: BooleanValue can never throw. Use Isolate version. [-Wdeprecated-declarations]
X(bool, Boolean)
^
../../nan/nan_converters_43_inl.h:37:15: note: expanded from macro 'X'
  return val->NAME ## Value(isolate->GetCurrentContext());                     \
              ^
<scratch space>:225:1: note: expanded from here
BooleanValue
^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:2701:3: note: 'BooleanValue' has been explicitly marked deprecated here
  V8_DEPRECATED("BooleanValue can never throw. Use Isolate version.",
  ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8config.h:328:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
In file included from ../src/batch.cc:3:
In file included from ../../nan/nan.h:198:
In file included from ../../nan/nan_new.h:189:
../../nan/nan_implementation_12_inl.h:103:42: error: no viable conversion from 'v8::Isolate *' to 'Local<v8::Context>'
  return scope.Escape(v8::Function::New( isolate
                                         ^~~~~~~
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:186:7: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'v8::Isolate *' to 'const v8::Local<v8::Context> &' for 1st argument
class Local {
      ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:186:7: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'v8::Isolate *' to 'v8::Local<v8::Context> &&' for 1st argument
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:190:13: note: candidate template ignored: could not match 'Local<type-parameter-0-0>' against 'v8::Isolate *'
  V8_INLINE Local(Local<S> that)
            ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:4276:22: note: passing argument to parameter 'context' here
      Local<Context> context, FunctionCallback callback,
                     ^
In file included from ../src/batch.cc:3:
In file included from ../../nan/nan.h:198:
In file included from ../../nan/nan_new.h:189:
../../nan/nan_implementation_12_inl.h:337:37: error: too few arguments to function call, expected 2, have 1
  return v8::StringObject::New(value).As<v8::StringObject>();
         ~~~~~~~~~~~~~~~~~~~~~      ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:5531:3: note: 'New' declared here
  static Local<Value> New(Isolate* isolate, Local<String> value);
  ^
In file included from ../src/batch.cc:3:
../../nan/nan.h:834:18: warning: 'MakeCallback' is deprecated: Use MakeCallback(..., async_context) [-Wdeprecated-declarations]
    return node::MakeCallback(
                 ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/node.h:181:1: note: 'MakeCallback' has been explicitly marked deprecated here
NODE_DEPRECATED("Use MakeCallback(..., async_context)",
^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/node.h:101:20: note: expanded from macro 'NODE_DEPRECATED'
    __attribute__((deprecated(message))) declarator
                   ^
In file included from ../src/batch.cc:3:
../../nan/nan.h:849:18: warning: 'MakeCallback' is deprecated: Use MakeCallback(..., async_context) [-Wdeprecated-declarations]
    return node::MakeCallback(
                 ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/node.h:174:1: note: 'MakeCallback' has been explicitly marked deprecated here
NODE_DEPRECATED("Use MakeCallback(..., async_context)",
^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/node.h:101:20: note: expanded from macro 'NODE_DEPRECATED'
    __attribute__((deprecated(message))) declarator
                   ^
In file included from ../src/batch.cc:3:
../../nan/nan.h:864:18: warning: 'MakeCallback' is deprecated: Use MakeCallback(..., async_context) [-Wdeprecated-declarations]
    return node::MakeCallback(
                 ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/node.h:167:1: note: 'MakeCallback' has been explicitly marked deprecated here
NODE_DEPRECATED("Use MakeCallback(..., async_context)",
^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/node.h:101:20: note: expanded from macro 'NODE_DEPRECATED'
    __attribute__((deprecated(message))) declarator
                   ^
In file included from ../src/batch.cc:3:
../../nan/nan.h:911:44: error: no matching member function for call to 'ToString'
      v8::Local<v8::String> string = from->ToString();
                                     ~~~~~~^~~~~~~~
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:2668:44: note: candidate function not viable: requires single argument 'context', but no arguments were provided
  V8_WARN_UNUSED_RESULT MaybeLocal<String> ToString(
                                           ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:2684:31: note: candidate function not viable: requires single argument 'isolate', but no arguments were provided
                Local<String> ToString(Isolate* isolate) const);
                              ^
In file included from ../src/batch.cc:3:
../../nan/nan.h:921:37: error: cannot initialize a parameter of type 'v8::Isolate *' with an lvalue of type 'char *'
        length_ = string->WriteUtf8(str_, static_cast<int>(len), 0, flags);
                                    ^~~~
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:2878:26: note: passing argument to parameter 'isolate' here
  int WriteUtf8(Isolate* isolate, char* buffer, int length = -1,
                         ^
In file included from ../src/batch.cc:3:
../../nan/nan.h:1473:31: warning: 'MakeCallback' is deprecated: Use MakeCallback(..., async_context) [-Wdeprecated-declarations]
    return scope.Escape(node::MakeCallback(
                              ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/node.h:181:1: note: 'MakeCallback' has been explicitly marked deprecated here
NODE_DEPRECATED("Use MakeCallback(..., async_context)",
^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/node.h:101:20: note: expanded from macro 'NODE_DEPRECATED'
    __attribute__((deprecated(message))) declarator
                   ^
In file included from ../src/batch.cc:3:
../../nan/nan.h:1533:28: warning: 'Set' is deprecated: Use maybe version [-Wdeprecated-declarations]
    New(persistentHandle)->Set(New(key).ToLocalChecked(), value);
                           ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:3498:3: note: 'Set' has been explicitly marked deprecated here
  V8_DEPRECATED("Use maybe version",
  ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8config.h:328:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
In file included from ../src/batch.cc:3:
../../nan/nan.h:1539:28: warning: 'Set' is deprecated: Use maybe version [-Wdeprecated-declarations]
    New(persistentHandle)->Set(key, value);
                           ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:3498:3: note: 'Set' has been explicitly marked deprecated here
  V8_DEPRECATED("Use maybe version",
  ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8config.h:328:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
In file included from ../src/batch.cc:3:
../../nan/nan.h:1545:28: warning: 'Set' is deprecated: Use maybe version [-Wdeprecated-declarations]
    New(persistentHandle)->Set(index, value);
                           ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:3507:3: note: 'Set' has been explicitly marked deprecated here
  V8_DEPRECATED("Use maybe version",
  ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8config.h:328:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
In file included from ../src/batch.cc:3:
../../nan/nan.h:1551:32: warning: 'Get' is deprecated: Use maybe version [-Wdeprecated-declarations]
        New(persistentHandle)->Get(New(key).ToLocalChecked()));
                               ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:3553:3: note: 'Get' has been explicitly marked deprecated here
  V8_DEPRECATED("Use maybe version", Local<Value> Get(Local<Value> key));
  ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8config.h:328:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
In file included from ../src/batch.cc:3:
../../nan/nan.h:1557:48: warning: 'Get' is deprecated: Use maybe version [-Wdeprecated-declarations]
    return scope.Escape(New(persistentHandle)->Get(key));
                                               ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:3553:3: note: 'Get' has been explicitly marked deprecated here
  V8_DEPRECATED("Use maybe version", Local<Value> Get(Local<Value> key));
  ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8config.h:328:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
In file included from ../src/batch.cc:3:
../../nan/nan.h:1562:48: warning: 'Get' is deprecated: Use maybe version [-Wdeprecated-declarations]
    return scope.Escape(New(persistentHandle)->Get(index));
                                               ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:3557:3: note: 'Get' has been explicitly marked deprecated here
  V8_DEPRECATED("Use maybe version", Local<Value> Get(uint32_t index));
  ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8config.h:328:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
In file included from ../src/batch.cc:3:
In file included from ../../nan/nan.h:2222:
../../nan/nan_object_wrap.h:24:25: error: no member named 'IsNearDeath' in 'Nan::Persistent<v8::Object, v8::NonCopyablePersistentTraits<v8::Object> >'
    assert(persistent().IsNearDeath());
           ~~~~~~~~~~~~ ^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/assert.h:93:25: note: expanded from macro 'assert'
    (__builtin_expect(!(e), 0) ? __assert_rtn(__func__, __FILE__, __LINE__, #e) : (void)0)
                        ^
In file included from ../src/batch.cc:3:
In file included from ../../nan/nan.h:2222:
../../nan/nan_object_wrap.h:67:18: warning: 'MarkIndependent' is deprecated: Weak objects are always considered independent. Use TracedGlobal when trying to use EmbedderHeapTracer. Use a strong handle when trying to keep an object
      alive. [-Wdeprecated-declarations]
    persistent().MarkIndependent();
                 ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:566:3: note: 'MarkIndependent' has been explicitly marked deprecated here
  V8_DEPRECATED(
  ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8config.h:328:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
In file included from ../src/batch.cc:3:
In file included from ../../nan/nan.h:2222:
../../nan/nan_object_wrap.h:124:26: error: no member named 'IsNearDeath' in 'Nan::Persistent<v8::Object, v8::NonCopyablePersistentTraits<v8::Object> >'
    assert(wrap->handle_.IsNearDeath());
           ~~~~~~~~~~~~~ ^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/assert.h:93:25: note: expanded from macro 'assert'
    (__builtin_expect(!(e), 0) ? __assert_rtn(__func__, __FILE__, __LINE__, #e) : (void)0)
                        ^
In file included from ../src/batch.cc:5:
In file included from ../src/database.h:18:
../src/leveldown.h:16:17: error: no matching member function for call to 'ToObject'
  return (!obj->ToObject().IsEmpty()
           ~~~~~^~~~~~~~
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:2672:44: note: candidate function not viable: requires single argument 'context', but no arguments were provided
  V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
                                           ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:2686:31: note: candidate function not viable: requires single argument 'isolate', but no arguments were provided
                Local<Object> ToObject(Isolate* isolate) const);
                              ^
In file included from ../src/batch.cc:5:
In file included from ../src/database.h:18:
../src/leveldown.h:17:39: error: no matching member function for call to 'ToObject'
    && node::Buffer::HasInstance(obj->ToObject()))
                                 ~~~~~^~~~~~~~
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:2672:44: note: candidate function not viable: requires single argument 'context', but no arguments were provided
  V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
                                           ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:2686:31: note: candidate function not viable: requires single argument 'isolate', but no arguments were provided
                Local<Object> ToObject(Isolate* isolate) const);
                              ^
In file included from ../src/batch.cc:5:
In file included from ../src/database.h:18:
../src/leveldown.h:18:33: error: no matching member function for call to 'ToObject'
    ? node::Buffer::Length(obj->ToObject())
                           ~~~~~^~~~~~~~
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:2672:44: note: candidate function not viable: requires single argument 'context', but no arguments were provided
  V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
                                           ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:2686:31: note: candidate function not viable: requires single argument 'isolate', but no arguments were provided
                Local<Object> ToObject(Isolate* isolate) const);
                              ^
In file included from ../src/batch.cc:5:
In file included from ../src/database.h:18:
../src/leveldown.h:19:12: error: no matching member function for call to 'ToString'
    : obj->ToString()->Utf8Length();
      ~~~~~^~~~~~~~
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:2668:44: note: candidate function not viable: requires single argument 'context', but no arguments were provided
  V8_WARN_UNUSED_RESULT MaybeLocal<String> ToString(
                                           ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:2684:31: note: candidate function not viable: requires single argument 'isolate', but no arguments were provided
                Local<String> ToString(Isolate* isolate) const);
                              ^
In file included from ../src/batch.cc:5:
In file included from ../src/database.h:18:
../src/leveldown.h:30:62: warning: 'Get' is deprecated: Use maybe version [-Wdeprecated-declarations]
    v8::Local<v8::Value> obj = Nan::New<v8::Object>(handle)->Get(Nan::New<v8::String>("obj").ToLocalChecked());
                                                             ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:3553:3: note: 'Get' has been explicitly marked deprecated here
  V8_DEPRECATED("Use maybe version", Local<Value> Get(Local<Value> key));
  ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8config.h:328:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
In file included from ../src/batch.cc:5:
../src/database.h:31:11: warning: 'Set' is deprecated: Use maybe version [-Wdeprecated-declarations]
    _obj->Set(Nan::New("obj").ToLocalChecked(), obj);
          ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:3498:3: note: 'Set' has been explicitly marked deprecated here
  V8_DEPRECATED("Use maybe version",
  ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8config.h:328:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
In file included from ../src/batch.cc:8:
../src/common.h:19:17: error: no matching member function for call to 'Has'
    && options->Has(key)
       ~~~~~~~~~^~~
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:3590:37: note: candidate function not viable: requires 2 arguments, but 1 was provided
  V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context,
                                    ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:3596:37: note: candidate function not viable: requires 2 arguments, but 1 was provided
  V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context, uint32_t index);
                                    ^
In file included from ../src/batch.cc:8:
../src/common.h:20:16: warning: 'Get' is deprecated: Use maybe version [-Wdeprecated-declarations]
    ? options->Get(key)->BooleanValue()
               ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:3553:3: note: 'Get' has been explicitly marked deprecated here
  V8_DEPRECATED("Use maybe version", Local<Value> Get(Local<Value> key));
  ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8config.h:328:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
In file included from ../src/batch.cc:8:
../src/common.h:20:26: error: no matching member function for call to 'BooleanValue'
    ? options->Get(key)->BooleanValue()
      ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:2699:8: note: candidate function not viable: requires single argument 'isolate', but no arguments were provided
  bool BooleanValue(Isolate* isolate) const;
       ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:2702:51: note: candidate function not viable: requires single argument 'context', but no arguments were provided
                V8_WARN_UNUSED_RESULT Maybe<bool> BooleanValue(
                                                  ^
In file included from ../src/batch.cc:8:
../src/common.h:30:17: error: no matching member function for call to 'Has'
    && options->Has(key)
       ~~~~~~~~~^~~
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:3590:37: note: candidate function not viable: requires 2 arguments, but 1 was provided
  V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context,
                                    ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:3596:37: note: candidate function not viable: requires 2 arguments, but 1 was provided
  V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context, uint32_t index);
                                    ^
In file included from ../src/batch.cc:8:
../src/common.h:31:17: warning: 'Get' is deprecated: Use maybe version [-Wdeprecated-declarations]
    && options->Get(key)->IsNumber()
                ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:3553:3: note: 'Get' has been explicitly marked deprecated here
  V8_DEPRECATED("Use maybe version", Local<Value> Get(Local<Value> key));
  ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8config.h:328:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
In file included from ../src/batch.cc:8:
../src/common.h:32:16: warning: 'Get' is deprecated: Use maybe version [-Wdeprecated-declarations]
    ? options->Get(key)->Uint32Value()
               ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:3553:3: note: 'Get' has been explicitly marked deprecated here
  V8_DEPRECATED("Use maybe version", Local<Value> Get(Local<Value> key));
  ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8config.h:328:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
In file included from ../src/batch.cc:8:
../src/common.h:32:38: error: too few arguments to function call, single argument 'context' was not specified
    ? options->Get(key)->Uint32Value()
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:2707:3: note: 'Uint32Value' declared here
  V8_WARN_UNUSED_RESULT Maybe<uint32_t> Uint32Value(
  ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8config.h:368:31: note: expanded from macro 'V8_WARN_UNUSED_RESULT'
#define V8_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
                              ^
../src/batch.cc:42:67: error: no matching member function for call to 'ToObject'
  Database* database = Nan::ObjectWrap::Unwrap<Database>(info[0]->ToObject());
                                                         ~~~~~~~~~^~~~~~~~
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:2672:44: note: candidate function not viable: requires single argument 'context', but no arguments were provided
  V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
                                           ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:2686:31: note: candidate function not viable: requires single argument 'isolate', but no arguments were provided
                Local<Object> ToObject(Isolate* isolate) const);
                              ^
../src/batch.cc:72:69: error: too few arguments to function call, single argument 'context' was not specified
    maybeInstance = Nan::NewInstance(constructorHandle->GetFunction(), 1, argv);
                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:6126:3: note: 'GetFunction' declared here
  V8_WARN_UNUSED_RESULT MaybeLocal<Function> GetFunction(
  ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8config.h:368:31: note: expanded from macro 'V8_WARN_UNUSED_RESULT'
#define V8_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
                              ^
../src/batch.cc:75:69: error: too few arguments to function call, single argument 'context' was not specified
    maybeInstance = Nan::NewInstance(constructorHandle->GetFunction(), 2, argv);
                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:6126:3: note: 'GetFunction' declared here
  V8_WARN_UNUSED_RESULT MaybeLocal<Function> GetFunction(
  ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8config.h:368:31: note: expanded from macro 'V8_WARN_UNUSED_RESULT'
#define V8_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
                              ^
../src/batch.cc:91:3: error: no matching member function for call to 'ToObject'
  LD_STRING_OR_BUFFER_TO_SLICE(key, keyBuffer, key)
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/leveldown.h:53:21: note: expanded from macro 'LD_STRING_OR_BUFFER_TO_SLICE'
  } else if (!from->ToObject().IsEmpty()                                       \
              ~~~~~~^~~~~~~~
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:2672:44: note: candidate function not viable: requires single argument 'context', but no arguments were provided
  V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
                                           ^
/Users/mf/Library/Caches/node-gyp/12.18.3/include/node/v8.h:2686:31: note: candidate function not viable: requires single argument 'isolate', but no arguments were provided
                Local<Object> ToObject(Isolate* isolate) const);
                              ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
18 warnings and 20 errors generated.
make: *** [Release/obj.target/leveldown/src/batch.o] Error 1
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/Cellar/node@12/12.18.3/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
gyp ERR! stack     at ChildProcess.emit (events.js:315:20)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
gyp ERR! System Darwin 20.3.0
gyp ERR! command "/usr/local/Cellar/node@12/12.18.3/bin/node" "/usr/local/Cellar/node@12/12.18.3/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /usr/local/lib/node_modules/facebook-export/node_modules/leveldown
gyp ERR! node -v v12.18.3
gyp ERR! node-gyp -v v5.1.0
gyp ERR! not ok 
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] install: `prebuild-install || node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/mf/.npm/_logs/2021-02-24T12_08_27_304Z-debug.log

I have tried reisntalling and updating xcode, but to no avail. I'm in doubt whether this is caused by unmaintained code, or an issue on my machine?

Member Activity Score Error

running: facebook-analyze -g <GROUP-ID> -a

gives me:

/usr/local/lib/node_modules/facebook-export/lib/calculate_member_activity.coffee:64
              return member.id === comment.from.id;
                                               ^
TypeError: Cannot read property 'id' of undefined
    at /usr/local/lib/node_modules/facebook-export/lib/calculate_member_activity.coffee:64:48
    at /usr/local/lib/node_modules/facebook-export/node_modules/underscore/underscore.js:159:21
    at Array.some (native)
    at _.some._.any (/usr/local/lib/node_modules/facebook-export/node_modules/underscore/underscore.js:208:59)
    at Function._.find._.detect (/usr/local/lib/node_modules/facebook-export/node_modules/underscore/underscore.js:158:5)
    at ReadStream.postsDb.createReadStream.on.on._results (/usr/local/lib/node_modules/facebook-export/lib/calculate_member_activity.coffee:63:27)
    at ReadStream.EventEmitter.emit (events.js:95:17)
    at ReadStream.<anonymous> (/usr/local/lib/node_modules/facebook-export/node_modules/levelup/node_modules/readable-stream/lib/_stream_readable.js:768:14)
    at ReadStream.EventEmitter.emit (events.js:92:17)
    at emitReadable_ (/usr/local/lib/node_modules/facebook-export/node_modules/levelup/node_modules/readable-stream/lib/_stream_readable.js:430:10)
    at emitReadable (/usr/local/lib/node_modules/facebook-export/node_modules/levelup/node_modules/readable-stream/lib/_stream_readable.js:426:5)
    at readableAddChunk (/usr/local/lib/node_modules/facebook-export/node_modules/levelup/node_modules/readable-stream/lib/_stream_readable.js:187:9)
    at ReadStream.Readable.push (/usr/local/lib/node_modules/facebook-export/node_modules/levelup/node_modules/readable-stream/lib/_stream_readable.js:149:10)
    at /usr/local/lib/node_modules/facebook-export/node_modules/levelup/lib/read-stream.js:94:12

Update Request

Ok so upon playing with this for a while i come to realise it was limiting the member dumping to only 25 members, this is because facebook using pagination even with their API

To remedy this simply open lib/fetch_members.coffee
navigate to the section of code that looks like this:
`module.exports = (program) ->

Explicitly list fields so can set comment limits to 999 which should fetch

all comments in one pass.

url = "https://graph.facebook.com/#{ program.group_id }/members?access_token=#{ program.accessToken }"
membersDb = levelup(config.dataDir + '/group_members_' + program.group_id, { valueEncoding: 'json' })
group_id = program.group_id
requestMembers(url)`

Then find the url line:
url = "https://graph.facebook.com/#{ program.group_id }/members?access_token=#{ program.accessToken }"
and change it to:
url = "https://graph.facebook.com/#{ program.group_id }/members?access_token=#{ program.accessToken }&limit=7500"

That is limited to display upto 7500 members so you can play with that number as you wish :)

limit 5

facebook-export -a TOKEN -l only gives me 5 groups, even though i'm at least in 10 groups. I think you need to use the pagination (e.g. the cursors) offered by the facebook api, because each request only gives at most 5 results.

Getting the replies made to a comment in a group's post

Hello.

The package it great but I would like to ask: is any way I can get the replies made to a comment? I mean, right now I can get post and comments but I cant get the replies made to the comments.

Is any way I can obtain the comments replies also?
Is any commad that can be execute to get the replies?
Can I modify files?
Which files are needed to be modify in order to get the query?

thank you

Sale post API

Facebook groups have a specific feature - Sale Post that allows to post items for sale. What about filtering returned items so we only get for sale posts or even how to check if the post is a for sale post or not in a Group? Thanks

Cannot read property 'length' of undefined

$ facebook-export -a APIKEY -g GROUPID -d

fetched 9 posts. The oldest post fetched was last updated: Monday, March 2nd 2015, 4:37:49 pm
fetched 9 posts. The oldest post fetched was last updated: Monday, March 2nd 2015, 1:18:40 pm
fetched 9 posts. The oldest post fetched was last updated: Sunday, March 1st 2015, 9:08:10 pm
fetched undefined posts. The oldest post fetched was last updated: Wednesday, March 4th 2015, 5:20:30 pm

TypeError: Cannot read property 'length' of undefined
at Request._callback (/usr/lib/node_modules/facebook-export/lib/fetch_posts.coffee:40:32)
at Request.self.callback (/usr/lib/node_modules/facebook-export/node_modules/request/request.js:123:22)
at Request.emit (events.js:98:17)
at Request. (/usr/lib/node_modules/facebook-export/node_modules/request/request.js:893:14)
at Request.emit (events.js:117:20)
at IncomingMessage. (/usr/lib/node_modules/facebook-export/node_modules/request/request.js:844:12)
at IncomingMessage.emit (events.js:117:20)
at _stream_readable.js:944:16
at process._tickCallback (node.js:442:13)

People with 2 surnames don't appear in the results

As the title says - if person has 2 surnames their posts are not pulled, they also don't appear in the members list.(I think it's facebook api bug, because they also don't show up in Graph API Explorer, but I can't report api bugs)

No such file or directory

Hi there,
During the process of installing facebook-export, I managed to get an access token, but… when I enter facebook-export -a -l (with the access token,of course), I get a 'No such file or directory'! Very frustrating.
Can you please help me with this?

No error when the API key is invalid or too old

The exporter just sends a message and exits with no error code which is quite inconvenient when interfacing it with bash scripts.

Example :

facebook-export -g ${GROUPID} -a ${FBTOKEN} -d &> /dev/null

if [ $? != 0 ]; then
	echo "Something went wrong while trying to get your posts."
	echo "Try re-running the script using a fresh API key :"
	echo "https://developers.facebook.com/tools/explorer"
	
	exit
fi

This won't exit with an error if an exception wasn't raised by the facebook-export.

commands errors unless '~/groupsMetaData' is populated by 'list' command.

Thanks for authoring this tool! I did find it rather confusing at first that I was getting errors. While I have used NPM and Node for a while, it's always frustrating when you hit a ton of errors. I ran into a bunch when just trying to install this tool from child packages. One I rolled back to node 5.5.0 I was finally able to get things to start running. However, I was just jumping to the command I wanted to run.

☺  facebook-export -a [my_token] -g [my_gpr_id] -d

However, this throws this error on first run, OR if you delete the '~/groupsMetaData' folder.

events.js:141
      throw er; // Unhandled 'error' event
      ^
OpenError: IO error: /Users/myuser/.facebook_export/groupsMetaData/LOCK: No such file or directory
    at /Users/myuser/.nvm/versions/node/v5.4.0/lib/node_modules/facebook-export/node_modules/levelup/lib/levelup.js:114:34

So, yes the workaround is, run this command first to generate a list:

facebook-export -a [my_token] -l

lock not found

on fresh install it complains that /Users/myuser/.facebook_export/groupsMetaData/LOCK was not found. fixed it with touch /Users/myuser/.facebook_export/groupsMetaData/LOCK

Members list

Hi!

I've got all of the program working, but I can't seem to find a way to just get the members and their ID numbers, other than going through the posts and copying them. Is there a way to do this?

Thanks!!

Rebecca

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.