Hi,
I've lost a number which my friend gave in facebook chat. But I couldn't remember when he gave it. So, rather than checking all those previous messages manually, I ended up writing a program which would search for a string in facebook chat history.
So, there are three steps involved in this program:
1. Find the id of that conversation
2. Request to the graph api
3. Iterate through the paged responses
To accomplish the first task, send a request to 'user/inbox' node of the graph api. You would find a list of conversations each with it's own id. Find your desired one. It's possible to come up with a program to find it automatically, however, I'm gonna settle for this much for now.
Now, define these three functions:
I've lost a number which my friend gave in facebook chat. But I couldn't remember when he gave it. So, rather than checking all those previous messages manually, I ended up writing a program which would search for a string in facebook chat history.
So, there are three steps involved in this program:
1. Find the id of that conversation
2. Request to the graph api
3. Iterate through the paged responses
To accomplish the first task, send a request to 'user/inbox' node of the graph api. You would find a list of conversations each with it's own id. Find your desired one. It's possible to come up with a program to find it automatically, however, I'm gonna settle for this much for now.
Now, define these three functions:
import requests
from facepy import GraphAPI
import re
def search_in_message(message):
for m in message['data']:
try:
matched_obj = re.match('(\d+)', m['message'], flags=0)
if matched_obj:
print m['message']
print m['created_time']
print matched_obj.group()
except KeyError:
continue
def get_message_from_graph(graph, stream_id, limit, since):
return graph.get(stream_id + '/comments?limit='+str(limit)+'&since='+str(since))
def get_next_page(next_url):
return requests.get(next_url).json()
Each methods should be self explanatory. However, we can achieve different results, like a specific number, pattern, string in the messages just by modifying the search_in_message function. I've given it the shape to find numbers in the conversation.
The later parts are pretty straightforward:
token = 'your_secret_token'
graph = GraphAPI(token)
paged_messages = get_message_from_graph(graph, 'your_conversation_id', your_limit, your_since_timestamp)
while paged_messages['paging']['next']:
print paged_messages['paging']['next']
search_in_message(paged_messages)
paged_messages = get_next_page(paged_messages['paging']['next'])
No comments:
Post a Comment