Friday 28 November 2014

Doing Technical Lead stuff - Solving the Facebook Group archiving problem

As we do 99% of our collaboration on a private Kingston Uni protected Facebook Group page, we were concerned that we would not be able to show how we were working together as a team.

As such we decided to follow the good examples set by the other teams and move over to a blog based communication system. Even though the Facebook Group page was easier as it updated quickly in real time, for tracking purposes it was not ideal.

The problem however was that even after we switched we still had 3 weeks worth of collaboration listed on the Facebook group page. We had to find a way to archive this data.

Luke selflessly volunteered to manually copy the data from the group page but this seemed like batch work to me and something we could script.

I spent a few minutes tonight looking at the Facebook developer page and looking into the Graph API. I used this API along with the online Explorer Facebook provides to write a query. This allowed me to pull down all the data from the group page. Video's and Images may have to be manually re-linked as they are currently linked to the group page.

The first thing I had to do was get an access token to gain access to my groups. Using the explorer made this easy:



The link to the Graph API explorer can be found here: https://developers.facebook.com/tools/explorer

I messed around with the search queries using good old API references: https://developers.facebook.com/docs/graph-api/reference/v2.2/group/

I then worked out the right query to pull the data I required.

At first I used: me?fields=id,name, groups

This gave me a list of my ID and name followed by all my groups along with group ID numbers.

I could then use the Astronautics Simulation ID (
"id": "584844028286125") to write the following query: 584844028286125/feed?until=now.


Which spat out all the raw data for archiving.

Not ideal as the data in a raw form:

[...]
{
  "data": [
    {
      "id": "xxxxxx",
      "from": {
        "id": "xxxxxx",
        "name": "Deon Cresswell"
      },
      "to": {
        "data": [
          {
            "name": "Astronautics Simulation",
            "id": "xxxxx"
          }
        ]
      },
      "message": "Sketch is now updated and on Dropbox",
      "actions": [ [...]


but it beats spending an hour or so copy/pasting!

Other tasks I did tonight (will update in more detail tomorrow):

  • Replaced coordinate tracking system in the Tracking prototype with a Raycast, the engine does most of the brunt work now.
  • Started work on a texture replacement mechanic (although I'm still looking to see if this is the best solution)

No comments:

Post a Comment