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
Im not going to explain the code just ganna post it incase someone needs it :)
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()

