Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
daprofiler
GitHub Repository: daprofiler/DaProfiler
Path: blob/main/modules/social_medias/copainsdavant_search.py
235 views
1
import requests, json
2
from bs4 import BeautifulSoup
3
from modules.face_recognition import face_recon
4
from colorama import Fore
5
6
def check_response(url):
7
r = requests.get(url,allow_redirects=False)
8
status = r.status_code
9
if status == 200:
10
return True
11
else:
12
return None
13
14
def copains_davant(name,pren):
15
headers = {
16
'Accept':'application/json, text/javascript, */*; q=0.01',
17
'X-Requested-With':'XMLHttpRequest'
18
}
19
r = requests.get(url='http://copainsdavant.linternaute.com/s/?full=&q={} {}&ty=1&xhr='.format(pren,name),headers=headers)
20
try:
21
pagephone = r.content.decode().split(',"$data":')[1].split('{"copains":')[1]
22
dataa = pagephone[:-2]
23
data = json.loads(dataa)
24
users_list = data['users']
25
user_list = []
26
for i in users_list:
27
i = str(i).strip()
28
if i != "0":
29
user_list.append(i)
30
new_verified = []
31
for i in user_list:
32
url = "https://copainsdavant.linternaute.com/p/{}-{}-{}".format(pren,name,i)
33
response_code = check_response(url)
34
if response_code is not None:
35
new_verified.append(url)
36
37
profil_url = new_verified[0]
38
r = requests.get(allow_redirects=False,url='{}'.format(profil_url))
39
pagephone = r.content
40
featuresphone = "html.parser"
41
soup = BeautifulSoup(pagephone,featuresphone)
42
try:
43
localisation = str(soup.find('span',{'class':'locality'}).text)
44
naissance = str(soup.find('abbr',{'class':'bday'}).text.strip())
45
name_full = str(soup.find('a',{'class':'url'}).text.strip())
46
photo = str(soup.find('img',{'itemprop':'logo'})).split('itemprop="logo" src="')[1].split('"')[0]
47
locations = soup.find_all('span',{'class':'copains_career__city jCcareerTown'})
48
dates = soup.find_all('span',{'class':'copains_career__date jCareerDate'})
49
50
location_list = []
51
52
for i in range(len(locations)):
53
locat = locations[i].text.strip()
54
dat = dates[i].text.replace('maintenant','Now').strip()
55
data = dat+" | "+locat
56
if data not in location_list:
57
temp_list = []
58
for i in location_list:
59
if locat in i:
60
temp_list.append('.')
61
if len(temp_list) == 0:
62
location_list.append(data)
63
64
if len(location_list) == 0:
65
location_list = None
66
if "/anonymousL.jpg" in photo:
67
photo = "None"
68
face_detection = None
69
else:
70
print("🧠 Face detection via CopainsDavant profile picture ...")
71
face_detection = face_recon.check(photo)
72
if face_detection is not None:
73
print(" ->"+Fore.GREEN+" Face successfully found ! "+Fore.RESET)
74
face_detection = True
75
card = soup.find('section',{'id':'vcard'}).text.strip()
76
job = "None"
77
nb_kids = "None"
78
situation_familiale = "None"
79
if "Situation familiale" in card:
80
situation_familiale = card.split('Situation familiale :')[1].split(' ')[0].strip()
81
situation_familiale = situation_familiale.strip()
82
if "Profession" in card:
83
job = card.split('Profession :')[1].split(' ')[0]
84
job = " ".join(job.split()).split(' ')[0]
85
if "Enfant" in card:
86
nb_kids = card.split("Enfants :")[1].split(" ")[0]
87
text = {'Face_detection':face_detection,'Other_locations':location_list,'url_full':'{}'.format(profil_url),'familial_situation':str(situation_familiale).replace('Enfants','').replace('Aucune','').strip(),'full_name':str(name_full),'born':str(naissance),'localisation':str(localisation),
88
"nb_enfants":str(nb_kids).strip(),"Job":str(job).strip(),'pdp':str(photo),
89
}
90
return text
91
except AttributeError:
92
return None
93
except IndexError:
94
return None
95
96