Home Upgrade Search Memberlist Extras Hacker Tools Award Goals Help Wiki Contact

Python 

Facebook downloaded message searcher

Hello today I will share a facebook message praser/searcherDownload your facebook data (accountsettings->Download a copy of your Facebook data.)
this has basicly no use but it can be fun :D

after downloading the code, modify the message.htm a bit(rename to message.txt and remove the first bit of the html that doesnt contain any messages (till the first div with a class=thread)
after that your basicly ready :DD
PHP Code

<?php 
from html
.parser import HTMLParser
import os
.path
class FacebookMessage:
    
friendList=[]
    
metas=[False,False,False,False]
    
messages=[]
    
name=[]
    
def __init__(self):
        
        
file2=open("friends.txt","r",encoding="utf8")
        
friends=file2.read()
        
praser=MyHTMLParser()
        
praser.feed(friends)
        
        
self.main()
    
def find_alg(self,x,search,search_index,name_index):
        
        
location=self.friendList[x].lower().find(search[search_index].lower(),name_index,len(self.friendList[x]))
        
        if(
location!=-1 and search_index<len(search)-1):
            
self.find_alg(x,search,search_index+1,location)
        
elif(location!=-1):
            
self.searched.append(x)
            return
        else:
            return
    
def findr(self,search):
        
self.searched=[]
        for 
x in range(0,len(self.friendList)):
            
self.find_alg(x,search,0,0)
    
def get_messages(self,iduser):
        
        
file=open("messages.txt","r",encoding="utf8")
        
data=file.read()
        
self.name.append(self.friendList[iduser])
        print(
self.name[len(self.name)-1])
        
praser=MyHTMLParser2()
        
praser.feed(data)
        
file2=open("kiir.txt","a",encoding="utf8")
        for 
x in range(0, len(self.messages)):
            
file2.write(self.messages[x][0]+"\t"+self.messages[x][1]+"\t"+self.messages[x][2]+"\n")
        
##file2.write("*************************************\n\n\n")
        
file2.close()
        print(
"done")
        
self.main()
    
def kereses(self):
        
szoveg=input("mit keresel: ")
        
tipus=int(input("1=pontos\n2=paraméteres\n3=pontaltlan\n "))
        if 
tipus==2:
            
para1=int(input("pontosság: "))
            
para2=0
        
else:
            
para1=0
            para2
=0
        file
=open("kiir.txt","r",encoding="utf8")
        
readed=file.read()
        
firstt=readed.split("\n")
        
data=[]
        for 
x in range(0,len(firstt)):
            
            
data_temp=firstt[x].split("\t")
            if(
firstt[x]!="" and len(data_temp)>2):
                
self.finde(tipus,para1,para2,data_temp[2],szoveg,0,0)
                if(
self.keresesr):
                    
data.append(data_temp)
        print(
len(data))
        
file2=open("kiir2.txt","a",encoding="utf8")
        for 
x in range(0, len(data)):
            
file2.write(data[x][2]+"\n")
       
        
file2.close()
        
self.main()
    
def finde(self,tipus,para1,para2,szoveg,kereses,index_szoveg,index_keres):
        if(
tipus==1):
            
##pontos
            
location=szoveg.find(kereses)
            if(
location!=-1):
                
self.keresesr=True
                
return
            else:
                
self.keresesr=False
        elif
(tipus==2):
            if(
para1!=0):
                
valt=index_keres+para1
            
else:
                
valt=len(szoveg)
            
location=szoveg.lower().find(kereses.lower()[index_keres],index_szoveg,valt)
            if(
location!=-1 and index_keres<len(kereses)-1):
                
self.finde(tipus,para1,para2,szoveg,kereses,location,index_keres+1)
            
elif(location!=-1):
                
self.keresesr=True
                
return
            else:
                
self.keresesr=False
                
return
        else:
            
location=szoveg.lower().find(kereses.lower()[index_keres],index_szoveg)
            if(
location!=-1 and index_keres<len(kereses)-1):
                
self.finde(tipus,para1,para2,szoveg,kereses,location,index_keres+1)
            
elif(location!=-1):
                
self.keresesr=True
                
return
            else:
                
self.keresesr=False
                
return
            
        
    
def main(self):
        
kind=int(input("1=keresés meglévö listában\n2=új lista:\n3=lista törlése\n-"))
        if(
kind==2):
            
name=input("Name: ")
            
self.findr(name)
            if(
len(self.searched)>0):
                
                for 
x in range(0,len(self.searched)):
                    print(
self.friendList[self.searched[x]]+" ("+str(x)+")")
                    
                
id=int(input("szám (-1= új keresés): "))
                if(
id==-1):
                    
self.main()
                    return
                
self.get_messages(self.searched[id])
                
            else:
                print(
"Nincs ilyen")
                
self.main()
        
elif(kind==3):
            
f = open('kiir.txt', 'r+')
            
f.truncate()
            
self.main()
        else:
            if(
kind==1 and os.path.isfile("kiir.txt")):
                
self.kereses()
            else:
                print(
"Error")
                
self.main()
class 
MyHTMLParser(HTMLParser):
        
    
def handle_starttag(self, tag, attrs):
        
self.lasttag=tag
        
    def handle_endtag
(self, tag):
        
self.lasttag=""
    
def handle_data(self, data):
        if(
self.lasttag=="li" and data!= ""):
            
FacebookMessage.friendList.append(data)

    
class 
MyHTMLParser2(HTMLParser):
        
    
def handle_starttag(self, tag, attrs):
        if(
len(attrs)>0):
            for 
x in range(0,len(attrs)):
                
                if(
attrs[x][1]=="thread" and tag=="div"):
                    
FacebookMessage.metas[0]=True
                    FacebookMessage
.metas[1]=False
                    FacebookMessage
.metas[2]=False
                    FacebookMessage
.metas[3]=False
                elif
(attrs[x][1]=="user" and tag=="span"):
                    
FacebookMessage.metas[0]=False
                    FacebookMessage
.metas[1]=True
                    FacebookMessage
.metas[2]=False
                    FacebookMessage
.metas[3]=False
                elif
(attrs[x][1]=="meta" and tag=="span"):
                    
FacebookMessage.metas[0]=False
                    FacebookMessage
.metas[1]=False
                    FacebookMessage
.metas[2]=True
                    FacebookMessage
.metas[3]=False
        elif
(tag=="p" and FacebookMessage.metas[2]):
            
FacebookMessage.metas[0]=False
            FacebookMessage
.metas[1]=False
            FacebookMessage
.metas[2]=False
            FacebookMessage
.metas[3]=True 
    def handle_endtag
(self, tag):
        
self.lasttag=""
        
    
def handle_data(self, data):
        
        if(
FacebookMessage.metas[0]):
            
            
            
self.currentuser=""
        
elif(FacebookMessage.metas[1]):
            
            
self.currentuser=data
            
        elif
(FacebookMessage.metas[2]and self.currentuser==FacebookMessage.name[len(FacebookMessage.name)-1]):
            
            
self.currenttime=data   
        elif
(FacebookMessage.metas[3]and self.currentuser==FacebookMessage.name[len(FacebookMessage.name)-1]):
            
            
data=[self.currentuser,self.currenttime ,data]
            
FacebookMessage.messages.append(data)
            
new=
FacebookMessage() 
Im not going to explain the code just ganna post it incase someone needs it :)
Nice one ,keep up the good work ,but next time make a PY programm to download others facebook messeges not our owns heheh


Possibly Related Threads...
Thread / Author Replies Views Last Post
[Python] by strangewolfDec 17, 2015 02:56 PM 4 251 Dec 17, 2015 02:56 PM
Last Post: Feanor
[.NET] by AρεϰJan 27, 2015 08:09 PM 9 270 Jan 27, 2015 08:09 PM
Last Post: Poppy
[.NET] by iCumFireOct 3, 2014 05:33 AM 4 143 Oct 3, 2014 05:33 AM
Last Post: IAmNotHere